ggplotで箱ひげ図(boxplot)の作り方使い方

Rのtidyverseパッケージに含まれているggplot2ライブラリを活用した箱ひげ図作り方のご紹介です。他にもdplyrscalesパッケージも利用しています。

箱ひげ図の作り方

テストデータを使うとだいぶ潰れますが、軸の範囲調整は後述していますので参考にしてみてください。

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ライブラリを活用して、labelscommaを指定することで軸ラベルの調整ができます。

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)