バイオインフォをやっている大学院生です。プログラミングのことなどを書きます。

Rのplotの色指定方法まとめ(カテゴリーデータの場合)

Rで下のようなプロットをするときに、使える色の指定方法をまとめる。今回はデータがカテゴリーデータの場合に使える方法を5個紹介する。 なお、量的なデータの場合の色指定の方法はこちら。

bioid.hatenablog.jp

f:id:feb_march:20191019214918p:plain

col=(整数)で指定する方法

整数で指定できる色一覧
plot(x,y,col=1)などとすることで色の指定ができる。指定できる色は上の8色。

メリット・デメリット

楽。ただし色数が限られるので、多数のカテゴリーがある場合は対応できない。

Rで指定されている色名によって指定する方法

R defined color
Rで定義された色一覧
blue, red, greenなど単語で色を指定できるようになっている。plot(x, y, col="red")などとして使う。指定できる色の一覧を示したのが上の図だ。それぞれの番号の色がどんな名前で定義されているか下のリンクから参照できる。 https://github.com/kubotam-m/R_codes/blob/master/color_list.txt

メリット・デメリット

一番直感的でわかりやすいのはこの方法だと思う。しかし、多数のカテゴリーがあると、適切に指定しないとカテゴリーが見分け辛くなるし、指定するのもめんどくさい。

RColorBrewerを使う方法

colorBrewer palettes
RColorBrewerで使えるパレット一覧
RColorBrewerというパッケージを使用することで既存のパレットから色を選択して使うことができる。使い方はbrewer.pal(5, "Blues")のようにbrewer.pal(<色数>, <パレットの名前>)で色を取得できる。このとき"#FFFFFF"のように文字列で返ってくるので扱いが楽。

メリット・デメリット

すでに作られたパレットから選択して使えるので、色を選びやすいのがメリット。デメリットは、色数が一番多いパレットでも12色しかないことだ。

colorRampを使う方法

colorRamp categorical
colorRampでカテゴリー変数の色を指定する例
colorRampを使うと、自分で好きな色を指定してパレットを作成し、その中から好きな数だけ色を作成することができる。上の棒グラフは次のようなコードで書いたもの。

pal <- colorRampPalette(c("blue","green","yellow","orange","red"),space="rgb")
col_l <- pal(25)
barplot(1:25, names=1:25,col=col_l)

最初と最後の色だけではなく、中間の色も指定することができる。

メリット・デメリット

自分で色を指定してパレットを作ることができるのがメリット。色指定が手間といえば手間と言えるが、色覚特性に配慮した色にしたい場合などではかなり使いやすいと思う。また、色数を多くできる。

colorRampsを使う方法

colorRamps
colorRampsで定義されているパレットと色の例
colorRampsでは、colorBrewerと同じようにパレットが定義されている。定義されたパレットを選択して、そこから自分で色数を指定することができる。上の図は、それぞれのパレットから、色数を10として色を作ったときにできる色を示したものである。

メリット・デメリット

パレットがすでに定義されていて、さらに色数を自分で指定できるというメリットがある。また、"#FFFFFF"などのような文字列で返されるので扱いやすい。デメリットは特に思いつかないが、色数を多くしたときにパレットによっては色の区別が付き辛くなるかもしれない。

使い分けについて

一番直感的でわかりやすいのは色名で指定する方法だろう。しかし、色数が多いときに指定するのが面倒だ。色の数が比較的少ない(10程度)ならRColorBrewerを使うのが一番楽なのではないかと思う。色数がそれ以上になると、RColorBrewerでは対応できないので、colorRamp、もしくはcolorRampsを使うのが良いと思われる。自分で色を指定してパレットを作りたいならcolorRamp、既存のパレットでいいならcolorRampsが扱いやすいだろう。

参考リンクおよび使用したコード

統計グラフの色

R Color Reference Sheet | Brokering Closure

使用したコード

https://github.com/kubotam-m/R_codes/blob/master/color_test.R