Trực quan hoá 2 — Nhận thức thị giác & mã hoá
Vì sao cần hiểu bộ não trước khi vẽ
Ở bài tổng quan ta nói trực quan hoá là "biến số thành hình để hiểu nhanh hơn". Nhưng nhanh hơn nhờ đâu? Nhờ hệ thị giác của con người là một cỗ máy xử lý song song cực mạnh — nó nhận ra mẫu hình (pattern), khác biệt, cụm nhóm trong vài phần trăm giây, trước cả khi ta kịp suy nghĩ. Một biểu đồ tốt là biểu đồ khai thác đúng khả năng đó; một biểu đồ tồi bắt não phải "giải mã" cực nhọc rồi vẫn đọc sai.
Điểm mấu chốt của bài này: thiết kế biểu đồ không phải chuyện thẩm mỹ, mà là chuyện tâm lý học tri giác (perceptual psychology). Có những quy luật khoa học — đo được, lặp lại được — về việc mắt người giải mã kênh hình ảnh nào chính xác, kênh nào kém. Hiểu chúng, bạn sẽ chọn được loại biểu đồ đúng ngay từ đầu (bài 3) thay vì đoán mò, và tránh những biểu đồ "đẹp mà gây hiểu lầm" (bài 7).
Ba trụ cột của bài:
- Preattentive attributes — các thuộc tính tiền chú ý, nhận ra tức thì.
- Nguyên lý Gestalt — cách não tự động nhóm các phần tử.
- Visual encoding & thang chính xác giải mã — kênh nào truyền số chính xác nhất.
1. Preattentive attributes — thấy trước khi nghĩ
Preattentive processing là quá trình thị giác diễn ra trước và không cần sự chú ý có ý thức, thường trong dưới 250 mili-giây — nhanh hơn một cái chớp mắt. Một số thuộc tính hình ảnh được não bắt "song song" trên toàn khung nhìn cùng lúc, không phải quét từng điểm.
Ví dụ kinh điển: trong một khối chữ số, hãy đếm số chữ số 9.
Khối A (mọi số cùng màu): Khối B (số 9 in đậm màu):
1 8 4 7 2 5 9 3 6 1 0 4 1 8 4 7 2 5 [9] 3 6 1 0 4
5 9 2 8 1 6 3 7 4 9 2 5 5 [9] 2 8 1 6 3 7 4 [9] 2 5
Ở khối A bạn phải quét tuần tự (serial search) — chậm, tốn công. Ở khối B các số 9 "nhảy ra" ngay lập tức nhờ màu + độ đậm. Đó chính là sức mạnh preattentive: nó biến việc tìm kiếm thành việc nhìn thấy.
Các thuộc tính tiền chú ý chính
| Nhóm | Thuộc tính | Ứng dụng điển hình |
|---|---|---|
| Màu | Hue (tông màu), intensity (độ đậm/nhạt) | Highlight 1 cột KPI vượt ngưỡng bằng màu đỏ |
| Hình thể | Size (kích thước), orientation (hướng nghiêng), shape (hình dạng), length (độ dài), width | Cột cao hơn = giá trị lớn hơn |
| Vị trí | Spatial position (toạ độ 2D), grouping (cụm) | Điểm nằm cao/phải trên scatter plot |
| Chuyển động | Flicker, motion | Cảnh báo nhấp nháy (dùng cực hạn chế) |
Nguyên tắc thực hành:
- Mỗi biểu đồ chỉ nên có một "điểm nhảy ra". Nếu tô đậm mọi thứ thì không gì nổi bật cả — đây là lỗi phổ biến nhất của dashboard ngân hàng: 12 số KPI đều màu mè, mắt không biết nhìn đâu.
- Dùng màu để hướng sự chú ý, không để trang trí. Xám hoá phần nền, chỉ tô màu phần cần nói (chi tiết ở bài 4 — màu sắc).
- Preattentive không cộng dồn tốt. Kết hợp 2 thuộc tính (màu + hình) để tạo cụm con thì được, nhưng dùng 4-5 kênh cùng lúc thì hệ thị giác "quá tải" và mất tính tức thời.
2. Nguyên lý Gestalt — não nhóm phần tử ra sao
Gestalt (tiếng Đức: "hình thể toàn thể") là một trường phái tâm lý học đầu thế kỷ 20, đúc kết rằng não người có xu hướng tổ chức các phần tử rời rạc thành một tổng thể có ý nghĩa — "tổng thể lớn hơn tổng các phần". Với người làm dashboard, đây là bộ quy tắc bố cục cực kỳ thực dụng: nó dự đoán người dùng sẽ nhìn thấy nhóm nào dù bạn không vẽ khung.
Sáu nguyên lý quan trọng nhất:
- Proximity (gần nhau): các phần tử đặt gần nhau được coi là một nhóm. → Đặt 3 KPI liên quan (dư nợ, nợ xấu, tỷ lệ NPL) sát nhau; chừa khoảng trắng lớn để tách khỏi nhóm khác. Khoảng trắng (whitespace) là công cụ nhóm mạnh nhất và rẻ nhất.
- Similarity (tương tự): phần tử giống nhau (cùng màu/hình/kích thước) được coi cùng loại. → Tất cả đường "thực tế" màu xanh, tất cả đường "kế hoạch" nét đứt xám — dù nằm trên nhiều biểu đồ khác nhau.
- Enclosure (bao quanh): phần tử nằm chung trong một đường viền/nền được coi là một nhóm — mạnh hơn cả proximity. → Đóng khung một vùng scatter để đánh dấu "nhóm khách hàng rủi ro cao".
- Connection (kết nối): phần tử được nối bằng đường line thì gắn kết mạnh nhất trong các nguyên lý. → Đây là lý do line chart truyền tải "chuỗi thời gian liên tục" tốt hơn cột rời.
- Continuity (liên tục): mắt thích đi theo đường mượt, không gãy khúc. → Trục và lưới thẳng hàng giúp mắt lướt; điểm lệch trục làm rối.
- Closure (khép kín): não tự "lấp" hình còn thiếu để thành hình quen thuộc. → Nhờ closure ta không cần vẽ đủ 4 cạnh khung; hai đường trục đủ để mắt hiểu vùng biểu đồ.
Ứng dụng bố cục dashboard
Một dashboard rối không phải vì thiếu dữ liệu mà vì nhóm hình thị giác không khớp nhóm ý nghĩa. Ví dụ bố cục báo cáo tín dụng chi nhánh, dùng proximity + enclosure + similarity:
Người xem lập tức thấy "ba khối chức năng" nhờ enclosure, các KPI cùng khối gần nhau (proximity), và màu nền phân biệt loại (similarity) — trước khi họ đọc bất kỳ con số nào.
3. Visual encoding & thang chính xác giải mã
Đây là phần khoa học nhất và có giá trị thực chiến cao nhất. Visual encoding là việc ánh xạ một biến dữ liệu vào một kênh hình ảnh (visual channel): giá trị doanh số → độ dài cột, vùng miền → màu, thời gian → vị trí trục X...
Câu hỏi then chốt: cùng một con số, mã hoá bằng kênh nào thì người đọc giải mã lại chính xác nhất?
Thí nghiệm Cleveland–McGill
Năm 1984, hai nhà thống kê William Cleveland và Robert McGill làm thí nghiệm cho người xem ước lượng tỉ lệ giữa các phần tử mã hoá bằng các kênh khác nhau, rồi đo sai số. Jock Mackinlay (1986) mở rộng và xếp hạng cho từng loại dữ liệu. Kết quả — được ngành công nhận rộng rãi — là một thang bậc chính xác giải mã:
Càng lên đầu thang, mắt ước lượng càng chính xác; càng xuống dưới, sai số càng lớn. Đây không phải ý kiến — nó đo bằng thực nghiệm.
Vì sao bar chính xác hơn pie hơn bubble
Áp thang trên vào ba biểu đồ thể hiện cùng một bộ tỉ trọng:
| Biểu đồ | Kênh mã hoá | Bậc thang | Độ chính xác |
|---|---|---|---|
| Bar chart | Length trên trục chung (position) | Bậc 1–3 | Cao nhất |
| Pie chart | Angle (góc quạt) | Bậc 4 | Trung bình |
| Bubble chart | Area (diện tích tròn) | Bậc 5 | Thấp |
- Bar chart để các cột cùng chân trên một trục ⇒ mắt so vị trí đầu cột trên trục chung — kênh chính xác nhất. So sánh 41% với 39% trên bar là dễ.
- Pie chart buộc mắt so góc — kênh bậc 4. So sánh hai lát 41% và 39% gần như bất khả; tệ hơn khi có >5 lát. Đây là lý do giới visualization khuyên hạn chế pie.
- Bubble chart mã hoá bằng diện tích — bậc 5. Còn một cái bẫy chết người: nhiều công cụ vẽ bubble bằng đường kính thay vì diện tích. Khi đó giá trị gấp đôi trông to gấp bốn lần (vì diện tích ∝ bán kính²) → phóng đại nghiêm trọng.
Quy tắc bỏ túi: cần so sánh giá trị chính xác → dùng length/position (bar, dot, line). Chỉ dùng angle/area khi thông điệp là "phần rất lớn vs phần rất nhỏ", không cần đọc số chính xác.
Chọn kênh theo LOẠI dữ liệu
Thang trên áp cho dữ liệu định lượng (quantitative). Nhưng với loại dữ liệu khác, thứ tự "kênh tốt nhất" đổi khác — đây là đóng góp của Mackinlay:
| Loại dữ liệu | Bản chất | Kênh mã hoá tốt (giảm dần) | Kênh nên tránh |
|---|---|---|---|
| Quantitative (định lượng) | có thứ tự + khoảng cách đo được (số tiền, %) | Position → Length → Angle → Area → Color | Shape, hue |
| Ordinal (thứ bậc) | có thứ tự, khoảng cách không rõ (nhóm nợ 1–5, mức rủi ro thấp/vừa/cao) | Position → Density/Saturation (đậm dần) → Size | Hue rời rạc |
| Nominal (định danh) | chỉ phân loại, không thứ tự (loại tiền tệ, chi nhánh) | Position → Color hue → Shape | Length, size (gợi ý sai về "lượng") |
Sai lầm hay gặp: dùng hue (các màu khác nhau) để biểu diễn dữ liệu có thứ tự như nhóm nợ. Xanh–vàng–đỏ tình cờ có nghĩa văn hoá "tốt→xấu" nên tạm ổn, nhưng đỏ–tím–lục thì mắt không suy ra được thứ tự. Với ordinal, hãy dùng một tông màu đậm dần (sequential) thay vì nhiều hue.
4. Data-ink ratio & chartjunk (Tufte)
Edward Tufte, trong The Visual Display of Quantitative Information (1983), đưa ra hai khái niệm đã thành kinh điển:
- Data-ink ratio = (mực dùng để hiển thị dữ liệu) / (tổng mực của biểu đồ). Tufte đề nghị: tối đa hoá tỉ lệ này — mỗi giọt mực nên mang thông tin. Trong giới hạn hợp lý, hãy xoá mọi mực không mang dữ liệu.
- Chartjunk = mọi yếu tố trang trí không truyền tải dữ liệu: hiệu ứng 3D, gradient, bóng đổ, hoạ tiết nền, viền lưới đậm, biểu tượng thừa. Chúng không những vô ích mà còn gây nhiễu và đôi khi bóp méo.
Danh sách "mực thừa" nên cắt trên một biểu đồ ngân hàng điển hình:
- Bỏ hiệu ứng 3D trên bar/pie (3D làm sai lệch tỉ lệ diện tích/góc — vi phạm thẳng mục 3).
- Bỏ gridline đậm; nếu cần thì để lưới xám nhạt, mảnh.
- Bỏ border box quanh mọi thứ (closure đã làm việc đó rồi).
- Bỏ màu nền gradient, logo to, icon trang trí.
- Ghi nhãn số trực tiếp lên cột thay vì bắt mắt đối chiếu qua trục + legend (giảm "eye travel").
Lưu ý cân bằng: data-ink ratio là kim chỉ nam, không phải tôn giáo. Cắt tới mức trơ trụi khó đọc cũng là lỗi — vài gridline mờ giúp định vị giá trị, một đường tham chiếu (ngưỡng, mục tiêu) là "mực" rất đáng giá. Nguyên tắc: xoá cái không giúp hiểu, giữ cái giúp hiểu.
Lie factor — hé lộ cho bài 7
Tufte còn định nghĩa lie factor = (mức thay đổi thể hiện trên hình) / (mức thay đổi thật trong dữ liệu). Biểu đồ trung thực có lie factor ≈ 1. Ví dụ cắt trục Y không từ 0 làm một khác biệt 2% "trông như" 200% — lie factor rất cao. Chủ đề méo mó và đạo đức trực quan hoá sẽ nói kỹ ở bài 7; nó cũng liên quan trực tiếp tới các cạm bẫy thống kê.
Bối cảnh ngân hàng: vì sao vài biểu đồ bị đọc sai
Ba lỗi tri giác thường gặp trong báo cáo BI ngân hàng và gốc rễ khoa học của chúng:
- Pie chart cơ cấu dư nợ 8 ngành. Tám lát gần bằng nhau → mắt không xếp hạng nổi (kênh angle, bậc 4). Sếp hỏi "ngành nào lớn thứ ba?" và không ai đọc ra từ hình. → Thay bằng bar chart ngang xếp hạng (position/length).
- Bubble map chi nhánh theo số dư. Bán kính ∝ số dư → chi nhánh gấp đôi trông to gấp bốn, phóng đại chênh lệch (area, bậc 5, còn dính bẫy đường kính). → Nếu buộc dùng bubble, mã hoá bằng diện tích và thêm nhãn số.
- Heatmap nhóm nợ tô bằng hue cầu vồng. Nhóm nợ là ordinal (1→5 xấu dần) nhưng tô đỏ–lục–lam ngẫu nhiên → mắt không suy ra thứ tự. → Dùng sequential một tông đậm dần theo mức xấu.
Điểm chung: cả ba đều chọn sai kênh cho loại dữ liệu, hoặc dùng kênh nằm thấp trên thang chính xác cho việc cần đọc số chính xác.
Use case thực tế
Tình huống: Phòng Phân tích rủi ro NCB có một dashboard "Cơ cấu & chất lượng dư nợ" mà ban lãnh đạo phàn nàn "nhìn màu mè nhưng không rút ra được gì". Ta cải tổ theo đúng nguyên lý bài này.
Hiện trạng (đo được):
- 1 pie chart 9 ngành kinh tế → không ai xếp hạng được ngành lớn thứ 3–4.
- 1 bubble map 25 chi nhánh, bán kính = dư nợ → chi nhánh Hà Nội "khổng lồ", các chi nhánh nhỏ chỉ là chấm.
- Bảng 15 KPI, mọi số tô đậm nhiều màu → không có điểm nhấn.
- Nền gradient xanh + bar 3D + gridline đen.
Các bước cải tổ:
- Pie → bar ngang xếp hạng (chuyển từ angle bậc 4 sang position/length bậc 1). Sếp hỏi "ngành thứ 3" — đọc ra trong 1 giây.
- Bubble map → bar ngang top 25 chi nhánh; nếu cần bản đồ thì mã hoá màu sequential theo tỷ lệ NPL (ordinal → density) thay vì bán kính dư nợ.
- Highlight preattentive: xám hoá 25 chi nhánh, chỉ tô đỏ 3 chi nhánh có NPL vượt ngưỡng 3%. Một "điểm nhảy ra" duy nhất.
- Gestalt: gom KPI thành 3 khối (Quy mô / Chất lượng / Hiệu quả) bằng enclosure + proximity, chừa whitespace giữa các khối.
- Data-ink: bỏ 3D, bỏ gradient, gridline chuyển xám nhạt, ghi nhãn số trên cột. Thêm 1 đường tham chiếu ngưỡng NPL 3% (mực đáng giá).
Kết quả (định tính): thời gian để một lãnh đạo trả lời "chi nhánh nào rủi ro nhất" giảm từ "phải hỏi analyst" xuống "tự thấy ngay". Số biểu đồ giảm nhưng lượng câu hỏi trả lời được tăng — vì mỗi hình giờ dùng đúng kênh cho đúng loại dữ liệu.
Minh hoạ một truy vấn chuẩn bị dữ liệu cho bar chart xếp hạng (thay cho pie), trên sandbox:
-- ▶ Chạy được
SELECT c.city AS nganh_khu_vuc,
COUNT(a.id) AS so_tai_khoan,
SUM(a.balance) AS tong_so_du
FROM accounts a
JOIN customers c ON c.id = a.customer_id
GROUP BY c.city
ORDER BY tong_so_du DESC;
Kết quả đã ORDER BY ... DESC để nạp thẳng vào bar chart ngang xếp hạng — mắt so vị trí đầu cột trên trục chung, chính xác hơn hẳn khi đổ cùng dữ liệu vào pie.
Ghi nhớ
- Thiết kế biểu đồ là tâm lý học tri giác, không phải thẩm mỹ. Có quy luật đo được về việc mắt giải mã kênh nào chính xác.
- Preattentive attributes (màu/hue, size, orientation, position, độ đậm) được não bắt trong <250ms. Dùng để hướng chú ý — chỉ nên có một điểm nhảy ra mỗi biểu đồ; xám hoá phần nền.
- Gestalt giải thích cách não nhóm phần tử: proximity, similarity, enclosure, connection, continuity, closure. Whitespace là công cụ nhóm mạnh và rẻ nhất; nhóm hình phải khớp nhóm ý nghĩa.
- Thang chính xác giải mã (Cleveland–McGill / Mackinlay): position (trục chung) > length > angle/slope > area > color/hue. Vì thế bar (length/position) chính xác hơn pie (angle) hơn bubble (area).
- Cẩn thận bubble theo đường kính: giá trị gấp đôi trông to gấp bốn (area ∝ bán kính²).
- Chọn kênh theo loại dữ liệu: quantitative → position/length; ordinal → density/saturation đậm dần; nominal → hue. Đừng dùng hue rời cho dữ liệu thứ bậc.
- Data-ink ratio (Tufte): tối đa hoá mực mang dữ liệu, cắt chartjunk (3D, gradient, bóng, gridline đậm) — nhưng đừng cắt tới mức khó đọc.
- Lie factor ≈ 1 là biểu đồ trung thực; méo mó & đạo đức trực quan hoá xem bài 7.
Bài viết liên quan
Phân biệt ước lượng điểm và ước lượng khoảng, cách xây khoảng tin cậy (CI) bằng margin of error z*·SE / t*·SE, đánh đổi mức 90/95/99%, và cách DIỄN GIẢI ĐÚNG khoảng tin cậy (95% CI không phải xác suất tham số nằm trong khoảng). Có CI cho trung bình và cho tỷ lệ, ảnh hưởng của cỡ mẫu, cùng ví dụ ngân hàng về tỷ lệ nợ xấu và số dư trung bình.
Kimball dimensional modeling: bảng fact/dimension, star vs snowflake, grain, và Slowly Changing Dimension.
Bản chất BI: biến dữ liệu thô thành quyết định; phân biệt báo cáo, phân tích, BI, Data Science; vai trò BI trong ngân hàng.
Chọn biểu đồ đúng cho từng loại dữ liệu, nguyên tắc thiết kế dashboard, và kể chuyện bằng dữ liệu.