アメリエフのブログ

Amelieff Staff Blog

Rスクリプトで図を描画

Rで、同じような計算や作図を何回も繰り返すときは、
自作関数やRスクリプトを使うと便利です。

Rスクリプトの使い方

今回は作図に注目してご紹介します。

f:id:Fuku-I:20190404165255p:plain

f:id:Fuku-I:20190403192432p:plain

f:id:Fuku-I:20190404170645p:plain

f:id:Fuku-I:20190404153451p:plain

画像提供:アイキャッチャー


Rを起動してコマンドを一つ一つ打つときーーインテラクティブな操作のときは問題なく図を保存することができるのに、
同じコマンドをスクリプトで実行するとうまく描画できないことがあります。

それを回避するため、
Rスクリプトで描画するときも上手く実行できるルールを二つご紹介します!

  • デバイスを開く〜閉じる間に、できるだけ計算をしない

  • 図を保存する関数を使う


①デバイスを開く〜閉じる間に、できるだけ計算をしない

作図をする関数では、ウインドウ表示やファイル保存のための領域「デバイス」を開きます。
pdf()png() 関数などでファイルを開き始めたあと、dev.off() で閉じるまでの間に
計算が多いと、うまく保存されない場合があります。
pdf() 〜 dev.off() 間の計算を最小限にすることでトラブルを回避できます。

間で計算をしている例😢

pdf("result.pdf")  #pdf(デバイス)を開く
object <- subset(object, subset=RNA > 200) #データを切り取って〜
beautifulPlot(object, pt.size=0.5, features=gene)  #作図して〜
dev.off()  #閉じる

できるだけ計算を外でやる例🤗

object <- subset(object, subset=nFeature_RNA > 200) #データの切り取り
plot1 <- beautifulPlot(object, pt.size=0.5, features=gene)   #作図をオブジェクトに代入

pdf("result.pdf")  #pdf(デバイス)を開く
plot(plot1)  #作図しておいたものを貼る!
dev.off()  #閉じる

② 図を保存する関数を使う

安全に図を描画〜保存できる関数を使うとトラブルが起こりにくいです。

そのような関数には、ggplot2 や cowplot パッケージのggsave() があります。
どんな作図用関数にでも一緒に使えるわけではありませんが、ggplotで使用できるオブジェクトを返すものでしたら確実です。

plot2 <- beautifulPlot(object, pt.size=0.5, features=gene)
ggsave(filename = "result2.pdf", plot = plot2)

ぜひお役立てください。