Hàng loạt các màu sắc tốt nhất để sử dụng để phân biệt các loạt trong các lô chất lượng xuất bản


89

Đã có nghiên cứu nào được thực hiện về tập hợp màu sắc tốt nhất để sử dụng để hiển thị nhiều chuỗi trên cùng một cốt truyện chưa? Tôi vừa mới sử dụng các giá trị mặc định matplotlibvà chúng trông hơi trẻ con vì tất cả đều là màu sáng, chính.


28
Điều này không trả lời câu hỏi của bạn, nhưng tôi nghĩ điều quan trọng là phải đề cập đến. Bất cứ khi nào có thể, bất kỳ bảng màu nào được chọn nên được bổ sung bằng các ký hiệu hoặc kiểu đường kẻ khác nhau sao cho khi cốt truyện được in bằng màu đen và trắng thì vẫn dễ hiểu. Quá thường xuyên các tác giả chỉ dựa vào màu sắc, làm cho các số liệu trở nên vô dụng đối với người mù màu và những người thích đọc phiên bản in đen trắng của bài báo của bạn. Các ô nên luôn luôn, nếu có thể, hoạt động với màu đen và trắng và hoạt động "tốt hơn" về màu sắc.
WetlabStudent

11
+1 cho MHH. Một đoạn bình luận huyền thoại trên truyền hình về bi-da cũng đưa ra quan điểm tương tự: "Steve sẽ chơi bóng hồng - và đối với những người đang xem màu đen và trắng, màu hồng nằm cạnh màu xanh lá cây." Giải thích cho độc giả nhỏ tuổi: Điều đó xuất phát từ thời điểm một số người có thể mua tivi màu nhưng những người khác phải mua tivi đen trắng rẻ hơn.
Nick Cox

5
"Tốt nhất" cho mục đích gì? Đây không phải là một câu hỏi tầm thường hoặc thiếu sót. Để gây ấn tượng với độc giả của một diễn đàn internet, tôi sử dụng các biểu tượng đồ họa hoạt động mà không có màu sắc và sau đó trang trí chúng bằng màu sắc cầu vồng (có thể có ý nghĩa nhưng chủ yếu là để thu hút sự chú ý và mang lại cảm giác "chất lượng"). Đối với lô được thiết kế để truyền dữ liệu, một màu sắc có thể được lựa chọn, trong khi đối với lô được tạo ra một cách thăm dò để lộ khả năng mô hình bất ngờ (trong một thị giác Gestalt ) chương trình này nên phụ thuộc vào mục đích: sự khác biệt, tập hợp, lựa chọn, khác?
whuber

2
@whuber: Bạn ghi điểm. Tôi nên đã xác định rằng tôi có nghĩa là để xuất bản trong tài liệu khoa học, và nói chung tôi có nghĩa là yêu cầu câu trả lời cho từng loại tổng hợp, lựa chọn, phân biệt, v.v. Thật vậy, tổng hợp và phân biệt thường không phải là mục tiêu riêng biệt: trong các hình từ một trong những giấy tờ của tôi ( dx.doi.org/10.1063/1.4864755 ), tôi cần cả hai (và tôi không nghĩ rằng mình đã làm rất tốt công việc đó). (Xin lỗi những người không ở trong các cơ sở học thuật; tôi sẽ cố gắng sớm đưa ra một liên kết công khai chung)
David Hollman

Câu trả lời:


53

Một tài liệu tham khảo phổ biến để chọn bảng màu là công việc của Cynthia Brewer trên ColorBrewer . Các màu được chọn dựa trên các mẫu cảm nhận trong bản đồ choropleth, nhưng hầu hết các lời khuyên tương tự đều áp dụng cho việc sử dụng màu trong bất kỳ loại âm mưu nào để phân biệt các mẫu dữ liệu. Nếu màu sắc chỉ để phân biệt giữa các dòng khác nhau, thì một bảng màu định tính theo thứ tự.

Thường thì màu sắc không cần thiết trong các ô chỉ có một vài dòng và các ký hiệu điểm và / hoặc mẫu gạch ngang khác nhau là đủ hiệu quả. Một vấn đề phổ biến hơn với các ô dòng là nếu các dòng thường xuyên trùng nhau sẽ khó phân biệt các mẫu khác nhau cho dù bạn sử dụng ký hiệu hay màu nào. Stephen Kosslyn đề xuất một quy tắc chung cho việc chỉ có 4 dòng trong một cốt truyện. Nếu bạn có nhiều cân nhắc hơn, hãy chia các dòng thành một chuỗi nhiều ô nhỏ. Dưới đây là một ví dụ cho thấy khuyến nghị

Không có màu cần thiết và các nhãn là quá đủ.


4
Tôi yêu bảng màu "Dark2" từ ColorBrewer!
Gimelist

5
Cảm ơn lời giới thiệu của ColorBrewer! Đó là thứ tôi đang tìm kiếm.
David Hollman

Hình ảnh thang độ xám không hoạt động nếu có hai loạt có cùng giá trị ở giữa một nơi nào đó (hai chuỗi không thể được truy ngược lại qua điểm đó) hoặc ở cuối (các nhãn sẽ không thể phân biệt được loạt là cái nào). Thật tuyệt vời khi nó hoạt động mặc dù ...
ness101

Đồng ý @ naught101 cho giữa (trùng hợp kết thúc chỉ cần đặt nhãn ở đâu đó trước khi kết thúc). Đó là một lý do để thực sự không sử dụng phép nội suy tuyến tính giữa các điểm, mà sử dụng một số loại spline. Trong trường hợp đó, spline sẽ cong theo các hướng khác nhau. Điều đó xảy ra khá nhiều trong các lô phối hợp song song dày đặc. (Jittering cũng có thể giúp với dữ liệu có nhiều mối quan hệ, như dữ liệu số nguyên thấp.)
Andy W

1
Đánh giá của bạn về dữ liệu viz. sách trên Amazon là không thể tin được. Cảm ơn vì điều đó.
Andy W

40

Rất nhiều lời khuyên tốt trong các câu trả lời khác, nhưng đây là một số điểm bổ sung từ lời khuyên cấp thấp của riêng tôi cho sinh viên. Tất cả chỉ là lời khuyên, được suy nghĩ về những câu hỏi chính: Biểu đồ của tôi dự định làm gì? Điều gì có ý nghĩa với những dữ liệu này? Độc giả là ai? Những gì tôi đang mong đợi (các) màu sẽ làm trong biểu đồ? Đồ thị có hoạt động tốt không, bất kể tín điều của người khác?

Hơn nữa, tầm quan trọng của màu sắc thay đổi rất lớn từ biểu đồ này sang biểu đồ khác. Đối với bản đồ choropleth hoặc bản vá, trong đó ý tưởng thực sự là các khu vực khác nhau được tô màu hoặc ít nhất được tô bóng khác nhau, sự thành công của biểu đồ gắn liền với sự thành công của bảng màu của nó. Đối với các loại biểu đồ khác, màu sắc có thể bị phân tán hoặc thậm chí gây phiền toái.

  1. Là màu sắc của bạn tất cả cần thiết? Ví dụ: nếu các biến hoặc nhóm khác nhau được phân biệt rõ ràng bằng nhãn văn bản trong các vùng khác nhau của biểu đồ, thì các màu riêng biệt cũng thường là quá mức cần thiết. Hãy coi chừng salad trái cây hoặc hiệu ứng dreamcoat hiệu ứng. Đối với biểu đồ hình tròn có nhãn văn bản trên hoặc bằng các lát, màu sắc sẽ không có thêm thông tin. (Nếu biểu đồ hình tròn của bạn phụ thuộc vào khóa hoặc chú giải, có khả năng bạn đang thử loại biểu đồ sai.)

  2. Không bao giờ dựa vào sự tương phản giữa màu đỏ và màu xanh lá cây, vì rất nhiều người đấu tranh để phân biệt các màu này.

  3. Các chuỗi cầu vồng (ROYGBIV hoặc đỏ-cam-vàng-lục-lam-chàm-tím) có thể hấp dẫn trên cơ sở vật lý, nhưng chúng không hoạt động tốt trong thực tế. Ví dụ, màu vàng thường là màu yếu trong khi màu cam và màu xanh lá cây thường mạnh hơn, do đó, ấn tượng thậm chí không phải là một chuỗi đơn điệu.

  4. Tránh bất kỳ bảng màu nào có hậu quả của các mảng lớn màu mạnh.

  5. Một chuỗi từ đỏ đậm đến xanh đậm hoạt động tốt khi cần một chuỗi theo thứ tự. Nếu màu trắng là (như thường lệ), màu nền ở bất cứ đâu, đừng sử dụng nó, mà bỏ qua màu đỏ nhạt đến xanh nhạt. [đã thêm vào ngày 1 tháng 3 năm 2018] Có lẽ quá rõ ràng để gạch chân: màu đỏ có ý nghĩa tiêu cực và / hoặc nguy hiểm cho nhiều người, điều này có thể hữu ích, và màu xanh sau đó có thể có nghĩa là tích cực. Quá rõ ràng để gạch chân, nhưng tôi làm theo bất kỳ cách nào: Đỏ và xanh có ý nghĩa chính trị ở nhiều quốc gia.

  6. Màu xanh và màu cam kết hợp tốt với nhau (một cái gật đầu biết ơn với Hastie, Tibshirani và Friedman tại đây: http://web.stanford.edu/~hastie/local.ftp/Springer/OLD/ESLII_print4.pdf ) [thêm ngày 1 tháng 3 năm 2018] sách giới thiệu về trực quan hóa hiện nay đề xuất màu cam, xanh dương và xám như một bảng màu cơ bản: cam và / hoặc xanh dương cho những gì bạn quan tâm và màu xám cho phông nền.

  7. Thang độ xám từ xám nhạt đến xám đen có thể hoạt động tốt và là một ý tưởng tốt khi không thể tái tạo màu sắc. (Đó là một máy in tệ hại không thể tạo ra một cú đánh công bằng ở thang độ xám.) (Màu xám nếu bạn thích; tùy chọn thay đổi trên các đại dương, có vẻ như, giống như với màu sắc và màu sắc.)

  8. [thêm ngày 5 tháng 8 năm 2016] Một nguyên tắc khá chung là thường hai màu hoạt động tốt hơn nhiều màu. Nếu hai nhóm đều quan tâm, thì hãy chọn các màu mạnh như nhau (ví dụ: đỏ hoặc cam và xanh). Nếu một nhóm được nhiều người quan tâm, hãy làm cho nó có màu xanh hoặc màu cam và để các nhóm khác có màu xám. Về nguyên tắc, sử dụng bảy màu cho bảy nhóm mang thông tin, nhưng thật khó để tập trung vào một màu tại một thời điểm khi có sự cạnh tranh từ một số nhóm khác. Bội số nhỏ có thể tốt hơn cho một số nhóm so với âm mưu nhiều màu.


1
Điểm rất tốt về màu sắc yếu và mạnh
Shadowtalker

2
Điểm 2 là RẤT quan trọng. Một trong những giáo viên thống kê của tôi bị mù màu và vui vẻ sử dụng "màu vàng nhạt" và "màu vàng nhạt" trong biểu đồ. Màu sắc gần như giống hệt chúng ta, nhưng đối với anh ta, chúng rất dễ bị biến dạng.
Christian Sauer

1
Cảm ơn những lời khuyên, đặc biệt là # 2. Tôi nhìn lại âm mưu của mình và nhận ra rằng màu đỏ và màu xanh lá cây là hai màu đầu tiên mà matplotlib luôn chọn. Điều đó không tuyệt lắm.
David Hollman

Điều đó có vẻ như một mặc định dopey.
Nick Cox

27

Thực sự đã có rất nhiều nghiên cứu về điều này trong những năm gần đây.

Một điểm lớn là "cộng hưởng ngữ nghĩa." Về cơ bản, điều này có nghĩa là "màu sắc tương ứng với những gì họ đại diện", ví dụ: chuỗi thời gian cho tiền nên được tô màu xanh lá cây, ít nhất là cho khán giả ở Hoa Kỳ. Điều này rõ ràng cải thiện sự hiểu biết. Một bài viết rất thú vị về chủ đề này là của Lin, et al (2013): http://vis.stanford.edu/ con / emantant-resonant-colors

Ngoài ra còn có trình tạo màu iWantHue rất đẹp, tại http://tools.medialab.scatics-po.fr/iwanthue/ , với rất nhiều thông tin trong các tab khác.

Người giới thiệu

Lin, Sharon, Julie Fortuna, Chinmay Kulkarni, Maureen Stone và Jeffrey Heer. (2013). Chọn màu sắc cộng hưởng ngữ nghĩa cho trực quan hóa dữ liệu. Diễn đàn đồ họa máy tính (Proc. EuroVis), 2013


13
+1 ... tuy nhiên, một số điều - chẳng hạn như ví dụ về tiền của bạn - không phổ biến. Tiền có thể có màu xanh (-ish) ở Mỹ. Nó không có màu xanh ở mọi nơi và sự liên kết với màu sắc có thể khác nhau giữa các quốc gia (ví dụ như ai đó ở Đức có thể liên kết màu xanh với tiền nhiều hơn, mặc dù ngày nay nó có xu hướng có nhiều màu sắc khác nhau).
Glen_b

@Glen_b điểm tốt
Shadowtalker

1
+1 để trích dẫn các bài báo, trong đó giải quyết tốt nhất ba từ đầu tiên của câu hỏi :-)
David Hollman

22

Paul Tol cung cấp một bảng màu được tối ưu hóa cho sự khác biệt về màu sắc (nghĩa là dữ liệu phân loại hoặc định tính) và tầm nhìn mù màu trên trang web của anh ấy và chi tiết trong một "Technote" (tệp PDF) được liên kết ở đó. Ông nói:

Để làm cho đồ họa với kết quả khoa học của bạn rõ ràng nhất có thể, thật tiện lợi khi có một bảng màu gồm:

  • khác biệt cho tất cả mọi người, bao gồm cả độc giả mù màu;
  • khác biệt với màu đen và trắng;
  • khác biệt trên màn hình và giấy; và
  • vẫn hợp nhau.

Tôi lấy bảng màu từ "Bảng 1" của anh ấy trong số 9 màu khác biệt nhất và đặt nó vào matplotlibrctập tin của tôi dưới axes.color_cycleđây:

axes.color_cycle    : 332288, 88CCEE, 44AA99, 117733, 999933, DDCC77, CC6677, 882255, AA4499

Sau đó, mượn từ Joe Kington trả lời các dòng mặc định như được vẽ bởi:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(1,10):
    axes[0].plot(x, i * (x - 10)**2)

for i in range(1,10):
    axes[1].plot(x, i * np.cos(x))

plt.show()

kết quả trong:

nhập mô tả hình ảnh ở đây

Để phân kỳ bản đồ màu (ví dụ: để biểu thị các giá trị vô hướng), tài liệu tham khảo tốt nhất tôi đã thấy là bài báo của Kenneth Moreland có sẵn ở đây "Phân phối bản đồ màu cho trực quan khoa học ". Ông đã phát triển lược đồ ấm áp để thay thế lược đồ cầu vồng và "trình bày một thuật toán cho phép người dùng dễ dàng tạo các bản đồ màu tùy chỉnh của riêng họ".

Một nguồn hữu ích khác cho thông tin về việc sử dụng màu sắc trong hình ảnh khoa học đến từ Robert Simmon, người đã tạo ra hình ảnh "Blue Marble" cho NASA. Xem loạt bài viết của ông tại trang web của Đài quan sát Trái đất.


6
+1 cho câu trả lời duy nhất (!) Trong số chín câu thực sự hiển thị màu sắc để trả lời cho câu hỏi về "màu sắc tốt nhất".
amip

@amoeba: cũng không còn nữa :-)
Tung

20

Trên colorbrewer2.org, bạn có thể tìm thấy các bảng màu định tính , tuần tựphân kỳ . Định tính tối đa hóa sự khác biệt giữa các màu liên tiếp và đó là những gì tôi đang sử dụng trong gnuplot. Vẻ đẹp của trang web là bạn có thể dễ dàng sao chép mã thập lục phân của các màu để chúng dễ dàng nhập. Ví dụ, tôi đang sử dụng bộ 8 màu sau:

#e41a1c
#377eb8
#4daf4a
#984ea3
#ff7f00
#ffff33
#a65628
#f781bf

Nó khá dễ chịu và tạo ra kết quả rõ ràng.

Là một mặt lưu ý, tuần tự được sử dụng khi bạn cần một gradient mịn và phân kỳ khi nào bạn cần để làm nổi bật sự khác biệt từ một giá trị trung ương (ví dụ như độ cao núi và chiều sâu nước biển). Bạn có thể đọc thêm về các phối màu này ở đây .


1
Cá nhân tôi không thấy màu vàng sáng là màu cốt truyện rõ ràng
rhombidodecahedron

11

Có rất nhiều trang web dành riêng cho việc lựa chọn bảng màu. Tôi không biết rằng có một nhóm màu đặc biệt khách quan nhất, bạn sẽ phải chọn dựa trên đối tượng và tông màu của tác phẩm.

Hãy xem http://www.colourlovers.com/palettes hoặc http://design-seeds.com/index.php/search để bắt đầu. Một số trong số chúng có các màu gần nhau để hiển thị các nhóm khác nhau, nhưng một số khác sẽ cung cấp cho bạn các màu bổ sung trên phạm vi rộng hơn.

Bạn cũng có thể kiểm tra các bộ màu được xác định trước không mặc định trong Matplotlib .


5

Tôi thích bảng màu Dark2 từ colorbrewer cho các ô phân tán. Chúng tôi đã sử dụng điều này trong cuốn sách ggobi , www.ggobi.org/book . Nhưng mặt khác, các bảng màu có nghĩa là cho các khu vực địa lý hơn là các ô dữ liệu. Lựa chọn màu sắc tốt vẫn là một vấn đề đối với các ô dựa trên điểm.

Các gói R colorspacedichromatrất hữu ích. colorspacecho phép lựa chọn màu sắc xung quanh bánh xe: bạn có thể dành hàng giờ / ngày tinh chỉnh.dichromatgiúp kiểm tra độ mù màu.

ggplot2 nói chung có mặc định tốt, mặc dù không nhất thiết phải bằng chứng mù màu.

Lược đồ chuyển từ đỏ sang xanh có vẻ tốt trên máy tính của bạn nhưng không hoạt động tốt.


3

Một khả năng khác là tìm một tập hợp các màu tương đương với LAB, b) xem xét mù màu và c) có thể phù hợp với gam màu của không gian màu sRGB cũng như các gam màu của không gian CMYK phổ biến nhất.

Tôi nghĩ rằng yêu cầu cuối cùng là cần thiết cho bất kỳ phương pháp chọn màu nào - nó sẽ không tốt nếu màu sắc trông đẹp trên màn hình nhưng bị rối khi in trong quy trình CMYK. Và vì OP đã chỉ định "chất lượng xuất bản", tôi giả định rằng các biểu đồ thực sự sẽ được in bằng CMYK.


3

Đây là chương trình yêu thích của tôi. Nó có 20 (!!!!) màu sắc riêng biệt, tất cả đều dễ dàng phân biệt. Nó có thể thất bại cho người mù màu, mặc dù.

#e6194b
#3cb44b
#ffe119
#0082c8
#f58231
#911eb4
#46f0f0
#f032e6
#d2f53c
#fabebe
#008080
#e6beff
#aa6e28
#fffac8
#800000
#aaffc3
#808000
#ffd8b1
#000080
#808080
#ffffff
#000000

2

Khi vẽ đường kẻ, bạn nên coi chừng màu xanh lá cây và màu vàng, không hiển thị tốt trên máy chiếu. Vì cuối cùng tôi sử dụng lại hầu hết các âm mưu của mình trong các bài thuyết trình, tôi tránh các màu này ngay cả khi ý định ban đầu là dành cho xuất bản trên màn hình hoặc giấy.

Vì lợi ích của việc duy trì độ tương phản cao, điều đó khiến tôi có màu đen, đỏ, xanh dương, đỏ tươi, lục lam và nếu tôi thực sự cần nó, tôi sử dụng màu xám. Thật vậy, hầu hết trong số này là màu sáng, chính hoặc màu phụ. Tôi biết nó có thể không tối ưu theo quan điểm thẩm mỹ, nhưng tôi quan tâm nhiều hơn đến sự rõ ràng của những gì tôi đang trình bày. Mặt khác, việc liên tục tái sử dụng các màu tương tự từ bảng màu hạn chế có thể là một điều tốt về mặt thẩm mỹ.

Nếu bạn đang sử dụng nhiều hơn 6 dòng, bạn sẽ lấp đầy không gian hơn và tiến tới vẽ các khối màu. Đối với các loại cốt truyện này, tôi nghĩ mỗi trường hợp cần được xem xét riêng. Bạn có muốn các thái cực nổi bật, hoặc các giao điểm không? Dữ liệu của bạn có theo chu kỳ không (ví dụ 0 và 2π nên sử dụng cùng màu)? Có sự tương đồng với các tiêu chuẩn như màu xanh / đỏ cho nhiệt độ không? Liệu màu trắng đại diện cho NaN, không có dữ liệu, hoặc nó sẽ được sử dụng làm điểm nhấn? Vân vân.


2

Đối với người xem mù màu, CartOColors có sơ đồ thân thiện với màu sắc chất lượng được gọi Safelà dựa trên bảng phối màu phổ biến của Paul Tol . Bảng màu này bao gồm 12 màu dễ phân biệt.

Một bảng màu thân thiện với chất lượng màu tuyệt vời khác là sơ đồ Okabe và Ito được đề xuất trong bài viết của họ. Color Color Universal Design (CUD): Cách tạo hình và thuyết trình thân thiện với người mù màu.

### Example for R users
library(ggplot2)
library(rcartocolor)
library(patchwork)
theme_set(theme_classic(base_size = 14) + theme(panel.background = element_rect(fill = "#ecf0f1")))

set.seed(123)
df <- data.frame(x = rep(1:5, 8), 
                 value = sample(1:100, 40), 
                 variable = rep(paste0("category", 1:8), each = 5))

safe_pal <- carto_pal(12, "Safe")
palette_OkabeIto_black <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", 
                            "#0072B2", "#D55E00", "#CC79A7", "#000000")

# plot
p1 <- ggplot(data = df, aes(x = x, y = value)) + 
  geom_line(aes(colour = variable), size = 1) +
  scale_color_manual(values = palette_OkabeIto_black)


p2 <- ggplot(data = df, aes(x = x, y = value)) + 
  geom_col(aes(fill = variable)) +
  scale_fill_manual(values = safe_pal)

p1 / p2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.