R: swarm plot の作り方

UB3/informatics/r/swarm_plot_r

このページの最終更新日: 2024/02/07

  1. 概要: バイオリンプロットとは
  2. vioplot 関数によるバイオリンプロットの作り方
  3. ggplot によるバイオリンプロットの作り方

広告

概要: バイオリンプロットとは

バイオリンプロットは、データの分布を確認できる以下のような図をいう。クラシックな棒グラフ + エラーバー の図に比べて、どこにデータが多く分布しているのかを見られるのがメリットである。

Violin プロット

以下のように ボックスプロットbeeswarm plot と重ね合わせる方法もあり、この場合にはさらに多くのパラメーターを含められるようになる。

Violin プロット

vioplot 関数によるバイオリンプロットの作り方

R の vioplot パッケージを使う (1)。インストールしていなければ、まず install.packages("vioplot") を行う。library(vioplot) で読み込んでから、関数 vioplot を使用。

Syntax はシンプルで、2 つのベクター A と B がある場合には vioplot(A, B) のようにする。

library(vioplot)
A = rnorm(100, 5, 1)
B = rnorm(100, 8, 1)
vioplot(A, B)

デフォルトで box plot も表示するようになっているようで、以下のように多くのパラメーターが含まれる。

  • 横幅はデータ数
  • 白い点が中央値
  • 黒い棒の上端が 75%、下端が 25% 四分位点
Violin プロット

軸ラベル、色などは、R 組み込み関数と同様にして指定できるものが多い。

vioplot(A, B, names = c("Group 1","Group 2"), col = "blue", ylab = c("Unit"))

Violin プロット

ggplot によるバイオリンプロットの作り方

まず、ggplot で violin plot を描く関数は geom_violin である (3)。input data の形式が特殊なので、文献 3 などを参考に作ってみる。

まずはデータセットの作成。

A = rnorm(100, 5, 1)
B = rnorm(100, 8, 1)
df = data.frame(A, B)

df は以下のようになる (一部のみ表示)。このデータフレームや、ベクトルの A, B をそのまま input にできれば便利なのだが、これは形式を変換する必要がある。

Violin プロット

tidyverse パッケージ に含まれる pivot_longer() 関数を使う。これによって、データが次のように並べ替えられる。

df.long <- pivot_longer(df, cols = A:B, names_to = "Categories", values_to = "Values")

Violin プロット

並べ替えられたデータを ggplot の input とする。

ggplot(df.long, aes(x = Categories, y = Values))+
geom_violin()+
theme_classic()

Violin プロット
広告

References

  1. ヴァイオリンプロット. Link: Last access 2022/08/09.
  2. RDocumentation.Link: Last access 2022/12/02.
  3. 【R初心者向け】ggplot2でバイオリンプロット(violin plot)を描く.Link: Last access 2023/06/20.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。