aaikmyz's diary

聴いた音楽とか見た映画とか行った美術館とかを記録しておきたい。

ggplot便利

ggplot、Rの標準関数より綺麗なグラフを描けるけど機能が多すぎてこれどうやればいいんじゃみたいなことが多々あった。まあググれば全部出てくるけど、せっかくなので自分が使った機能をまとめておく。

参考:
index.ggplot2 0.9.3
公式サイト。各関数の使用例も豊富で親切だと思う。英語。
ggplot2 の自分用メモ集を作ろう
日本語でかなり多くの情報がまとめられている。すごく便利

my.plot = ggplot(my.data, aes(value_1,value_2))
#my.dataっていうデータフレームのvalue_1とvalue_2を使ってグラフ描画するからよろしく、みたいな

ggplotはまずggplot()を使ってデータを格納する。その後グラフの形式とか軸の形式なんかを足していくという形でグラフを作っていく。

my.plot = my.plot + geom_point() 
#散布図形式のグラフにするよ、という宣言みたいな

my.plot = my.plot + ylim(0,350) + xlim(0,600) 
#x,y軸の最大、最小値決定
my.plot = my.plot + xlab("X axis label") + ylab("Y axis label") 
#x,y軸ラベルの設定。これを書かなければそれぞれvalue_1、value_2と表示される。

my.plot = my.plot +geom_point(aes(colour=my.data$significant))
#点を色分けする。この場合はもとのデータフレームのsignificantという列で分類する。
my.plot = my.plot +geom_point(aes(size=2)) 
#点のサイズを変える。
my.plot = my.plot + labs(colour="significance") 
#凡例のラベルを変える。これを書かなければmy.data$significantと表示される。

my.plot = my.plot + theme(axis.title.x = element_text(size=15),axis.title.y = element_text(size=15)) 
#軸ラベルのフォントサイズ調節。
my.plot = my.plot + theme(axis.text.x = element_text(size=15),axis.text.y = element_text(size=15)) 
#軸目盛りのフォントサイズ調節。
my.plot = my.plot + theme(legend.title = element_text(size=15),legend.text = element_text(size=15)) 
#凡例タイトルとラベルのフォントサイズ調節。

my.plot = my.plot + scale_y_log10() + scale_x_log10() 
#軸を常用対数表示する。これをやると上のxlim、ylimの設定は消える。
my.plot
#グラフを描画する。

点の色分けに関してはここらへんも参照。
リンク先は数値でしか分類してないけど、文字列でも分類できる。

点のカラーセットを変えたいときはこちらが参考になった。

それから、点が密集していて目立たせたい点が他の点に埋もれてしまっている場合は、もとのデータフレームの下の方に目立たせたい点のデータ行を移動させればよい。当たり前だけどデータフレームの下の方ほどあとに描画されるので。
今回の場合、significantという列(yesかnoのどちらかが入ってる)がyesになっている点が埋もれてほしくなかったので、

my.data.sorted = my.data[sort.list(my.data$significant),]

などとしたものを使用した。