Thử nghiệm mật độ UI được xây dựng bằng Svelte
(cybernetic.dev)- Grid là một thử nghiệm để người dùng tự điều chỉnh mật độ UI, và hiện đang được phát triển phiên bản mới
- Matrix, mang tính kế thừa, hiển thị ma trận tương quan của S&P 500 và NASDAQ-100 với mục tiêu đạt mật độ UI cao hơn
- Khi chọn các mã thành phần của S&P500, hệ thống xử lý tương quan của hơn 250.000 ô và hơn 30 triệu điểm dữ liệu
- Một số tính năng không có trong bản xem trước bên dưới; để đánh giá đầy đủ, cần mở UI toàn màn hình của Matrix
- Tài liệu trên trang web chỉ nhằm mục đích cung cấp thông tin và không được xem là lời khuyên đầu tư hay khuyến nghị mua/bán chứng khoán
Thử nghiệm mật độ UI từ Grid đến Matrix
- Grid là một dự án thử nghiệm mật độ UI có thể tùy chỉnh, và hiện đang được phát triển phiên bản mới
- Matrix là một thử nghiệm đẩy mật độ UI lên cao hơn nữa, cung cấp ma trận tương quan quy mô lớn của S&P 500 và NASDAQ-100
- Có thể xem một phần Matrix trong bản xem trước bên dưới, nhưng một số tính năng chỉ có trong UI toàn màn hình của Matrix
Quy mô dữ liệu mà Matrix xử lý
- Khi chọn các mã thành phần của S&P500 làm tập dữ liệu, hệ thống bao gồm hơn 250.000 ô
- Tính toán tương quan của hơn 30.000.000 điểm dữ liệu
- Có thể xem thêm thông tin tại trang About của thử nghiệm Matrix
- Trang home cung cấp cái nhìn tổng quan về tất cả các thử nghiệm trực quan hóa dữ liệu hiện có
Các yếu tố điều khiển có thể kiểm tra trong bản xem trước
- Mục chọn Dataset có S&P500 và NASDAQ100
- Horizon cho phép chọn 1M và 1Y
- Có hộp chọn Detrend Data như một tùy chọn tiền xử lý dữ liệu
- Các tùy chọn liên quan đến sắp xếp như sau
- Sort By: Cluster, AvgCorr, MedCorr, Name
- Cluster Method: Avg, Complete, Ward
- Sort Direction: Asc, Desc
- UI bản xem trước bao gồm Minimap, Search, Rolling Correlation Chart, hướng dẫn hover và click trên ô
- Ở trạng thái hiển thị, các chỉ số được ghi là Symbols 101, Correlations 5,050, Cells 10,201
Những điểm cần lưu ý khi sử dụng
- Tài liệu trên trang web chỉ nhằm mục đích cung cấp thông tin và không phải là lời khuyên đầu tư hay khuyến nghị mua/bán chứng khoán
1 bình luận
Các ý kiến trên Hacker News
Gần đây tôi đang thử nghiệm giữa sắp xếp và hiển thị. Nếu một issue lấy từ Jira đang bị chặn, tôi đang cân nhắc liệu có cần một cột boolean riêng để sắp xếp/lọc hay không, hay chỉ cần áp dụng style cho một cột khác (ví dụ: thời gian đã trôi qua) là đủ. Tôi đang xem liệu trong một bảng hơn 100 hàng, chỉ bằng giá trị màu cam, đỏ, hoặc đỏ đậm trong một ô có thể nhận ra mục nào cần xử lý ngay hay không
Điều tôi thích ở chế độ xem bảng trong thử nghiệm này là cập nhật theo thời gian thực, sắp xếp ổn định trên nhiều cột, làm nổi bật hàng khi rê chuột, làm mờ các số 0 phía sau, màu sắc không quá tay (về cơ bản khoảng ba cặp màu), và các biểu đồ kiểu sparkline ở cột 24H Low/High. Điểm tiếc là thanh cuộn ngang gần như không thấy, thanh cuộn dọc rộng có gắn biểu đồ, không rõ 24H Low/High thực sự được sắp xếp như thế nào, và không có lọc. Ngoài ra, so với các báo cáo của tôi, cũng thấy rằng độ lệch về chiều rộng giá trị không lớn. Khi có lẫn văn bản thay vì chủ yếu là số, việc quản lý chiều rộng cột khó hơn
Helix cảm thấy khó đọc và không hữu ích. Kiểu biểu đồ này hợp hơn với dữ liệu có tính chu kỳ, trong đó chu kỳ ngắn hơn rất nhiều so với toàn bộ phạm vi dữ liệu
Khối lập phương thì khơi gợi tò mò, nhưng tôi không thấy rõ ưu điểm. Thường thì trực quan hóa 3D kém hiệu quả hơn việc thể hiện cùng nội dung bằng ba biểu đồ 2D (ở đây là 3 biểu đồ phân tán). Vì khi chiếu từ 3D xuống 2D sẽ sinh ra méo mó, và trực giác cơ bản của con người về so sánh vị trí cũng bị nhiễu. Tôi tò mò hiệu ứng được chủ ý ở đây là gì
Cách vừa nhìn về quá khứ một cách tự nhiên nhất có thể, vừa làm dữ liệu gần đây hiện lớn hơn, thật sự thiên tài. Khó tin là sao trước đây tôi chưa nghĩ ra điều này
Kể từ "Material Design" mà Google về cơ bản đã chôn vùi, sự phình to, khoảng trắng, giãn cách quá mức và kiểu “thoáng khí” đã lãng phí quá nhiều
Mơ thì vẫn được mà
Các công ty không muốn thiết kế hai UI rất khác nhau cho từng nền tảng, và nói chung người dùng muốn cách sử dụng đã học trên một nền tảng cũng tiếp tục áp dụng được trên nền tảng khác
Khả năng tiếp cận cũng dễ hơn khi thiết kế có chỗ cho phông chữ lớn và không đòi hỏi điều khiển vận động tinh vi. Nhìn cha tôi già đi thấy rõ, tôi nhận ra rằng ngay cả những ứng dụng mà mình cảm thấy rộng rãi cũng vẫn chưa đủ theo góc nhìn này
Chừng nào những lực đẩy ban đầu đưa chúng ta theo hướng đó chưa thay đổi, tôi không rõ làm sao có thể quay lại thiết kế mật độ thông tin cao
Những màn hình này dùng phông chữ monospace một cỡ duy nhất. Nó mang phong cách hoài cổ như UI chế độ văn bản thập niên 1980, và nếu đó là ràng buộc có chủ ý thì không sao
Nhưng nếu có thể đặt hệ phân cấp đúng đắn cho kiểu chữ và kích thước, có thể đưa nhiều thông tin hơn rất nhiều lên màn hình
Ví dụ cơ bản, hộp “About” hiện chiếm gần 1/4 màn hình điện thoại. Nếu đổi sang phông chữ proportional nhỏ hơn, vẫn có thể đọc được trên điện thoại mà đưa thông tin này vào một nửa diện tích
Nếu xem tác phẩm của các nhà thiết kế thông tin xuất sắc như Edward Tufte, họ thường ám ảnh với việc căn chỉnh typography cho đúng. Sách của ông cũng dùng nhiều yếu tố typography và thang kích cỡ khác nhau cho phần văn bản ngoài trực quan hóa
Tôi tò mò trọng tâm là hiệu năng, trực quan hóa, hay mật độ liên quan đến thứ khác
Chắc chắn có cảm giác chịu nhiều ảnh hưởng
Nỗ lực tạo một UI tương tự bằng React phần lớn đã thất bại vì hiệu năng không tốt. Với bảng dữ liệu, tôi đã hoàn toàn đi vòng qua React để có được hiệu năng render chấp nhận được. Dù vậy, để bản thân việc render của trình duyệt không chậm đến mức không thể chịu nổi, vẫn phải giảm tối đa số phần tử DOM trên mỗi hàng
WinForms có lẽ vẫn là UI framework tôi thích nhất. Rõ ràng là một công cụ thô kệch, nhưng có thể vung vẩy tùy ý. Cực kỳ linh hoạt, khá dễ dùng, khá nhanh, và xấu kinh khủng
Ném một Object bất kỳ vào là nó cứ hoạt động. Có thể lồng PropertyGrid bên trong PropertyGrid, mở rộng bằng các collection đối tượng, và lồng các control sâu đến mức tùy thích. Không cần đụng vào hay bận tâm đến cấu trúc bên trong của đối tượng mà UI được nối tới (dù có giới hạn)
Với tôi, WinForms là hình mẫu lý tưởng kiểu Plato của một UI framework. Nếu tôi tự thiết kế thì có lẽ cũng sẽ làm đúng như vậy
Tôi thật sự thích mật độ thông tin
Tôi sưu tầm báo cũ, và thời đó mật độ thông tin cao hơn nhiều. Nếu đang tìm một cuốn sách đặt bàn cà phê hay, hãy thử tìm "nytimes complete front pages". Phía trên nếp gấp có thật sự rất nhiều thông tin cốt lõi
Tôi cho rằng mật độ thông tin cao cũng giống như trí thông minh cao. Sắp xếp đúng thứ tự ưu tiên là việc rất có giá trị và quan trọng
Trong vài năm qua, web dường như đã đi theo hướng ngược lại, nên thật vui khi vẫn thấy có người chèo về phía bên kia
Một ví dụ khác: blog của tôi được thiết kế để có thể xem khoảng 20 năm bài viết cùng lúc thông qua phóng to/thu nhỏ (https://breckyunits.com/)
Tôi cũng sắp công bố một dự án nhằm quảng bá và giúp việc tạo các cheat sheet có mật độ thông tin cao trở nên dễ hơn. Tôi định chốt tên là Leet Sheet (https://pldb.io/blog/leetSheets.html)
Điều này thú vị vì nó chứng minh điều gì đó về thị giác và khả năng hiểu bằng thị giác của tôi
Chế độ xem "Grid" thì hoàn toàn ổn. Chế độ xem "Table" thì không dùng được
Tôi hay bị mất dấu mình đang ở dòng nào khi quét ngang các dòng dài như thế này. Tôi nhận ra nguyên nhân là khi ánh mắt di chuyển, mắt phải có xu hướng hơi chiếm ưu thế hơn. Hai mắt của tôi căn chỉnh hơi lệch nên phải dùng hiệu chỉnh lăng kính, và thay đổi hiệu chỉnh lăng kính gần đây đã cải thiện tình trạng này
Trong cách biểu diễn này, vị trí của các đường đánh dấu ở cột low/high làm cho việc vô tình nhảy hàng (luôn nhảy lên trên) tệ hơn
Với tôi, có lẽ sẽ tốt hơn nếu biểu đồ đường là nền của ô hoặc nằm ở phía dưới ô. Các hàng cũng cần có sọc nhẹ
Bài học rút ra từ góc nhìn của một người đọc nhanh, thành thạo và không có khiếm khuyết thị giác hay nhận thức là: đừng giả định rằng cứ đặt thông tin trải dài ngang qua các dòng rộng trong những bảng như thế này là ổn. Cần cung cấp cho người dùng manh mối để bám theo hàng khi họ quét ngang. Chỉ các đường phân cách mảnh là không đủ, còn đổi nền khi hover chuột thì không dùng được trên thiết bị cảm ứng
Với trạng thái hiện tại, khi gặp những thứ như thế này, tôi thường bỏ tối đa hóa cửa sổ và giảm chiều cao cửa sổ để vừa cuộn vừa dùng mép dưới của cửa sổ hoặc thanh tiêu đề của cửa sổ khác làm “cạnh” nhất quán để xem dữ liệu. Khi dùng iPad, tôi cũng từng dùng giấy hoặc thẻ
Thứ nhất, như đã nói, độ tương phản giữa hàng được hover/nhấn mạnh và hàng không được nhấn mạnh quá thấp. Ngay cả tôi có thị lực ổn cũng thấy khó nhìn
Thứ hai, để dễ đọc, các hàng hoặc cột của bảng nên được kẻ sọc bằng hai hoặc nhiều màu có độ tương phản cao. Ví dụ trắng, đen, trắng, đen. Bảng này từ đầu đến cuối toàn màu đen
Thứ ba, độ tương phản của viền bảng quá thấp nên gần như không thấy được. Kết hợp với việc chỉ dùng một màu cho hàng/cột, nó càng làm giảm khả năng đọc
Tóm lại, bản thân bảng thì ổn, màu sắc thì tệ
Các phần tử UI ở đây trông rất tuyệt, nhưng tôi cũng tò mò thử nghiệm là gì và rút ra kết luận nào
Nếu chỉ xét số lượng phần tử tương tác thuần túy, theo kinh nghiệm của tôi (Svelte 4), render thường gây vấn đề trước tương tác. Nói cách khác, bạn gặp vấn đề hiệu năng ở cùng số lượng phần tử bất kể chúng có tương tác hay không. Như đã triển khai ở một số phần của trang này, giải pháp là chuyển sang canvas
Svelte cũng có thể vẽ lên canvas. Ngoài ra còn có Threlte: https://threlte.xyz/
Về hiệu năng bên trong Svelte, tôi không nghĩ nó cần thứ như Jotai nhiều như React để tránh render lại không cần thiết
Kết hợp Svelte với một framework WebGL xuất sắc như Phaser có thể cho phép render đồ họa cực nhanh: https://phaser.io/news/2024/03/official-phaser-3-and-svelte-...
Biểu đồ helix kia thật sự rất cuốn hút. Không rõ có thể dùng trong thực tế hay không, nhưng nhìn thì cực kỳ ấn tượng
Nếu đây là một thử nghiệm thì kết luận là gì?