Rのtidyverseパッケージに含まれているggplot2ライブラリを活用した箱ひげ図作り方のご紹介です。他にもdplyrやscalesパッケージも利用しています。
箱ひげ図の作り方
テストデータを使うとだいぶ潰れますが、軸の範囲調整は後述していますので参考にしてみてください。
library(tidyverse)
library(scales)
d <- read.csv("https://raw.githubusercontent.com/maruko-rosso/datasciencehenomiti/master/data/ShopSales.csv")
theme_set(theme_bw())
#### ggplot:箱ヒゲ図 #####
d <- d %>%
mutate(sales = price * quantity)
# ヒストグラムの作成
d %>%
ggplot(aes(y = sales)) +
geom_boxplot()
箱ひげ図の作り方②
今回はx軸にstaffを指定してスタッフ別の売上を分析しています。
# ヒストグラムの色分け
d %>%
ggplot(aes(x = staff, y = sales,fill = staff)) +
geom_boxplot() +
scale_fill_brewer(palette='Set1')
軸の値調整、軸ラベル
scalesライブラリを活用して、labelsにcommaを指定することで軸ラベルの調整ができます。
d %>%
ggplot(aes(x = staff, y = sales,fill = staff)) +
geom_boxplot() +
scale_fill_brewer(palette='Set1') +
ggtitle("set titele") +
scale_y_continuous(n.breaks = 10, labels = comma, limits = c(0,1000000))
facetを利用して分析軸の追加
facetを利用してもうひとつ分析軸を追加しています。また、ラベルが潰れてしまうため、theme(axis.text.x = element_text(angle = 90)) +で調整しています。
d %>%
ggplot(aes(x = staff, y = sales,fill = staff)) +
geom_boxplot() +
scale_fill_brewer(palette='Set1') +
ggtitle("set titele") +
scale_y_continuous(n.breaks = 10, labels = comma, limits = c(0,1000000)) +
theme(axis.text.x = element_text(angle = 90)) +
facet_wrap( . ~ shop)
jitter との組み合わせ
箱ひげ図をみるときに件数が少ないときにも形がみえることがあります。このため、geom_jitter()を追加してカバーしてみています。
d %>%
ggplot(aes(x = staff, y = sales,fill = staff)) +
geom_boxplot() +
geom_jitter() +
scale_fill_brewer(palette='Set1') +
ggtitle("set titele") +
scale_y_continuous(n.breaks = 10, labels = comma, limits = c(0,1000000)) +
theme(axis.text.x = element_text(angle = 90)) +
facet_wrap( . ~ shop)