Hai biểu đồ cột giống hệt nhau: nhóm A và nhóm B cùng trung bình 50, cùng thanh sai số. Khi vẽ lại bằng điểm dữ liệu, nhóm A là 30 người rải đều từ 35 đến 65; nhóm B gồm hai cụm rõ rệt, một cụm quanh 30 và một cụm quanh 70, gần như không ai ở giữa. Câu chuyện của nhóm B hoàn toàn khác, và biểu đồ cột đã giấu nó đi.
Từ nhiều năm nay, các hướng dẫn về trình bày dữ liệu đã khuyến cáo hạn chế biểu đồ cột có râu (thường gọi đùa là “biểu đồ thuốc nổ”) cho dữ liệu liên tục, nhất là với mẫu nhỏ. Bộ tứ Anscombe, bốn bộ dữ liệu có trung bình, phương sai, tương quan và đường hồi quy gần như giống hệt nhau nhưng hình dạng hoàn toàn khác, là minh hoạ kinh điển cho lý do phải nhìn dữ liệu.
Chọn biểu đồ theo câu hỏi, không theo thói quen
| Câu hỏi | Biểu đồ phù hợp | Nên tránh |
|---|---|---|
| So sánh biến liên tục giữa vài nhóm | Biểu đồ điểm có trung bình và khoảng tin cậy, biểu đồ hộp kèm điểm, biểu đồ violin | Cột có râu với mẫu nhỏ |
| Phân phối của một biến | Histogram, biểu đồ mật độ | Chỉ báo trung bình |
| Liên hệ giữa hai biến liên tục | Biểu đồ tán xạ, thêm đường xu hướng nếu cần | Nối các điểm bằng đường |
| Thay đổi theo thời gian | Biểu đồ đường, có thể thêm vùng khoảng tin cậy | Cột cho chuỗi thời gian dài |
| Tỷ lệ các thành phần | Cột ngang sắp xếp theo độ lớn | Biểu đồ tròn nhiều lát, biểu đồ 3D |
| Nhiều ước lượng hệ số | Biểu đồ rừng (forest plot) | Bảng dài chỉ có dấu sao |
Biểu đồ cột vẫn rất tốt cho số đếm và tỷ lệ, nơi độ dài cột chính là đại lượng cần so sánh. Vấn đề chỉ nằm ở việc dùng cột để tóm tắt dữ liệu liên tục.
Cho người đọc thấy điểm dữ liệu
Với mẫu dưới vài trăm quan sát mỗi nhóm, hãy hiển thị từng điểm. Khi điểm chồng lên nhau, dùng kỹ thuật rải ngang ngẫu nhiên (jitter) hoặc xếp điểm theo hình tổ ong (beeswarm). Với mẫu lớn hơn, biểu đồ violin hoặc biểu đồ “mưa mây” (raincloud: kết hợp mật độ, hộp và điểm) giữ được hình dạng phân phối. Với dữ liệu ghép cặp, nối hai điểm của cùng một người bằng đường mảnh: người đọc thấy ngay bao nhiêu người tăng, bao nhiêu người giảm, điều mà hai cột trung bình không bao giờ cho thấy.
Thanh sai số: luôn nói nó là gì
Thanh sai số có thể là độ lệch chuẩn, sai số chuẩn hoặc khoảng tin cậy 95%, và ba thứ này dài ngắn rất khác nhau. Với 25 người mỗi nhóm, SE chỉ bằng một phần năm SD. Một biểu đồ không ghi rõ loại thanh sai số là biểu đồ không đọc được. Quy tắc:
- Muốn cho thấy độ phân tán của cá thể: SD, hoặc tốt hơn là chính các điểm dữ liệu.
- Muốn cho thấy độ chính xác của ước lượng: khoảng tin cậy 95%.
- SE ít khi là lựa chọn tốt nhất: nó làm thanh ngắn lại mà không dễ diễn giải.
- Ghi rõ trong chú thích hình, kèm cỡ mẫu từng nhóm.
Trục, tỷ lệ và những cách làm người đọc hiểu sai
- Biểu đồ cột phải bắt đầu từ 0, vì người đọc so sánh độ dài. Cắt trục ở 90 làm chênh lệch 92 và 95 trông như chênh nhau hơn hai lần.
- Biểu đồ điểm và đường không bắt buộc bắt đầu từ 0; chọn khoảng giúp thấy rõ biến thiên có ý nghĩa.
- Tránh hai trục tung với hai thang đo khác nhau: tác giả có thể chỉnh tỷ lệ để hai đường trông như song hành hoặc cắt nhau tuỳ ý.
- Dùng thang log cho dữ liệu trải nhiều bậc độ lớn hoặc cho tỷ số (OR, RR) trên biểu đồ rừng, và ghi rõ trên trục.
- Giữ cùng thang đo giữa các ô trong biểu đồ nhiều ô (small multiples), trừ khi có lý do và đã ghi chú.
Màu sắc: dễ đọc cho mọi người, kể cả khi in đen trắng
Một tỷ lệ đáng kể nam giới có rối loạn nhận biết màu, phổ biến nhất là khó phân biệt đỏ và xanh lá. Cặp đỏ xanh lá mặc định trong nhiều phần mềm vì thế là lựa chọn tệ. Dùng bảng màu được thiết kế cho người mù màu (như viridis, hoặc bảng màu Okabe-Ito), kết hợp màu với hình dạng điểm hoặc kiểu đường, và thử in hình ra thang xám để kiểm tra. Đừng dùng màu chỉ để trang trí: mỗi màu nên mang một ý nghĩa.
Chuẩn bị hình cho tạp chí
- Xuất hình dạng véc-tơ (PDF, EPS, SVG) cho biểu đồ nếu tạp chí chấp nhận; ảnh chụp và ảnh hiển vi dùng định dạng điểm ảnh với độ phân giải theo hướng dẫn tác giả.
- Vẽ ở đúng kích thước in (một cột hoặc hai cột) để cỡ chữ sau khi thu nhỏ vẫn đọc được.
- Dùng cùng phông chữ và cỡ chữ cho mọi hình trong bài.
- Chú thích hình phải đứng độc lập được: nói rõ hình trình bày gì, cỡ mẫu, thanh sai số là gì, và ký hiệu viết tắt.
- Không chỉnh sửa ảnh theo cách làm thay đổi dữ liệu. Các tạp chí có chính sách xử lý ảnh; điều chỉnh độ sáng phải áp dụng cho toàn ảnh và được mô tả.
Áp dụng: công cụ và danh sách kiểm
Trong R, ggplot2 với các lớp geom_jitter, geom_boxplot, geom_violin cho phần lớn nhu cầu. Trong Python, matplotlib và seaborn (stripplot, swarmplot, violinplot). Ưu điểm lớn nhất của vẽ hình bằng mã so với kéo thả là tái tạo được: khi dữ liệu cập nhật, chạy lại mã là có hình mới đúng.
- Biểu đồ trả lời đúng câu hỏi của đoạn văn đi kèm.
- Dữ liệu liên tục với mẫu nhỏ được hiển thị bằng điểm, không chỉ cột.
- Thanh sai số được ghi rõ loại và có cỡ mẫu.
- Trục có nhãn, có đơn vị; biểu đồ cột bắt đầu từ 0.
- Màu phân biệt được với người mù màu và khi in đen trắng.
- Chữ đọc được ở kích thước in.
- Chú thích hình đứng độc lập.
Việc nên làm: lấy biểu đồ cột có râu quan trọng nhất trong bản thảo của bạn, vẽ lại bằng biểu đồ điểm kèm trung bình và khoảng tin cậy. Nếu hình mới kể một câu chuyện khác, đó chính là điều phản biện sẽ phát hiện, và tốt hơn là bạn phát hiện trước.
Câu hỏi thường gặp
Vì sao không nên dùng biểu đồ cột có thanh sai số cho dữ liệu liên tục?
Vì nó chỉ cho thấy trung bình và một con số phân tán, che mất hình dạng phân phối, giá trị bất thường và cụm dữ liệu. Với mẫu nhỏ, biểu đồ điểm kèm trung bình và khoảng tin cậy trung thực hơn.
Thanh sai số nên là SD, SE hay khoảng tin cậy?
Dùng SD hoặc điểm dữ liệu để thể hiện độ phân tán, dùng khoảng tin cậy 95% để thể hiện độ chính xác của ước lượng. Luôn ghi rõ loại trong chú thích hình.
Trục tung có bắt buộc bắt đầu từ 0 không?
Với biểu đồ cột thì có, vì người đọc so sánh độ dài cột. Với biểu đồ điểm và đường thì không bắt buộc, miễn là trục được ghi nhãn rõ ràng.
Chọn màu biểu đồ thế nào cho người mù màu?
Tránh cặp đỏ và xanh lá, dùng bảng màu như viridis hoặc Okabe-Ito, kết hợp màu với hình dạng điểm hay kiểu đường, và thử in thang xám.
Vẽ biểu đồ khoa học bằng công cụ gì?
R với ggplot2 và Python với matplotlib, seaborn là phổ biến nhất. Vẽ bằng mã giúp tái tạo hình chính xác khi dữ liệu thay đổi.