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

Rのplotの色指定方法まとめ(量的データの場合)

量的データのプロットに関して、色を付ける方法を紹介する。また、凡例をどうつければいいか一例を示す。なお、データがカテゴリカルデータの場合はこちらの記事をみてほしい。 f:id:feb_march:20191027215511p:plain

グレースケールで表示する方法

gray
グレースケール
gray(level)(levelは0から1の間)で指定できる。0で黒、1で白になる。

RGBで指定する方法

赤、緑、青の値で色を表現する。Rではrgb(red,green,blue)で指定する。デフォルトだとそれぞれの色は0から1の間にする必要がある。rgb(red,green,blue,maxColorValue=255)とするとそれぞれの色の範囲を0から255として指定できる。

red, green, blueのパラメータのうちの一つを変化させた。他の二つのパラメータは0
red, green, blueのパラメータのうちの一つを変化させた。他の二つのパラメータは1

HSVで指定する方法

hsv
HSVによる色の指定
HSVはhue(色相)、saturation(彩度)、value(明度)によって色を表現する。RGBの場合と同じように、hsv(hue, saturation,value)によって指定できる。上の図は、3つのパラメータのうち一つだけを0から1へ変化させた場合の色の変化を示したもの。なお、変化させない2つのパラメータは共に1である。

colorRampを使う方法

colorRamp
colorRampによる色指定の例
colorRampでは、複数の色を指定して、それらの色のグラデーションを用いて表すことができる。図は上から順に、

pal = colorRamp(c("blue", "red"), space="rgb")
pal = colorRamp(c("blue","white","red"),space="rgb")
pal = colorRamp(c("blue","green","yellow","orange","red"),space="rgb")

として色を指定した。このとき、palは0から1の数値を引数に取りその値に対応するRBG値を返す関数である。

凡例の付け方

一番上の散布図の凡例はSDMtoolsというライブラリのlegend.gradientという関数を用いて書いた。

pnts = cbind(x =c(2.5,3,3,2.5), y =c(3,3,2,2))
legend.gradient(pnts,
    cols=apply(colorRamp(c("blue","yellow","red"),space="rgb")(0:100/100)/256,1,function(x){rgb(x[[1]],x[[2]],x[[3]])}),
    limits=c(0,1),
    title=""
)

pntsは凡例の位置、colsは描画するのに使う色(2色以上で今は101色)、limitsは値の範囲、titleは凡例の題名。

使ったコード

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