理系夫婦のうたたねブログ

理系夫婦が好きなことを書いていきます。たまに医学っぽいことを書いていますが、あくまで私見です。

ggpubrで対応のあるデータのプロット

はじめに

最近少しRを使うようになりました。

これまでIgor ProかPythonを使ってグラフを描いていたのですが、Igorは有料、PythonのMatplotlibは使い勝手がイマイチということで、晴れてRデビューです。

ちょっと調べるとRにはggplot2というのがあり、こちらで綺麗にグラフが書けるということでしたが、面倒くさがりな私にはもっとお似合いのggpubrというのがありました。

rpkgs.datanovia.com

ggpubrはggplot2ベースの、簡単にPublication qualityのグラフが作れるモジュールのようです。試しに対応のあるデータで遊んでみました。

データの紹介

データはRに組み込みのサンプルデータでやってみます。今回使うのは

sleep

というデータです。

stat.ethz.ch

こちらは2種類の睡眠薬を投与した時のベースラインからの睡眠量の変化を記録したデータセットになっています。

データの中身 Extra: ベースラインからの睡眠量の変化

Group: 薬剤の種類 (変数名が紛らわしいと指摘されている) 

ID: 生徒のID

データの中身

となっています。

IDが重複していることから分かる通り、こちらは対応のあるデータになっています。

これを図示してみます。

処理と結果

# 初回利用時はインストールのために以下も実行
# install.packages("ggpubr")

library(ggpubr)
data(sleep)

sleep データそのままだとggpubrのggpairが使いにくいので (後述しますが嘘です) 、各グループ1列のデータに変更します。

d <- data.frame(drug1 = sleep$extra[sleep$group==1], drug2 = sleep$extra[sleep$group==2])

データの形変えた後

これで前準備完了です。 プロットのためには、以下です。

ggpaired(d, cond1 = "drug1", cond2 = "drug2") 

最初の引数でデータフレームを指定して、cond1, cond2でグループを指定します。 これで以下のようなグラフが作れます。

簡素なプロット

色をつけたければ、

ggpaired(d,
         cond1 = "drug1",
         cond2 = "drug2",
         color = "condition",
         line.color = "gray",
         palette = "jco")

色をつけたグラフ

colorで箱ヒゲ図の色を変えられます。paletteは以下参照ですが、nature とか Lancetとかやるとそれぞれのジャーナルっぽい色使いのグラフが作れます。

cran.r-project.org

さらに、塗り潰しがしたければcolorのところをfillにすると

ggpaired(d,
         cond1 = "drug1",
         cond2 = "drug2",
         fill = "condition",
         line.color = "gray",
         palette = "jco")

塗り潰し

というような感じ

ちなみに、ドキュメント読んで気づいたけど、別に前処理しなくても以下でも最初の簡素なグラフと同じグラフになる。

ggpaired(data = sleep, x = "group", y = "extra")

ドキュメントはちゃんと読みましょうね。

感想

ggpubrは初めて使ってみたけど、簡単に綺麗なグラフが書けていいなーって印象です。 モジュールにないグラフを書こうと思うと、ちょっと大変なんだろうけど、結構手広くカバーしているみたいなので、便利かなと思いました。 本当はggplot2を修業するのがいいんだろうけどね、、、、

あと、対応のあるデータのプロットって、どうするのが普通なんでしょうか。 ggpairedでは箱ひげがデフォルトでついているけど、論文では単純に線で結んだだけのプロットをよく見る気がする。

箱ヒゲの方がデータ特徴を表現できるけど、ちょっとうるさい印象のグラフになる気もするし、どうなんでしょうかね。 この辺りのセンスがまだまだなので、きちんと身につけていきたいですね。