HocThuatSo.comHọc Thuật Số
Gửi thư
Trực quan hoá dữ liệu khoa học

Màu cho người mù màu: bảng màu an toàn và kiểm tra trước khi nộp

Chọn màu biểu đồ đọc được với người mù màu và khi in đen trắng: viridis, ColorBrewer, bảng Okabe–Ito, mô phỏng mù màu bằng phần mềm, và nguyên tắc không mã hoá thông tin chỉ bằng màu.

Màu cho người mù màu: bảng màu an toàn và kiểm tra trước khi nộp

Để biểu đồ đọc được với người mù màu, dùng bảng màu đã được thiết kế an toàn như viridis, cividis, các bảng ColorBrewer có đánh dấu an toàn hay bảng Okabe–Ito, kiểm hình bằng công cụ mô phỏng mù màu, và không để màu là cách duy nhất phân biệt các nhóm: thêm hình dạng điểm, kiểu đường hoặc nhãn trực tiếp.

Mù màu, chính xác hơn là thiếu hụt khả năng phân biệt màu, phổ biến ở nam giới hơn hẳn nữ giới, và dạng hay gặp nhất là khó phân biệt đỏ với xanh lá. Trong một hội đồng hay một nhóm phản biện, khả năng có ít nhất một người như vậy là đáng kể. Cặp màu đỏ – xanh lá mặc định của nhiều phần mềm chính là cặp họ khó đọc nhất.

Chọn loại bảng màu theo kiểu dữ liệu

Bước đầu tiên là xác định dữ liệu thuộc kiểu nào, vì mỗi kiểu cần một loại bảng màu khác nhau:

Kiểu dữ liệuLoại bảng màuVí dụ an toànVí dụ dữ liệu
Nhóm không thứ tựĐịnh tính (qualitative)Okabe–Ito; bảng định tính ColorBrewer có đánh dấu an toànTỉnh, loại trường, phương pháp
Giá trị tăng dầnTuần tự (sequential)viridis, cividis; bảng tuần tự một sắc của ColorBrewerMật độ, tỷ lệ, nồng độ
Giá trị lệch hai phía quanh một mốcPhân kỳ (diverging)Bảng phân kỳ ColorBrewer có đánh dấu an toànTương quan từ −1 đến 1, chênh lệch so với trung bình
Hai nhóm cần đối lậpCặp màu tương phản độ sángXanh dương đậm và camCan thiệp và đối chứng

Bảng định tính an toàn hiếm khi có quá khoảng tám màu dễ phân biệt. Nếu cần nhiều nhóm hơn, đó là dấu hiệu nên gộp nhóm, tách khung, hoặc dán nhãn trực tiếp thay vì dựa vào chú giải màu.

Ba họ bảng màu nên biết

viridis và họ hàng

viridis là bảng tuần tự từ tím sẫm qua xanh tới vàng, được thiết kế để độ sáng tăng đều, đọc được với các dạng mù màu phổ biến và vẫn giữ thứ tự khi in đen trắng. Nó là bảng màu liên tục mặc định của matplotlib từ bản 2.0. Cùng họ có magma, inferno, plasma, và cividis được tối ưu thêm cho người khó phân biệt đỏ – xanh lá. Trong ggplot2: scale_colour_viridis_d() cho nhóm, scale_fill_viridis_c() cho giá trị liên tục; trong R cơ bản: hcl.colors(5, 'viridis').

ColorBrewer

Bộ bảng màu do Cynthia Brewer phát triển ban đầu cho bản đồ chuyên đề, chia rõ ba loại tuần tự, phân kỳ, định tính. Trang ColorBrewer có bộ lọc chỉ hiện bảng an toàn cho người mù màu, thân thiện khi in, hoặc khi photo. Trong ggplot2: scale_fill_brewer() cho nhóm, scale_fill_distiller() cho giá trị liên tục; trong matplotlib, nhiều bảng ColorBrewer có sẵn dưới tên như 'Blues', 'RdBu'.

Okabe–Ito

Bảng tám màu định tính do Masataka Okabe và Kei Ito đề xuất, gồm đen, cam, xanh da trời, xanh lục lam, vàng, xanh dương, đỏ son và tím hồng, được nhiều tạp chí và hướng dẫn trình bày khuyên dùng cho các nhóm không thứ tự. Từ R 4.0 có sẵn: palette.colors(palette = 'Okabe-Ito') trả về các mã màu, dùng trong ggplot2 qua scale_colour_manual(values = ...). Trong matplotlib, có thể khai danh sách mã màu vào axes.prop_cycle; bản 3.10 còn thêm kiểu petroff10 với chu trình màu được thiết kế cho khả năng tiếp cận.

Vì sao bảng màu cầu vồng hay bị khuyên tránh?

Bảng cầu vồng, với tên quen như jet hay rainbow, đi qua đỏ, vàng, xanh lá, xanh dương. Độ sáng của nó không tăng đều: dải vàng và xanh lục lam sáng vọt lên, tạo ra những đường ranh giới giả mà dữ liệu không có, và che bớt các thay đổi ở vùng tối. Người khó phân biệt đỏ – xanh lá không thấy được đoạn chuyển quan trọng ở giữa. In đen trắng, hai đầu bảng có độ xám gần nhau nên mất luôn thứ tự.

Nếu lĩnh vực của bạn quen dùng cầu vồng, thử vẽ cùng dữ liệu bằng viridis đặt cạnh nhau; khác biệt thường thấy ngay. Khi cần giữ cầu vồng vì lý do quy ước, ít nhất ghi vạch chia rõ trên thanh màu và kiểm bằng mô phỏng.

Kiểm hình bằng mô phỏng mù màu và bản đen trắng

Kiểm ở bản cuối, đúng kích thước sẽ nộp:

  1. Mô phỏng bằng phần mềm trên máy: Color Oracle là ứng dụng miễn phí, phủ bộ lọc mô phỏng các dạng mù màu lên toàn màn hình, xem được bất kỳ hình nào đang mở.
  2. Mô phỏng ngay trong mã: gói colorspace của R có deutan(), protan(), tritan() biến đổi một vectơ màu thành màu mà người thuộc dạng tương ứng nhìn thấy; trong Python, thư viện colorspacious có hàm mô phỏng tương tự.
  3. Chuyển hình sang thang xám: mở bằng phần mềm xem ảnh và chọn chế độ xám, hoặc trong Python dùng Pillow: Image.open('hinh.png').convert('L').save('hinh-xam.png'). Các nhóm phải còn phân biệt được bằng độ sáng.
  4. Hỏi một người chưa xem dữ liệu đọc hình mô phỏng và hình xám, xem họ có ghép đúng nhóm với chú giải không.

Thiết lập màu một lần cho cả bài

Một nhóm nên mang cùng một màu ở mọi hình trong bài: nếu “nhóm can thiệp” là xanh dương ở hình 1 thì cũng là xanh dương ở hình 4. Phần mềm mặc định gán màu theo thứ tự nhóm xuất hiện trong từng hình, nên khi một hình thiếu một nhóm, màu của các nhóm còn lại bị dịch đi. Người đọc thấy màu quen, ghép nhầm nhóm.

Cách tránh: khai một bảng tra màu theo tên nhóm và dùng ở mọi hình. Trong R: mau <- c('Can thiệp' = '#0072B2', 'Đối chứng' = '#E69F00') rồi scale_colour_manual(values = mau); ggplot2 ghép màu theo tên nên thứ tự không còn quan trọng. Trong Python, giữ một từ điển mau = {'Can thiệp': '#0072B2', 'Đối chứng': '#E69F00'} và truyền color=mau[ten] khi vẽ từng nhóm, hoặc tham số palette=mau nếu dùng seaborn.

Bản nhiệt và bảng màu phân kỳ

Ma trận tương quan, bảng chênh lệch so với trung bình, hệ số dương và âm đều cần bảng màu phân kỳ: một màu trung tính ở giữa, hai màu tương phản ở hai đầu. Lỗi phổ biến là để phần mềm tự đặt điểm giữa theo trung bình dữ liệu, nên màu trung tính không còn đúng ở 0. Trong ggplot2, scale_fill_gradient2(midpoint = 0) hoặc scale_fill_distiller(palette = 'RdBu', limits = c(-1, 1)) giữ hai đầu đối xứng. Trong matplotlib, truyền norm=CenteredNorm() hoặc TwoSlopeNorm(vcenter=0) từ matplotlib.colors.

Với bản nhiệt có ít ô, ghi giá trị số vào từng ô. Người đọc không cần dịch màu ra số, và hình vẫn đọc được khi in xám hay khi người xem khó phân biệt màu. Chọn màu chữ đen hoặc trắng theo độ sáng của ô để chữ không chìm.

Đừng để màu là kênh duy nhất

Màu là một kênh tốt nhưng không bao giờ nên là kênh duy nhất mang thông tin. Kết hợp thêm:

  • Hình dạng điểm khác nhau cho từng nhóm (tròn, tam giác, vuông), trong ggplot2 là aes(shape = nhom).
  • Kiểu đường khác nhau (liền, gạch, chấm) cho các chuỗi thời gian, aes(linetype = nhom).
  • Nhãn đặt trực tiếp cạnh đường hoặc cột thay vì chú giải ở góc hình; người đọc không phải dò màu qua lại.
  • Tách khung theo nhóm (facet_wrap() hoặc nhiều trục con) khi các nhóm chồng lên nhau quá nhiều.
  • Trong văn bản và chú thích hình, gọi nhóm bằng tên, không gọi bằng màu: viết “nhóm can thiệp” chứ không viết “đường màu đỏ”.

Lỗi hay gặp trước khi nộp

  • Dùng cặp đỏ – xanh lá cho hai nhóm chính của bài.
  • Bảng màu tuần tự cho dữ liệu không thứ tự, khiến người đọc tưởng các nhóm có thứ bậc.
  • Bảng phân kỳ mà điểm giữa không đặt đúng mốc có ý nghĩa (0, trung bình), làm một nửa thang trông như “âm”.
  • Hình màu đẹp trên màn hình nhưng tạp chí in đen trắng, hoặc người đọc in bản PDF bằng máy in đen trắng.
  • Việc KHÔNG cần làm: tự pha bảng màu mới. Các bảng có sẵn đã được thiết kế và kiểm kỹ hơn nhiều so với thử bằng mắt.

Câu hỏi thường gặp

Bảng viridis có in đen trắng được không?

Được. viridis được thiết kế để độ sáng tăng đều từ đầu tới cuối, nên khi chuyển sang xám vẫn giữ thứ tự từ tối tới sáng. Kiểm lại bằng cách chuyển hình sang thang xám trước khi nộp.

Tạp chí có yêu cầu màu an toàn cho người mù màu không?

Nhiều hướng dẫn tác giả và chính sách khả năng tiếp cận của các nhà xuất bản khuyến khích, một số yêu cầu tránh cặp đỏ – xanh lá. Đọc mục hình trong hướng dẫn tác giả của tạp chí bạn nộp.

Hình ảnh hiển vi huỳnh quang dùng đỏ và xanh lá thì làm sao?

Nhiều tác giả đổi sang cặp magenta và xanh lá, hoặc trình bày từng kênh riêng ở thang xám bên cạnh hình ghép. Kiểm hướng dẫn của tạp chí về việc chỉnh màu ảnh hiển vi để không vi phạm quy định xử lý ảnh.

Làm sao chọn màu cho chỉ hai nhóm?

Chọn hai màu khác nhau cả về sắc lẫn độ sáng, ví dụ xanh dương đậm và cam trong bảng Okabe–Ito. Thêm hình dạng điểm hoặc kiểu đường khác nhau để in đen trắng vẫn phân biệt được.

Có cần đổi màu hình cũ đã đăng không?

Không cần sửa bài đã đăng. Với bài mới và luận văn đang viết, áp dụng ngay từ hình đầu tiên, và lưu thiết lập màu thành chủ đề hoặc tệp cấu hình dùng chung.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

🧭
Bạn đang ở chặng nào của đường học vị?
Nhập chỗ bạn đang đứng và đích bạn nhắm — công cụ trả về số năm, chi phí và việc phải làm từng chặng.
Xem lộ trình của tôi →
Miễn phí, không cần tài khoản. Xem tất cả công cụ

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
[email protected]