ヴァイオリンプロット

ヴァイオリンプロットは、データの分布などを表現するプロットである。中央値、四分位点のほかに、データの分布密度も同時に確認できるプロットである。ヴァイオリンプロットを利用するために、vioplot パッケージをインストールする必要がある。

install.packages("vioplot", dependencies = TRUE)

vioplot の基本的な使い方

vioplot を利用てヴァイオリンプロットを描く例。ボックスプロットがマゼンダ色に囲まれたグラフになる。マゼンダ色の領域はデータ分布の密度を表す。次のサンプルは正規分布に従うデータであるため、マゼンタ色の領域は中心が広く、両端が狭くなっている。

library(vioplot)

# ベクトル型のデータを複数乱数生成します
x <- rnorm(1000, 10, 1)
y <- rnorm(3000, 13, 3)
z <- rnorm(5000, 15, 5)

# x, y, zのボックスプロットにします
vioplot(x, y, z)
vioplot

項目名を付る場合は names 引数に与える。

vioplot(x, y, z, names = c("X", "Y", "Z"))
vioplot

vioplot の色変更

vioplotboxplot のように色の変更は簡単ではない。項目別に色を塗り分けたいとき、複数回 vioplot を実行してこれらを重ね合わせる。

library(vioplot)

x <- rnorm(100, 100, 90)
y <- rnorm(100, 130, 80)
z <- rnorm(100, 250, 70)

# 描画デバイスを新規に作成する
plot(0, 0, type = "n", xlab = "", ylab = "", axes = FALSE,
     xlim = c(0.5, 3.5), ylim = range(c(x, y, z)))

# 縦軸と横軸を書き加える
axis(side = 1, at = 1:3, labels = c("X", "Y", "Z"))  # x 軸
axis(side = 2)                                       # y 軸

# ヴァイオリンプロットを描く
vioplot(x, at = 1, col = "orange", add = TRUE)     # 横軸 x=1 の所に、x のデータを描く
vioplot(y, at = 2, col = "seagreen", add = TRUE)   # 横軸 x=2 の所に、x のデータを描く
vioplot(z, at = 3, col = "blue", add = TRUE)       # 横軸 x=3 の所に、x のデータを描く
vioplot