作図 作図入門

【R】箱ひげ図の作り方

2021年5月2日

概要

  • 箱ひげ図は ggplot() + geom_box()
  • x軸はカテゴリ情報
  • サンプル数が5より少ない時は非推奨

イメージ

箱ひげ図は ggplot() + geom_box()で作成できます。軸や色をggplot()で設定して、箱ひげをgeom_box()で描きます

イメージは以下のような感じです。

具体例

いくつかの箱ひげ図を描く具体例を挙げたいと思います。コードも出力結果も紹介しますので、参考にしてみてください。

基本の箱ひげ図

まずは基本的な箱ひげ図を描く例を紹介します。

# ggplot2パッケージ呼び出し
library(ggplot2)
# 作図
ggplot(data = ToothGrowth, aes(x = supp, y = len)) + 
  geom_boxplot()

箱ひげ図はgeom_boxplot()関数を使う

色を塗る

先ほどの例に色を塗る場合のコードも紹介します。色を塗るには aesでfillを指定します。

# ggplot2パッケージ呼び出し
library(ggplot2)
# 作図
ggplot(data = ToothGrowth, aes(x = supp, y = len, fill = supp)) + 
  geom_boxplot()

fillで色を塗り分ける基準となる列を指定

実際の値もプロットする

箱ひげ図だけだと、実際のデータの分布がイメージしづらいため、サンプル数が多い場合はプロットも重ねた方が親切です。

プロットを重ねる時はgeom_box()の後にgeom_jitter()やgeom_dotplot()を追加します。

geom_jitter()を使って作図する場合は以下のようなコードでグラフを作成できます。

# パッケージの呼び出し
library(ggplot2)
# 作図
ggplot(data = ToothGrowth, aes(x = supp, y = len, fill = supp)) + 
  geom_boxplot() + 
  geom_jitter()

geom_dotplot()を使う場合は以下のコードになります。

# パッケージの呼び出し
library(ggplot2)
# 作図
ggplot(data = ToothGrowth, aes(x = supp, y = len, fill = supp)) + 
  geom_boxplot() + 
  geom_dotplot(binaxis = "y", stackdir = "center")

データの分布も確認する時はgeom_jitter()やgeom_dotplot()を追加する

90度傾ける

カテゴリ数が多くなってくると、横に並べた時にx軸の軸ラベルが確認しにくくなりますし、データも比較しづらくなってきます。

そのような時はグラフ全体を時計回りに90度回転させると良いです。回転させる時はコードに coord_flip()を追加します。

# パッケージの呼び出し
library(ggplot2)
# データ整理
modify_mpg = mpg %>% 
  group_by(manufacturer) %>% 
  mutate(number = n()) %>% 
  filter(number > 5)
# 作図
ggplot(data = modify_mpg, aes(x = manufacturer, y = hwy, fill = manufacturer)) +
  geom_boxplot() + 
  coord_flip()

90度傾ける時はcoord_polor()を使う

注意点

箱ひげ図を作る時は各カテゴリのサンプル数(データ数)に注意しましょう。サンプル数が5未満の時に使用すると誤解を与えてしまう危険があります。

箱ひげ図はそもそも下の図のように5数要約(最小・最大・中央値と第1・第3四分位数の5つの統計量のこと)を表現したグラフです。

そのためサンプル数が5未満だと、そもそも5数要約する意味がなくなりますし、データがないところも無理やり表現することになるため誤解を与える危険性があります。

箱ひげ図を使う時はサンプル数に要注意

-作図, 作図入門