📊
【R】beeswarm plotを描きたい
環境
Windows10
R 4.3.1
Rstudio
概要
ゴールはbeeswarm plot(蜂群図)をRで描くこと。
Rの準備
Rにパッケージをインストールする。
install.packages("ggbeeswarm")
データの準備
今回はirisを使用していく。
data <- iris
で簡単にloadできるが、そもそも初心者(私)はデータをどんな形で用意して、どんな風に読み込むのか、からのスタートなのでそこも書いていく。
inputデータの準備に困っていない人は次のセクションまで読み飛ばし推奨。
データの読み込み
irisデータをタブ区切りテキストファイルで出力しておいた。
エクセルで開くとこんな感じ。
これをRで読み込む。
data <- read.table("iris.txt", # ファイル名
header = TRUE, # 1行目は列名として扱う
sep = "\t") # タブ区切り
head(data) # データの確認
こうなってればok。
beeswarm plotを描く
library(ggbeeswarm)
ggplot(data, aes(x = Species, y = Sepal.Width)) +
geom_beeswarm(aes(color = Species), # 種類ごとに色分けする
size = 3, # プロットの大きさを指定
cex = 2, # プロットの散らばり幅を指定
alpha = 0.5) # 不透明度を指定 (0が透明、1が不透明)
beeswarm plotに箱ひげ図を重ねる場合
library(ggbeeswarm)
ggplot(data, aes(x = Species, y = Sepal.Width)) +
geom_boxplot(fill="white")+
geom_beeswarm(aes(color = Species),
size = 3,
cex = 2,
alpha = 0.5)
geom_boxplotとgeom_beeswarmの順番を逆にすると下記のようになってしまうので注意。
X軸の項目以外で色分けしたいとき
2024/5/31追記。
irisだと説明がしにくいので、ggplot2に入っているdiamondsというデータセットを使用する。diamondsは5万個以上のダイヤモンドの価格や他の属性を含むデータセットで、割と使いやすいのだが、なにぶんデータが多すぎることがネック。ということで、今回は最初の100行だけ抜きだして使用することにする。データの形や読み込みの方法は既に上で書いているので割愛。
データの準備
library(ggbeeswarm)
data <- diamonds # dataにdiamondsを読み込む
data <- head(data,100) # 最初の100行だけ抽出
head(data) # データの確認
nrow(data) # 100行抽出できたか確認
こうなってればok。
本番
ggplot(data, aes(x = cut, y = carat)) +
geom_beeswarm(aes(color = color), # colorごとに色分けする
size = 3, # プロットの大きさを指定
cex = 1, # プロットの散らばり幅を指定
alpha = 0.5)
参考
Discussion