Rでboxplotとbeeswarmを重ねて表示
boxplotに元データの点を重ねたい
蜂群図(ほうぐんず)というらしい
こちらのサイトを参考にさせてもらった
Rで箱ひげ図と蜂群図を合体させる | Takuro FUJITA@NIT, Fukui College
ビースウォーム | 値を点としてグラフ上にプロットされる
https://ninosanpo.hatenablog.com/entry/2018/08/03/141738
24 October 2019追記
ここも詳しい
RPubs - 箱ひげ図の書き方
追記ここまで
12 December 2020 追記
記事を追加した
mecobalamin.hatenablog.com
追記ここまで
beeswarmのライブラリをインストールする
コマンドラインからは以下のようにする
install.packages("beeswarm", dependencies = TRUE)
または
[パッケージ] -> [パッケージのインストール...]
からインストールする
Irisのデータを使う
mecobalamin.hatenablog.com
Data.Iris <- iris[1:4]
グラフの作成
setwd()にファイルを保存するディレクトリのパスを記入する
library(beeswarm) setwd("path\\to\\pngfile") png("boxplot_iris.png", width = 800, height = 400) par(mar = c(5, 5, 1, 1)) boxplot(Data.Iris, ylim=c(0,8), ylab = "length or width") beeswarm(Data.Iris, add = TRUE, col = c("red", "blue", "green", "magenta"), pch = 20) dev.off()
結果はこうなった
26 September 2019追記
irisのデータは3種類のirisのデータなので点を色分けするコードを書いた
library(beeswarm) setwd("path\\to\\pngfile") png("boxplot_iris.png", width = 800, height = 400) par(mar = c(5, 5, 1, 1)) Data.Iris <- iris Data.Iris[,6:9] <- iris[,5] Point.Color <- c("#9bbb5960", "#c0504d60","#4f81bd60") Species.List <- as.character(unique(Data.Iris$Species)) for(i in 1:3){ Data.Iris[6:9] <- sub(Species.List[i], Point.Color[i], Data.Iris[,6]) } colnames(Data.Iris)[6:9] <- "Color" boxplot(Data.Iris[1:4], ylim=c(0,8), ylab = "length or width", outline = FALSE) beeswarm(Data.Iris[1:4], add = TRUE, pwcol = Data.Iris[6:9], pch = 20) dev.off()
結果はこれ
pwcolで色指定するが
データの列と色を指定する列を
1対1で対応させる必要あり
データ4列に対して色を指定する列も4列必要
同じカラーコードの繰り返しなんだけど。
あまりスマートでないの書き直したいが。。。
グラフに使うデータはこんな感じ
4種のデータごとに色の組み合わせを変えられる
> head(Data.Iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species Color Color Color Color 1 5.1 3.5 1.4 0.2 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960 2 4.9 3.0 1.4 0.2 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960 3 4.7 3.2 1.3 0.2 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960 4 4.6 3.1 1.5 0.2 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960 5 5.0 3.6 1.4 0.2 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960 6 5.4 3.9 1.7 0.4 setosa #9bbb5960 #9bbb5960 #9bbb5960 #9bbb5960
12 February 2020 追記
Data.Irisの型はdata.frame
追記ここまで