色の話・その6
以前の日記で少し前フリしていた色の話。の続き。
- 色は視認性が高いグラフを書くときに大切な要素
- 色の多用は、グラフの本質を隠してしまう
- 人が理解できる限界は3~4色じゃないだろうか
と、思ってます。
grDevicesパッケージの話が終わったので、2つの色パッケージの話。
RColerBrewerパッケージとdichromatパッケージについて。
インドさんにコメントいただきました。嬉しい限りです。なので、RColorBrewerパッケージから。
RColorBrewerパッケージはその名の通り、ColorBrewerのRパッケージです。
ColorBrewerは視認性の高い配色を念頭においたカラーパレットです。
SIS 7.0では『ColorBrewer』というカラーセットが追加されました。『ColorBrewer』はCynthia A. Brewerが考案したカラーパレットで、目に優しい配色で、色の区分が明瞭になるように工夫されています。このカラーセットには、35種類もの色味があり、それぞれ3〜12段階の色が設定してあります。個別値やレンジなど色分けできる主題図で『ColorBrewer』のさまざまな色味から選択して、多彩な主題図表現ができます。図1は、『ColorBrewer』を使った主題図表現のご紹介として、市区町村別の昼間人口をもとに4種類の色味のレンジ主題図を設定しました。テーマに応じて色味を使い分けることができます。
『ColorBrewer』でキレイな地図
brewer.pal関数がColorBrewerに従ったカラーパレットを作ります。
display.brewer.pal関数、display.brewer.all関数は、brewer.palのカラーセットをディスプレイするだけの関数で、brewer.pal.info関数は「?brewer.pal」と同じ動作と思う。
カラーパレットはbrewer.pal関数の引数nameで指定できる。
ColorBrewerは視認性の違いから3つのカテゴリに分けられる
- Sequential palettes
連続したパレットで色の強さの順に並ぶ。主に、淡い色は小さい値、濃い色は大きい値といった印象を与える。グラデーションの段階を決める引数nは3〜9まで。
name | カラー | name | カラー | |
YlOrRd | 黄 -> オレンジ -> 赤 | PuBu | 紫 -> 青 | |
YlOrBr | 黄 -> オレンジ -> 茶 | OrRd | オレンジ -> 赤 | |
YlGnBu | 黄 -> 緑 -> 青 | Oranges | オレンジのグラデーション | |
YlGn | 黄 -> 緑 | Greys | グレーのグラデーション | |
Reds | 赤のグラデーション | Greens | 緑のグラデーション | |
RdPu | 赤 -> 紫 | GnBu | 緑 -> 青 | |
Purples | 紫のグラデーション | BuPu | 青 -> 紫 | |
PuRd | 紫 -> 赤 | BuGn | 青 -> 緑 | |
PuBuGn | 紫 -> 青 -> 緑 | Blues | 青のグラデーション |
- Qualitative palettes
色相の間に関連性がないパレットでクラス間の違いを強めたいときに使う。名義データやカテゴリデータに使える。引数nは最大値が決まっていて、nが最大値以下の時は途中までの色が利用される。
name | nの数 | name | nの数 | |
Set3 | 12 | Pastel1 | 9 | |
Set2 | 8 | Paired | 12 | |
Set1 | 9 | Dark2 | 8 | |
Pastel2 | 8 | Accent | 8 |
- Diverging palettes
中央から順に両端に向かって色が発散するパレット。淡い値を中央値に入れてデータを区分したり、コントラストをつけて低い値と高い値を強調したりする。
name | カラー | name | カラー | |
Spectral | 光のスペクトル | PuOr | オレンジ -> 白 -> 紫 | |
RdYlGn | 赤 -> 黄 -> 緑 | PRGn | 紫(?) -> 白 -> 緑 | |
RdYlBu | 赤 -> 黄 -> 青 | PiYG | ピンク -> 黄緑 | |
RdGy | 赤 -> 白 -> グレー | BrBG | 茶 -> 青緑 | |
RdBu | 赤 -> 白 -> 青 |
> library(RColorBrewer) > jpeg("displaybrewerpalall.jpg",height=720) # これで一覧がわかる > display.brewer.all() > dev.off()
一つだけのパレットを見たいときはこう。
> jpeg("displaybrewerpal.jpg") > layout(matrix(1:9,ncol=3)) > par(mai=c(.8,.2,.1,.2)) > display.brewer.pal(name="YlOrRd",n=3) > display.brewer.pal(name="YlOrRd",n=6) > display.brewer.pal(name="YlOrRd",n=9) > > display.brewer.pal(name="Spectral",n=3) > display.brewer.pal(name="Spectral",n=5) > display.brewer.pal(name="Spectral",n=11) > > display.brewer.pal(name="Set3",n=3) > display.brewer.pal(name="Set3",n=6) > display.brewer.pal(name="Set3",n=12) > dev.off()
実際に使うときはこんな感じかな?
> dat <- matrix(sample(6,8,replace=TRUE),nrow=4) > colnames(dat) <- c("hoge","fuga") > > jpeg("brewerpal.jpg") > par(mai=c(.8,.8,.8,1.2)) > par(xpd=FALSE) > barplot(dat,beside=TRUE,col=brewer.pal(name="Paired",n=4)) > par(xpd=TRUE) # グラフの外を指定する > legend(x=par()$usr[2],y=par()$usr[4],legend=sapply(LETTERS[1:2],paste,1:2) + ,pch=22,lty=0,pt.bg=brewer.pal(name="Paired",n=4),pt.cex=2) > dev.off()
ちなみに、ColorBrewerはこの本にも紹介があります。
The Map Reader: Theories of Mapping Practice and Cartographic Representation
- 作者: Martin Dodge,Rob Kitchin,Chris Perkins
- 出版社/メーカー: Wiley
- 発売日: 2011/06/20
- メディア: ハードカバー
- この商品を含むブログ (1件) を見る