色覚異常フレンドリーなカラーパレット

  • 色覚異常には先天性のものと後天性のものがあるが、先天性のものにも複数の種類が知られている。日本人に多いのは先天性赤緑色覚異常で、2種類に分かれます(こちら)。英語での名称はDichromacy (2種類がprotanopia and deuteranopia)
  • 色覚異常がどういうことなのかを、コンピュータ的には、「正常型」の人にとっての「色」をrgbシステム等を用いた「カラーコード」にした上で、色覚異常者が色のセットをどのように知覚するか・弁別するかに応じて、カラーコード対応表を作ることで表現する。
  • 日本人に多い2種類の先天性赤緑色覚異常でのカラーコード対応を表現したのが色覚異常(Wikipedia)にある、1型2色覚RGBW、2型2色覚RGBWの色パターン。いずれも、上2つのバー(赤バーと緑バー)との区別が難しくなっている
  • Rには色覚異常を意識したパッケージが(少なくとも)2つある。その2つの名前はdichromatとviridis
  • dichromatには、「正常:色覚異常の色対応表データ」があり、normal, protan, deutan, tritanの4タイプの対応関係が256 x 3 x 4アレイ(x3は3原色)に納めてあり
 data("dalton", package = "dichromat")
 par(mfrow = c(4, 1))
 image(matrix(1:256, 128), col = dalton.colors$normal)
 image(matrix(1:256, 128), col = dalton.colors$deutan)
 image(matrix(1:256, 128), col = dalton.colors$protan)
 image(matrix(1:256, 128), col = dalton.colors$tritan)
  • とすることで次のような色対応が表示できる正常=normal、赤緑色覚異常の2タイプがdeutanとprotan。

  • また、関数dichromat()はカラーコードを変換する
  • このようにdichromatパッケージは色覚異常での色の見え方を再現する情報・関数を提供する
  • 他方、viridisというパッケージは、こういうカラーパレットを使うと複数タイプの色覚異常でも識別できるよ、というカラーパレットを提供する
  • 色覚異常にはいろいろなパターンがあり、3原色のすべての知覚が障害されていることもあり、色で区別することを求めるよりも、明暗コントラストで識別可能にする方向でのカラーコーディングがよい。結局、それはグレースケール化しても識別できるようにするということ
  • このviridisパッケージは、pythonのmatplotlib2.0でデフォルト採用しているviridisのR化だという
  • こちらがサイト
  • サイトには色々書いてあるけれど、簡単に言えばcolor.paletteとしてviridisパッケージが提供する4種類のカラー系列を使いましょう、ということ
  • カラー4系列はviridis,magma, plasma, inferno
t <- seq(from=0,to=1,length=100)*2*pi
x <- cbind(sin(t),cos(t))
plot(x,col=viridis(length(t)),pch=20)

x <- matrix(0,100,10)
for(i in 1:10){
	x[,i] <- sort(rnorm(100,sample(1:10,1),sd=sample(1:5,1)))
}
df <- as.data.frame(x)
matplot(df,type="l",col=viridis(10),lwd=5)


|