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 matplotlib
hepsi parlak, birincil renkler oldukları için biraz çocukça görünüyorlar.
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 matplotlib
hepsi parlak, birincil renkler oldukları için biraz çocukça görünüyorlar.
Yanıtlar:
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.
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.
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.)
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.
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.
Büyük renkteki güçlü lekelerin sonucu olan renk düzenlerinden kaçının.
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.
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.
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).
[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.
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 .
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
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 matplotlibrc
altı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:
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 .
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 .
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 .
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 colorspace
ve dichromat
kullanışlıdır. colorspace
Tekerleğin çevresindeki renklerin seçilmesini sağlar: saat / gün ince ayar harcayabilirsiniz. dichromat
renk 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.
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.
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
Ç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.
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