R言語でグラフを描画する メモ
R言語の説明
R言語(アールげんご)は、オープンソースでフリーソフトウェアの統計解析向けプログラミング言語、及びその開発実行環境である。
―wikipediaより
グラフ描画に必要な要素を挙げると,
1.データを読み込む
2.データを描画する
3.グラフの保存
4.グラフの太さ,色を変える
5.グラフの軸のラベル,凡例
6.グラフの目盛間隔
7.グラフの大きさ
8.グラフで使われるフォント
9.グラフ上に文字を入れる
このくらいか.
なおR言語のインストール作業があるが,これは各webページで詳しく紹介されているので省略する.
例えば
http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html
など
次に基本事項
1.データを読み込む
プログラムでシミュレーションしたデータや,計測データなどをグラフにする場合には読み込む必要がある.
参考:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/40.html
作業ディレクトリにあるdata.txtから読み込み,変数"data"に保存するものとする.
なお,1行目に列名が入っている場合は関数 read.table() の引数 headerに T を指定
( data <- read.table("data.txt", header=T) )
またデータ間をカンマで区切られたりしていてもオプションを使うことで正常に読み込みできる.
詳しくは参考サイト参照.
2.データを描画する
typeでグラフを点で表すか,線で表すかなどを決める.
"l"は折れ線.
plot(data, type="l")
3.グラフの保存
グラフをクリックした状態で
[ファイル]→[別名で保存]
コマンドでは
plot(data, type="l")
dev.print(file="data.eps")
4.グラフの太さ,色を変える
[col] 線の色 1黒,2赤,3緑,4青,5水色,6紫,7黄,8灰
[lwd] 線の太さ デフォルトが1と思われる.
plot(data, type="l", col=2, lwd=5)
5.グラフのラベル,凡例
グラフのx軸とy軸のラベルは読み込んだデータにヘッダがある場合そのまま反映される.
x軸のラベルは[xlab]
y軸のラベルは[ylab]
で変更できる.
plot(data, type="l", xlab="time[sec]", ylab="value")
凡例は[legend()]関数を用いる
[lty] 線の種類.破線などが選べる
["topleft"] 本来は座標を指定するが,"topright"のように大雑把な位置を指定できる.
plot(data, type="l", col=2, lwd=2, xlab="time[sec]", ylab="Value")
legend("topleft", legend="Value", lty=1, lwd=2, col=2)
参考:http://r.livedocs.net/graph/legend.html
6.グラフの目盛間隔
まずグラフの範囲を決める
[xlim] 横軸の範囲
[ylim] 縦軸の範囲
plot(data, type="l", col=2, lwd=2, xlab="time[sec]", ylab="Value", xlim=c(-5, 5), ylim=c(-50, 50))
labオプションを使って目盛の数を指定する
[lab] 一つ目が横軸,二つ目が縦軸,三つ目がまだ実装されていない機能らしい
plot(data, type="l", col=2, lwd=2, xlab="time[sec]", ylab="Value",
xlim=c(-5, 5), ylim=c(-50, 50), lab=c(5,5,10))
xaxsオプションとyaxsオプションを用いて軸のスタイルを変える
"i"を選ぶとデータ範囲内にグラフを描く."r"の場合余白ができる.
plot(data, type="l", col=2, lwd=2, xlab="time[sec]", ylab="Value",
xlim=c(-5, 5), ylim=c(-50, 50), lab=c(5,5,10), xaxs="i", yaxs="i")
7.グラフの大きさ
グラフの保存時に[width]などのオプションを使う
いずれも単位はインチらしい
[width] 幅を設定
[height] 高さを設定
どちらかを設定すれば自動で適当なアスペクト比にするらしい.
dev.print(file="data.eps", width=5)
8.グラフで使われるフォント
グラフの保存時に[family]オプションを使う
[family] ここでは論文などでよく使われるTimes New Roman体と思われるフォントにする.
dev.print(file="data.eps", family="Times")#, horizontal=FALSE)
9.グラフ上に文字を入れる
text関数を使う.また,数式の場合はexpression関数とpaste関数を組み合わせるらしい.
text(2,30,expression(paste(x^n, y^{n-1})))
参考:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/56.html
その他
めんどいのでリンクをメモる
複数のグラフを一つのグラフで扱う場合
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/49.html
グラフを並べる
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/55.html