Rでggplot2:箱ひげ図を作成「geom_boxplot」コマンド

ggplot2
スポンサーリンク

「ggplot2」パッケージで箱ひげ図を作成する方法の紹介です。箱ひげ図はBoxplotとも呼ばれ、データ分布を確認するのに大変便利な方法です。基本的な使い方の他にドットプロットを追加するコマンドを紹介します。

スポンサーリンク

「ggplot2」のインストールと読み込み

「tidyverse」をインストールして「ggplot2」パッケージを利用するのが簡単です。

# パッケージのインストール
install.packages("tidyverse")

# パッケージの読み込み
library("tidyverse")

データ例を作成

以下のコマンドを実行してください。

# 例
set.seed(1234)
Box_data <- data.frame(x = sample(LETTERS[c(1, 5, 8)],
                                  size = 100, replace = TRUE),
                       y = sample(1:100, size = 100,
                                  replace = TRUE),
                       Group = sample(LETTERS[2:3],
                                      size = 100,
                                      replace = TRUE))

基本的なプロット

「ggplot」コマンドに「geom_boxplot」コマンドを追加することで作図が可能です。

# 設定なしでプロット
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot()

体裁の設定例

外れ値プロットの書式設定、ノッチの設定、塗色、平均値をプロットし線でつなげる、ドッドプロットを追加するなどの例です。

# 外れ値の書式設定:outlier.XXXXオプション
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot(
    # シンボル線色;初期値:NULL
    outlier.color = "black",
    # シンボル塗色;初期値:NULL
    outlier.fill = "red",
    # シンボル種類;初期値:19
    outlier.shape = 22,
    # シンボルサイズ;初期値:1.5
    outlier.size = 3,
    # シンボル線サイズ;初期値:0.5
    outlier.stroke = 1.5,
    # シンボル塗透明度;初期値:NULL
    outlier.alpha = 1)

# ノッチを設定する:notchオプション,notchwidthオプション
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot(
    # ノッチ設定;初期値:FALSE
    notch = TRUE,
    # ノッチサイズ;初期値:0.5
    # 1> notchwidth >0で絞り
    # 1< notchwidthで膨張
    notchwidth = 1.2)

## 塗色の設定:fillオプション
# xで塗色を分ける
# 凡例の表示設定:show.legendオプション
ggplot(Box_data, aes(x = x, y = y, fill = x)) +
  geom_boxplot(show.legend = FALSE)

# groupで塗色を分ける
ggplot(Box_data, aes(x = x, y = y, fill = Group)) +
  geom_boxplot()

# 好みの色はscale_fill_manualコマンドを使用する
ggplot(Box_data, aes(x = x, y = y, fill = x))+
  geom_boxplot() +
  scale_fill_manual(values = c("A" = "blue", "H" = "yellow"))

## Y軸の値で参考線を追加する
# geom_hlineコマンドを追加する
ggplot(Box_data, aes(x = x, y = y, fill = x)) +
  geom_boxplot(show.legend = FALSE) +
  geom_hline(color = "red", alpha = 1,
             linewidth = 1,
             yintercept = mean(Box_data$y),
             show.legend = NA) 

## 平均値にシンボルをプロットし線でつなげる
# stat_summaryコマンドを使うのが簡単です
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot() +
  # 平均値にシンボルをプロット
  stat_summary(fun.y = "mean", geom = 'point',
               color = "red", shape = 16, size = 8) +
  # 平均値を線でつなげる
  stat_summary(aes(group = 1),
               fun.y = "mean", geom = 'line',
               color = "red", size = 2)

## プロットを横方向にする
# coord_flipコマンドを使用します
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot() +
  # 平均値にシンボルをプロット
  stat_summary(fun.y = "mean", geom = 'point',
               color = "red", shape = 16, size = 8) +
  # 平均値を線でつなげる
  stat_summary(aes(group = 1),
               fun.y = "mean", geom = 'line',
               color = "red", size = 2) +
  # 横方向にする
  coord_flip()

## ドットプロットを追加する
# geom_dotplot()コマンドを使用します
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot() +
  # 平均値にシンボルをプロット
  geom_dotplot(binaxis = "y", stackdir = "center",
               binwidth = 2.5, fill = "red")

## グループに分けてプロット
# fillにグループを設定する
ggplot(Box_data, aes(x = x, y = y, fill = Group)) +
  geom_boxplot()

# facet_wrapコマンドを使用する
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot() +
  facet_wrap(~Group)

## テキストを追加する
# coord_flipコマンドを使用します
ggplot(Box_data, aes(x = x, y = y)) +
  geom_boxplot() +
  annotate("text", x = 1, y = 110,
           label = "KARADA-GOOD", color = "red")

少しでも、あなたの解析に役に立ちますように!

タイトルとURLをコピーしました