はじめに
ggpubrで箱ヒゲ図とバイオリンプロットを書いてみます。 私としては箱ひげ図の方が好きです。バイオリンプロットはなんとなく、KDEでの推定があっているのかわからない時があって、誤解を与えそうな気がするからです。
データの紹介
今回使うのはToothGrowth というデータセットです。 モルモットにビタミンCを投与した際の歯の長さについてのデータセットだそうです。 投与方法が2つあって、オレンジジュースとして投与したデータと、精製したアスコルビン酸で投与したデータがありますが、今回はまとめて表示しています。
処理と結果
箱ヒゲ図
まずは何も考えずに箱ヒゲ図を作ってみます。
data("ToothGrowth") df <- ToothGrowth ggboxplot(df, x = "dose", y = "len", width = 0.8)
これだけだと、味気ないのと、データ点を全て出した方が誠実だと思われるので、その様にしてみます。 doseごとに色を変えるためにcolor = dose データ点を出すためにadd = jitter とすると
ggboxplot(df, "dose", "len", color = "dose", palette =c("blue", "red", "magenta"), add = "jitter", shape = "dose")
となります。
塗りつぶしたい時はcolor = doseではなくfill = doseにすればよく
ggboxplot(df, "dose", "len", fill = "dose", palette ="Blues", add = "jitter", shape = "dose")
となります。こちらの方が良いかもしれません。
さらに、調整を行ってみます。
p<-ggboxplot(df, x = "dose", y = "len", add = "dotplot", add.params = list(size = 0.5, fill = "white"), fill = "dose", palette = "Blues") + theme(aspect.ratio = 1.3) ggpar(p, xlab = "Dose", ylab = "Tooth length", font.main = c(18), font.x = c(18, "bold"), font.y = c(18, "bold"), font.tickslab = c(14,"bold"), legend = "right", legend.title = "Condition")
ここでは、Boxplotにaddでドットプロット (各データ点を白丸で付け加える) を追加しています。ドットプロットの調整はadd.paramsで行っており、丸の大きさと塗りつぶしの色を変更しています。
さらに+theme(aspect.ratio = 1.3) でいい感じの縦横比になるように調整を行っています。
ggparでは軸ラベルを調整しています。こないだの記事の通りです。
バイオリンプロット
上記のグラフは全て、ggboxplotをggviolinにすればバイオリンプロットに変更可能です。
p<-ggviolin(df, x = "dose", y = "len", add = "dotplot", add.params = list(size = 0.5, fill = "white"), fill = "dose", palette = "Blues") + theme(aspect.ratio = 1.3) ggpar(p, xlab = "Dose", ylab = "Tooth length", font.main = c(18), font.x = c(18, "bold"), font.y = c(18, "bold"), font.tickslab = c(14,"bold"), legend = "right", legend.title = "Condition")
やっぱり私は箱ひげのほうが好みですが。
感想
やっぱりggpubrは簡単でいいですね。
しばらくは使ってみようかと思います。ただ、ライブラリにないグラフは結局ggplot2を使う気がするので、ggplot2に習熟する方が楽??
あと、p-valueとかつける方法もあるみたいですが、個人的にはイラレでつける方が結局楽かなと思います。
なのでフローとしては
ミニマルな図をRで作成 → イラレで装飾をたす
みたいな感じですね今のところ。