August 18, 2014

Rでいこう!!〜その3

前回は棒グラフと箱ヒゲ図、beeswarm plotを書くための簡単な例を出しましたが、今回は折れ線グラフです。繰り返しになりますが、Rは作図の命令をいちいちコマンドで書かなければいけないので直感的でなく、従ってハードルが高くなってしまうのですが、命令文さえ一度作ってしまえば、コピペ一発で図が出来るので、むしろ簡単!毎回同じ図を作るのには最適です。

またここでエア実験。ノックアウトマウスと野生型マウスの産仔数の増加数のデータのファイルを用意します。
weeks WT KO
1 0 0
2 0 0
3 50 6
4 52 6
5 53 10
6 67 10
7 88 10
8 88 15
9 104 15
10 104 23
11 110 30
12 131 34
13 131 35
14 131 34
これをCummulative_pups.csvという名前で保存しておきます。あとは命令文一発。
紫のファイル名と項目名を変更すればどんな時にも使えます。

data<-read.csv("Cummulative_pups.csv")
postscript("Cummulative_pups.eps", horizontal = FALSE, onefile = FALSE,paper = "special", height = 4, width = 4)
plot(data$WT,xlab="",ylab="",type="s",lwd="2",col="blue")
points(data$KO,type="s",lwd="2",col="magenta")
dev.off()


いやあ。実に簡単ですね。また、普通の折れ線グラフはともかく、こういう階段状のグラフをエクセルで書くのはとても大変です。縦軸の数値がちょっとぎこちないですが、この場合ならplotのコマンドのところにyaxp=c(0,120,3)と入れてやればすぐに直ります。普通の折れ線グラフにしたければ、上の命令文をコピペして、lty="l"にすれば良いだけ。p, l, b, c, o, h, s,など色々入れて遊べます。たとえばlty="l"ならこんな感じ。紫のところが変更点です。

data<-read.csv("Cummulative_pups.csv")
postscript("Cummulative_pups.eps", horizontal = FALSE, onefile = FALSE,paper = "special", height = 4, width = 4)
plot(data$WT,xlab="",ylab="",type="l",lwd="2",col="blue",yaxp=c(0,120,3))
points(data$KO,type="l",lwd="2",col="magenta")
dev.off()

細かい説明ですが、
折れ線グラフを書くための基本コマンドは
data<-read.csv("読み込むファイル名.csv")
postscript("出力ファイル名.eps",horizontal=FALSE,onefile=FALSE,paper="special",height=縦のサイズ,width=横のサイズ)
plot(data$最初の項目名,xlab="横軸ラベル",ylab="縦軸ラベル",type="折れ線グラフの種類",lty="線の種類",lwd="線の太さ",col="線の色")
points(data$次の項目名,type="折れ線グラフの種類",lty="線の種類",lwd="線の太さ"col="線の色")
points(data$その次の項目名,type="折れ線グラフの種類",lty="線の種類",lwd="線の太さ"col="線の色")
....
dev.off()

ここで、
軸のラベルはイラストレータ等で後から入れた方が何かと便利なので""にしてしまいます。
折れ線グラフの種類は、階段状にしたければs。普通の折れ線グラフならlとかb。
線の種類はデフォルトが1で実線。2,3,..,6で様々な点線も指定できます。
線の色はblack, blue, red, green, yellow, magentaなどが使えます。
項目が複数あればpointsの行を増やしていくだけ。

パラメータ、点線は何だったっけ?というときは、Rのヘルプ窓がコンソールのウィンドウの右上にありますから、そこでヘルプミーしたら懇切丁寧に教えてくれます。また、便利な事にいろいろなウェブサイトでRのコマンドやパラメータの詳しい解説があります。以下、ほんの一例。

Rの初歩(ググると大抵一番上にヒットするサイト。分かりやすい)
 http://oku.edu.mie-u.ac.jp/~okumura/stat/first.html
バイオインフォマティックス入門(Rに限らずこれは便利!)
 http://bio-info.biz/tips.html#tr
統計解析フリーソフトRの備忘録
 http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html

 このあたり時代は変わりましたね。かつては大学院生の先輩や研究室のスタッフはこういったマメ知識の蓄積で若い人からのささやかな尊敬を勝ち得ていたものですが、ちかごろはiPhoneにすっかりお株を奪われた感もあります。でも、先輩も、スタッフも、寂しいのです。若い学生さんはひとつ大人の対応をということで、ウェブに聞けば2秒で済む事も、研究室の先輩やスタッフに積極的に聞いてあげましょう!

 あと、ここではエア実験でデータを揃えましたが、当然本番で使うデータはqPCRマシンからのデータなり、画像解析から出てきたデータなり、ノートに記された記録なり、ということになります。もともとサイエンスの世界ではエア実験はしないという紳士協定がありましたが、昨今では悲しい事にこのルールを破っているとしか思えない例も少なからず見られるようです。Rの作図に用いたcsvファイルだけでは、「本当に実験やったの?」と、いわれの無い疑いをかけられた時に強く反論できません。でも、大丈夫。そういう時は、csvの作成に使った生データ、元データを出せば何の問題もありません。こういうデータは特定のフォルダに整理してまとめておき、必要に応じて公開する義務を負うのがこれからの標準ルールになっていくのかもしれません。

中川

(この項おしまい。近いうちに、ncRNA+BlogはncRNAネオタクソノミ公式ニュースレターページとして生まれ変わる予定です)


No comments:

Post a Comment