R の stripchart の発展形 beeswarm plot とboxplot とカーネル密度推定

観測点をグループ毎に示す場合の R を使ったグラフのお話しです。
stripchart では、ズラしの指定をすると中心が合わなくなります。
これを悲しんでいた人は、 beeswarm パッケージの plot を使いましょう。
seaborn の Gallery にある Horizontal boxplot with observations のような図を描きます。
R で beeswarm plot 描いている日本語例が少ないように思いますので、今回は特例で、画像とオプションの設定例を付けてあります。 不勉強なためか、Prism や SPSS あたりをもってこないといけないといけないかと思い込んでいました。反省です。

さて、まずは、インストールしていない人はインストールしましょう。

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

R に初めから入っている iris データセットを例にとります。iris の内容の説明は、irisの正体に詳しくあります。まずは、読み込みましょう。

data(iris)

次に、普通の boxplot から描きます (今回は、boxplot でも plot でも同じ図が出るはずです)。

boxplot(data=iris, Sepal.Length~Species, boxwex=0.3, border="gray20",col="gray80", ylim=c(0,8))
原点が入るように、y軸を設定しています。

次に、beeswarm plot を描いてみましょう。

library(beeswarm)
beeswarm(data=iris, Sepal.Length~Species, cex=1, spacing=1, ylim=c(0,8))
これは下記の初めの図となります。

次に、これに、boxplot を重ねてみましょう。

boxplot(data=iris, Sepal.Length~Species, boxwex=0.3, border="gray20",col="gray80", ylim=c(0,8))
beeswarm(data=iris, Sepal.Length~Species, cex=1, spacing=1, ,add=T)
これが2番目の図です。

最後に、カーネル密度推定を重ねてみます。今回は、violinplot のお友達の beanplot のパッケージを使います。
インストールしていない人は、インストールしましょう。

install.packages("beanplot", dependencies = TRUE)
つづいて、
library(beanplot)
beanplot(iris$Sepal.Length~iris$Species, maxstripline = 0, beanlinewd = 0, col="gray90", border="gray90", ylim=c(0,8))
beeswarm(data=iris, Sepal.Length~Species, cex=1, spacing=1, add=T)

とても奥深いですね。

B! LINE