はじめに
論文において図は非常に大事で、読む側としては綺麗な図ほど目につき、時間がない時は図だけからその論文の内容を理解しようとします。
データの整理自体はExcelを利用する人も多いと思いますが、Excelの図は味気ないですし、格好良いとは言えません(※個人的感想)。
ビジュアル的に格好良いと言われているのが「R」の「ggpot2」です。
「R」はフリーソフトであり、とても使いやすいです。
今回は「ggplot2」による図の作成についてまとめました。
Rのインストール
私は普段からPythonをJupyter labで使用しているので、RもJupyter labで作動するように環境を構築します。
hl@MacBook ~ % conda create -n r_env python=3.7
hl@MacBook ~ % conda activate r_env
まずは必要そうなものをインストール
※Python 3.9、3.8で作るとエラーになりました。PythonとRのバージョン依存関係とかある?
hl@MacBook ~ % conda install -c r r r-irkernel r-essentials rstudio
ここで、「-c r」は「Anaconda cloud」のチャンネルを指定しています。次の「r」が「R言語」自体。「r-irkernel」が、jupyterにR言語を認識させる。「rstudio」でRstudioをインストールします。
hl@MacBook ~ % conda install jupyter jupyterlab
Jupyter labもインストールし、ここまできたら、Jupyter labを起動してそこから始められます。
※と思ったらエラー出まくりで、どうやら自分の場合xcodeのinstallが必要だったよう
hl@MacBook ~ % xcode-select --install
これでめでたく使えます。アップグレードしたらxcode消えるのか?
ggplot2のを使ってみる〜基本編〜
r-essentialsで「ggplot2」もインストールされているのでそのまま使えます。
library(ggplot2)
同じく、「iris」のデータも入っているので、irisをプロットしてみます。
g <- ggplot(data=iris, mapping=aes(x=Sepal.Width, y=Sepal.Length, color=Species))
g <- g + geom_point()
plot(g)
ここで、「geom_point()」は散布図でプロットするということで、ggplotにこれをプラスすることで描画できます。
次は、適当なデータを作ってプロットしてみます。身長と体重を例にしています。
x <- data.frame(
weight = c(55, 50, 84, 42, 65, 75, 49, 58, 61),
height = c(160, 172, 187, 154, 148, 176, 164, 171, 174)
)
g <- ggplot(data=x, mapping=aes(x = weight, y = height))
g <- g + geom_point()
plot(g)
さらに回帰直線も描いてみます。
g <- g + geom_smooth(method = "lm")
plot(g)
lmはLinear Modelです。
ggplot2を使ってみる〜実践編〜
現実的にはcsvファイルからデータを読み込む形とします。
ここでは、わかりやすくするためにirisのデータを使います
下記からダウンロードさせてもらいました。
g <- ggplot(x, aes(x=sepal.width, y=sepal.length, color= variety))
g <- g + geom_point(size = 3, alpha = 0.7)
g <- g + theme_classic(base_size=15, base_family = "Helvetica", base_line_size = 1)
g <- g + labs(title="iris", x="Sepal.Width", y="Sepal.Length", colour = "Species", size=20, face="bold.italic")
plot(g)
ggsave(file="point_plot.png", width = 5, height = 5)
1行目はこれまでと同様です。
2行目も同様ですが、散布図のポイントの「size」でサイズを指定して、「alpha」で透過性を設定しました。
3行目で図のスタイルを指定します。デフォルトがtheme_gray()です。ここでは自分的におすすめなtheme_classicで表示しました。「base_size」が文字サイズ、「base_family」が文字のフォント、「base_line_size」が線のサイズです。
4行目がラベルの設定です。
そのほかのテーマもお示ししておきます。お好みでお使いください。
今回はここまでとします。次回以降でさらにアレンジを加えていきます。