R 使い方 散布図 工夫(透明度・グラフ並べるなど) グラフの描き方

バイオインフォ道場、くまぞうです。

統計処理などで2変数の関係を調べるときに、良く使われるのが散布図です。少し工夫するとより使いやすくなります。散布図の工夫についてまとめます。

スポンサーリンク



散布図を描く

散布図はplot関数を使って書きます。

plot.r

R> plot(Sepal.Length ~ Sepal.Width, data=iris)

plot

散布図の工夫

点が重なった際のマークの工夫

散布図は点やマークで描画することが多いですが、点が重なった場合は重なり具合の情報がわかりにくくなります。マークに透明度を追加して、重なったときに濃淡の違いによって重なり度合いを示せるようになります。マークはpchで、直接指定したり、マークの番号で指定したりします。透明度は、col(色の指定)の最後で指定しています(alpha値)。alpha=0.0は透明・alpha=1.0は不透明です。

plot_mark_point.r

## 透明度指定なしのため、重なりが良くわからない
R> plot(log2(Sepal.Length) ~ log2(Sepal.Width), data=iris, col=rgb(0, 0, 0))

plot_point

plot_mark_alpha.r

## 透明度を指定したことにより、濃淡で重なりが分りやすい
R> plot(log2(Sepal.Length) ~ log2(Sepal.Width), data=iris, col=rgb(0, 0, 0, alpha=0.1), pch=16)  

plot_alpha

複数の散布図を並べる

散布図に限ったことではありませんが、同じ種類のグラフや異なる種類のグラフを1つのグラフ内に分割して表示したい場合があります。似たようなデータ、条件を変えたデータを比較する場合に大変便利です。そのような場合は、layoutでグラフ描画領域を分割して、それぞれに描画します。尚、x軸やy軸の表示範囲をあわせるなどすると、より見やすくなります。範囲は、xlimylim等を使って指定します。

plot_double.r

R> layout(matrix(1:2, ncol=2))  # 1行2列に分割
R> plot(Sepal.Length ~ Sepal.Width, data=iris)
R> plot(Petal.Length ~ Petal.Width, data=iris)

plot_double

複数のデータを重ねた散布図

2種類以上のデータを1つの散布図に重ねて描画します。異なるデータ・似たデータ、条件を変えたデータを比較する場合に大変便利です。種類毎のマークを、iris$Speciesfactor情報で切り替えています。凡例の表示は、legend関数を使っています。

plot_set.r

R> plot(Sepal.Length ~ Sepal.Width, data=iris, pch=as.integer(iris$Species))
R> legend("topright", legend=c("setosa", "versicolor", "virginica"), pch = 1:3)

plot_set

散布図を画像ファイルとして保存する

画面への表示だけでなく、画像ファイルとして保存することもできます。

plot_image.r

png("plot_image.png")
plot(Sepal.Length ~ Sepal.Width, data=iris, pch="+")
dev.off()

plot_image

スポンサーリンク