Yayın kalitesindeki parsellerde seriyi ayırt etmek için kullanılacak “En İyi” renk serisi


89

Aynı arsa üzerinde çoklu seriler göstermek için kullanılacak en iyi renk kümesi hakkında herhangi bir çalışma yapıldı mı? Ben sadece varsayılanları kullanıyorum ve matplotlibhepsi parlak, birincil renkler oldukları için biraz çocukça görünüyorlar.


28
Bu, sorunuzu cevaplamıyor, ancak bahsetmek önemli olduğunu düşünüyorum. Mümkün olduğunda, seçilen herhangi bir renk şemasına, arsa siyah beyaz basıldığında, anlaşılması hala kolay olacak şekilde farklı sembollerle veya çizgi stilleriyle desteklenmelidir. Çok sık yazarlar sadece renge güvenir, rakamları renk körü için yararsız hale getirir ve kağıdınızın siyah beyaz baskısını okumayı tercih ederler. Grafikler her zaman mümkünse siyah beyaz çalışmalı ve renkli olarak "daha iyi" çalışmalıdır.
WetlabStudent

11
+1 ila MHH. Snooker'da yayınlanan efsanevi bir televizyon dizisi dolaylı olarak aynı noktayı ortaya koyuyor: “Steve pembe top için gidiyor - ve siyah-beyaz izleyenler için pembe, yeşilin yanında.” Genç okuyucular için açıklama: Bu, bazı insanların renkli televizyona para kazanabileceği, ancak diğerlerinin daha ucuz siyah beyaz televizyonlara gitmesi gerektiği zamanlardan geliyor.
Nick Cox,

5
Hangi amaç için "En İyi"? Bu önemsiz veya saygısız bir soru değil. Bir internet forumunun okuyucularını etkilemek için, renksiz çalışan grafik sembolleri kullanıyorum ve daha sonra gökkuşağı renkleriyle süslüyorum (anlamlı olabilir ancak öncelikle dikkat çekmek ve "kalite" duygusu vermek için vardır). Verileri iletmek için tasarlanan araziler için, başka bir renk şeması seçilebilir, oysa keşfedilmemiş şekilde ortaya çıkmayan ve beklenmeyen kalıpları (görsel bir gebelikte ) ortaya çıkarmak için oluşturulan araziler için şema amacına bağlı olmalıdır: farklılaşma, toplama, seçim, diğer?
whuber

2
@ whuber: Bir şey anlatıyorsun. Bilimsel literatürde yayınlanmak istediğimi ve genel olarak, her bir toplama, seçim, farklılaşma, vb. Kategorilerin her birine cevaplar sormak istediğimi belirtmeliydim. Aslında, toplama ve farklılaşma genellikle ayrı hedefler değildir: Şekillerde Makalelerimden birinden ( dx.doi.org/10.1063/1.4864755 ) ikisine de ihtiyacım vardı (ve çok iyi bir iş çıkardığımı sanmıyorum). (Akademik kampüslerde olmayanlar için üzgünüm; yakında genel bir halk bağlantısı kurmaya çalışacağım)
David Hollman

Yanıtlar:


53

Bir renk paleti seçmek için yaygın bir referans, ColorBrewer'daki Cynthia Brewer'in eseridir . Renkler, choropleth haritalarındaki algısal modellere dayanarak seçilmiştir, ancak aynı tavsiyelerin çoğu, veri modellerini ayırt etmek için herhangi bir arsa türünde renk kullanmak için de geçerlidir. Renk yalnızca farklı çizgiler arasında ayrım yapmaksa, kalitatif bir palet sıralanır.

Genellikle birkaç çizgi içeren çizgi grafiklerinde renk gerekmez ve farklı nokta sembolleri ve / veya çizgi desenleri yeterince etkilidir. Çizgi grafikleri ile ilgili daha yaygın bir sorun, eğer çizgiler sıklıkla üst üste gelirse, hangi sembolleri veya rengi kullanırsanız kullanın farklı desenleri ayırt etmenin zor olacağı yönündedir. Stephen Kosslyn bir komploda sadece 4 satır olması için genel bir kural önerir. Çizgileri daha çok küçük çoklu grafik dizisine bölmeyi düşünürseniz. İşte öneriyi gösteren bir örnek

Renk gerekmiyor ve etiketler fazlasıyla yeterli.


4
ColorBrewer'dan "Dark2" paletini seviyorum!
Gimelist

5
ColorBrewer'ın tavsiyesi için teşekkürler! Bu benim aradığım bir şeydi.
David Hollman

Gri tonlamalı görüntü, ortada bir yerde aynı değere sahip iki seri varsa (iki seri o noktadan geriye doğru izlenemez) veya sonunda (etiketler hangisini ayırt edemez) dizi hangisidir). Yine de çalıştığı zaman harika ...
naught101

Orta için @ naught101'i kabul edin (uçlar çakışıyorsa etiketi sondan önce bir yere koyun). Aslında noktalar arasında doğrusal enterpolasyon kullanmamak, ancak bazı spline türleri kullanmak bir nedendir. Bu durumda, spline farklı yönlerde eğri olacaktır. Bu yoğun paralel koordinat parsellerinde oldukça fazla olur. (Jittering ayrıca düşük tamsayı sayımı verileri gibi birçok bağa sahip verilerle de yardımcı olabilir.)
Andy W

1
Verileriniz hakkındaki yorumlarınız Amazon'daki kitaplar inanılmaz. Bunun için teşekkür ederim.
Andy W

40

Diğer cevaplarda son derece iyi tavsiyeler, ancak burada kendi düşük seviyeli önerilerimden öğrencilere bazı ekstra noktalar var. Bunların hepsi doğal olarak, temel sorular hakkında düşünülmesi gereken bir tavsiyedir: Grafiğim ne yapmayı hedefliyor? Bu veriler ile anlam ifade eden nedir? Okuyucular kimler? Renklerin grafik içinde ne yapmasını beklerim? Grafik, birinin dogmalarından bağımsız olarak iyi çalışıyor mu?

Ayrıca, rengin önemi bir grafikten diğerine büyük ölçüde değişir. Fikrin gerçekten de farklı alanların renkli olduğu veya en azından farklı şekilde gölgelendiği bir choroplet veya yama haritası için, bir grafiğin başarısı, renk düzeninin başarısıyla bağlanır. Diğer grafik türleri için, renkler dağıtılabilir veya rahatsız edici olabilir.

  1. Renklerin hepsi gerekli mi? Örneğin, farklı değişkenler veya gruplar grafiğin farklı bölgelerindeki metin etiketleriyle açıkça ayırt edilirse, ayrı renkler de genellikle fazladan gösterilir. Meyve salatası veya technicolor dreamcoat etkilerine dikkat edin. Metin etiketli veya dilimlerde etiketli bir pasta grafiği için renk, örneğin fazladan bilgi aktarmaz. (Pasta grafiğiniz bir anahtara veya göstergeye bağlıysa, yanlış türde bir grafik deniyor olabilirsiniz.)

  2. Birçok insan bu renkleri ayırt etmek için uğraştığından, kırmızı ve yeşil arasındaki kontrastlara asla güvenmeyin.

  3. Gökkuşağı dizileri (ROYGBIV veya kırmızı-turuncu-sarı-yeşil-mavi-indigo-menekşe) fiziksel olarak çekici olabilir, ancak pratikte iyi çalışmazlar. Örneğin, turuncu ve yeşil genellikle daha güçlü iken sarı, genellikle zayıf bir renktir, bu nedenle izlenim monoton bir dizilim bile değildir.

  4. Büyük renkteki güçlü lekelerin sonucu olan renk düzenlerinden kaçının.

  5. Koyu kırmızıdan koyu maviye bir sıra, sıralı bir sıra gerektiğinde iyi çalışır. Beyaz (her zamanki gibi) herhangi bir yerde arka plan rengi ise, onu kullanmayın, ancak soluk kırmızıdan soluk maviye geçin. [1 Mart 2018’de eklendi] Belki altını çizmek için çok açık: kırmızı, birçok kişi için olumsuz ve / veya tehlike çağrışımlarına sahip, yardımcı olabilir ve mavi daha sonra pozitif anlamına gelebilir. Altı çizili olmak için çok açık, ancak herhangi bir şekilde yapıyorum: Kırmızı ve mavinin birçok ülkede siyasi çağrışımları var.

  6. Mavi ve turuncu birlikte iyi gider (burada Hastie, Tibshirani ve Friedman'a minnettar bir selam: http://web.stanford.edu/~hastie/local.ftp/Springer/OLD/ESLII_print4.pdf ) [1 Mart 2018] görselleştirme ile ilgili tanıtım kitapları şimdi temel bir palet olarak turuncu, mavi ve gri: tavsiye ettiğin şey için turuncu ve / veya mavi ve fon için gri.

  7. Soluk griden koyu griye kadar gri tonlama iyi çalışabilir ve renk üretimi söz konusu olduğunda iyi bir fikirdir. (Gri tonlamada adil bir baskı sağlayamayan berbat bir yazıcıdır.) (İsterseniz gri; tercihler okyanuslar arasında değişir, öyle görünür; tıpkı renk ve renkte olduğu gibi).

  8. [5 Ağu 2016 Eklendi] Oldukça genel bir ilke, iki rengin çoğu zaman çok daha iyi çalıştığıdır. İki grubun her ikisi de ilgileniyorsa, aynı derecede güçlü renkler seçin (örn. Kırmızı veya turuncu ve mavi). Bir grup, bazıları arasında özellikle ilgi çekiyorsa, onu mavi veya turuncu yapın ve diğerlerinin gri olmasına izin verin. Prensipte yedi grup için yedi renk kullanmak bilgiyi taşır, ancak birkaç renkten rekabet olduğu bir zamanda bir renge odaklanmak bile zordur. Küçük katlar, çok renkli bir arsadan birkaç grup için daha iyi olabilir.


1
Zayıf ve güçlü renkler hakkında çok iyi bir nokta
shadowtalker

2
2. Nokta ÇOK önemlidir. İstatistik öğretmenlerimden biri renk kördü ve bir grafikte "açık sarı" ve "açık yeşil" olarak mutlu bir şekilde kullanıldı. Renk bizim için neredeyse aynıydı, ama onun için kolayca ayırt edilebiliyorlardı.
Christian Sauer

1
Tavsiyeler için teşekkürler, özellikle # 2. Alanlara baktım ve matplotlib'in daima seçtiği ilk iki renk kırmızı ve yeşil olduğunu fark ettim. Bu o kadar iyi değil.
David Hollman

Bu aptalca bir varsayılan gibi görünüyor.
Nick Cox,

27

Son yıllarda bu konuda çok fazla araştırma yapıldı.

Büyük bir nokta "anlamsal rezonans" dır. Bu, temel olarak, "temsil ettikleriyle uyuşan renkler" anlamına gelir, örneğin para için bir zaman dizisi, en azından ABD'deki bir izleyici için yeşil renkte olmalıdır. Bu görünüşe göre anlama geliştirir. Konuyla ilgili çok ilginç bir makale Lin ve ark. (2013): http://vis.stanford.edu/papers/semantically-resonant-colors

Diğer sekmelerde birçok bilgi içeren http://tools.medialab.sciences-po.fr/iwanthue/ adresinde çok güzel iWantHue renk üreticisi de var .

Referanslar

Lin, Sharon, Julie Fortuna, Chinmay Kulkarni, Maureen Stone ve Jeffrey Heer. (2013). Veri Görselleştirme için Anlamsal-Rezonans Renkleri Seçme. Bilgisayar Grafikleri Forumu (Proc. EuroVis), 2013


13
+1 ... Bununla birlikte, bazı şeyler - örneğin para örneğiniz gibi - evrensel değildir. ABD'de para yeşil (-ish) olabilir. Her yerde yeşil değildir ve renkle ilişkilendirme ülkeden ülkeye değişebilir (örneğin, Almanya'da birisinin günümüzde çok çeşitli renklerde gelme eğiliminde olmasına rağmen maviyi parayla ilişkilendirme olasılığı daha yüksektir).
Glen_b

@Glen_b iyi nokta
shadowtalker 6:14

1
, Sorunun ilk üç kelimesine en iyi yanıt veren alıntılar için +1: :-)
David Hollman

22

Paul Tol, web sitesinde renk farklılıkları (yani kategorik veya nitel veriler) ve renk körlüğü için optimize edilmiş bir renk şeması ve ayrıntılı olarak oraya bağlı bir "technote" (PDF dosyası) sunar. O belirtir:

Bilimsel sonuçlarınızla grafikleri mümkün olduğu kadar net yapmak için, aşağıdakilerden oluşan bir renk paletine sahip olmak kullanışlıdır:

  • renk körü okuyucular dahil tüm insanlar için farklı;
  • siyah ve beyazdan farklı;
  • ekranda ve kağıda farklı; ve
  • hala birlikte iyi maçlar.

Renk şemasını en belirgin 9 rengin "Palet 1" inden aldım ve dosyamın matplotlibrcaltına yerleştirdim axes.color_cycle:

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

Ardından, Joe Kington'dan ödünç almak, tarafından çizilen varsayılan satırları yanıtlar :

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()

sonuçlanır:

görüntü tanımını buraya girin

Farklı renk haritalarını (örneğin skaler değerleri temsil etmek için) görmek için gördüğüm en iyi referans, burada " Bilimsel Görselleştirme için Renk Haritalarını Daldırma Renk Haritaları " başlıklı Kenneth Moreland tarafından yazılmış bir kağıttır . Gökkuşağı şemasını değiştirmek için soğuk-sıcak şemasını geliştirdi ve "kullanıcıların kendi özelleştirilmiş renk haritalarını kolayca oluşturmalarını sağlayan bir algoritma sunuyor".

Bilimsel görselleştirmelerde rengin kullanımıyla ilgili bilgi için bir başka faydalı kaynak NASA için "Mavi Mermer" imajını yaratan Robert Simmon'dan geliyor. Dünya Gözlemevi web sitesinde yayınlarını görün .


6
Yalnızca +1 (!) , "En iyi renkler" sorusuna yanıt olarak renkleri gösteren dokuz yanıttan yanıtını verir.
amip

@ amoeba: artık değil :-)
Tung

20

Açık colorbrewer2.org bulabilirsiniz nitel , sıralı ve ıraksak renk şemaları. Kalitatif , ardışık renkler arasındaki farkı en üst düzeye çıkarır ve gnuplot'ta kullandığım şey budur. Sitenin güzelliği, renklerin onaltılık kodlarını kolayca kopyalayabilmenizdir, böylece ithalatı kolaydır. Örnek olarak, aşağıdaki 8 renkli seti kullanıyorum:

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

Oldukça hoş ve net sonuçlar veriyor.

Yan bir not olarak, sıralı , merkezi bir değerden (örneğin dağ yüksekliği ve deniz derinliği) farklılıkları vurgulamanız gerektiğinde yumuşak bir degrade gerektiğinde ve ayrılmaya başladığınızda kullanılır. Bu renk düzenleri hakkında daha fazla bilgi bulabilirsiniz burada .


1
Ben şahsen açık sarı renkte parlak sarı bulmuyorum
rhombidodecahedron

11

Renk paletleri seçmeye adanmış birçok web sitesi var. Objektif olarak en iyi olan belirli bir renk kümesi olduğunu bilmiyorum, izleyicilerinize ve işinizin tonuna göre seçmek zorunda kalacaksınız.

Check out http://www.colourlovers.com/palettes veya http://design-seeds.com/index.php/search başlamak için. Bazılarının farklı grupları göstermeye yakın iki rengi vardır, ancak diğerleri size daha geniş bir yelpazede tamamlayıcı renkler verecektir.

Ayrıca Matplotlib'deki varsayılan olmayan önceden tanımlanmış renk gruplarını da inceleyebilirsiniz .


5

Saçılma grafikleri için renk çubuğundaki Dark2 paletini seviyorum. Bunu, www.ggobi.org/book adresindeki ggobi kitabında kullandık . Ancak, aksi takdirde renk paletleri veri alanlarından ziyade coğrafi alanlara yöneliktir. İyi renk seçimi, nokta bazlı araziler için hala bir sorundur.

R paketleri colorspaceve dichromatkullanışlıdır. colorspaceTekerleğin çevresindeki renklerin seçilmesini sağlar: saat / gün ince ayar harcayabilirsiniz. dichromatrenk körlüğünün kontrol edilmesine yardımcı olur.

ggplot2 Genelde iyi varsayılanlar vardır, ancak renk körlüğüne mutlaka gerek yoktur

Kırmızıdan mavi şemaya sapan bilgisayarınızda iyi görünüyor ama iyi yansıtmıyor.


3

Başka bir olasılık, a) LAB'de eşit olan bir renk kümesi bulmak, b) renk körlüğünü dikkate almak ve c) sRGB renk uzayının gamutuna ve ayrıca en yaygın CMYK alanlarının gamutuna sığabilecek bir renk kümesi bulmak olacaktır.

Bence son gereksinim, renk toplamada herhangi bir yöntem için bir zorunluluktur - renkler ekranda iyi görünüyorsa, bir CMYK işleminde basıldığında karışıklık yaratması iyi olmaz. OP “yayın kalitesini” belirttiğinden beri grafiklerin gerçekten CMYK'da basılacağını varsayıyorum.


3

Bu benim en sevdiğim program. Her biri kolayca ayırt edilebilecek 20 (!!!!) farklı renge sahiptir. Yine de, renk körü insanlar için muhtemelen başarısız olur.

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

2

Çizgileri çizerken, projektörlerde iyi görünmeyen yeşil ve sarıya dikkat etmelisiniz. Sonunda sunumlarımdaki alanların çoğunu yeniden kullandığım için, asıl niyet ekran veya kağıt yayın için olsa bile, bu renklerden kaçınıyorum.

Yüksek kontrastı korumak adına, bu beni siyah, kırmızı, mavi, macenta, camgöbeği bırakıyor ve gerçekten ihtiyacım olursa gri kullanıyorum. Aslında, bunların çoğu parlak, birincil veya ikincil renklerdir. Estetik bir bakış açısıyla optimal olamayacağını biliyorum, fakat sunduğumun netliği ile daha fazla ilgileniyorum. Öte yandan, sürekli aynı renkleri sınırlı bir paletten tekrar kullanmak estetik açıdan iyi bir şey olabilir.

6 çizgiden fazlasını kullanıyorsanız, daha fazla alan dolduruyor ve renk bloklarını çizmek için ilerliyorsunuz. Bu tür arsalar için her bir vakanın ayrı ayrı ele alınması gerektiğini düşünüyorum. Aşırı uçların göze çarpmasını mı yoksa sıfır geçişleri mi istiyorsun? Verileriniz döngüsel mi (örneğin, 0 ve 2π aynı rengi kullanmalı mı)? Sıcaklık için mavi / kırmızı gibi standartlara bir benzetme var mı? Beyaz, NaN'i temsil ediyor mu, veri yok mu yoksa vurgulama olarak mı kullanılacak? vs vs.


2

Renk körü izleyicileri için, CARTOColors , Paul Tol'un popüler renk şemalarınıSafe temel alan, nitel bir renk körü dostu bir şemaya sahiptir . Bu palet kolayca ayırt edilebilen 12 renkten oluşur.

Bir diğer büyük niteliksel renk körü dostu palet, “Renk Evrensel Tasarım (CUD): Renk körü insanlar için uygun olan figür ve sunumların nasıl yapılacağı” başlıklı makalesinde önerilen Okabe ve Ito şemasıdır.

### 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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.