R を使った箱ひげ図 boxplot の作り方

UB3/informatics/r/boxplot

このページの最終更新日: 2024/02/05

  1. 概要: 箱ひげ図 boxplot とは
  2. R の boxplot() 関数

広告

概要: 箱ひげ図 boxplot とは

箱ひげ図 boxplot とは、箱 box とそこから伸びる髭 whisker で、分布を表した図である (図、Public domain)。

基本的な図の見方は以下の通り。

  • 中央の線は、平均値 mean でなく 中央値 median
  • 箱は四分位線。つまり、中央値からプラスマイナス 25% までの値が含まれる範囲。言い換えれば、全体のデータの 25 - 75% が箱の中に入る。
  • ひげが表す範囲は、箱ひげ図を作成するプログラムによって違うので注意を要する。
R ボックスプロット

R の boxplot では、ひげはオリジナルの R スクリプトで以下のように指定されている (1)。IQR は nterquartile range の略である。

  • upper whisker = min(max(x), Q_3 + 1.5 * IQR)
  • lower whisker = max(min(x), Q_1 – 1.5 * IQR)

したがって、Figure legend に書く説明は、たとえばこのようになる (2)。

The ends of the whiskers represent the lowest datum still within 1.5 interquartile range (IQR) of the lower quartile, and the highest datum still within 1.5 IQR of the upper quartile.

R の boxplot() 関数

barplot() 関数で作る棒グラフ と同じように、組み込みデータセット chickwts を使って解説する。これはさまざまな餌を与えられたニワトリの体重である。以下のような形のデータである。

R chickwt データセット

barplot のページでは、ここからデータを取り出してベクターに保存してからグラフを書いたが、今回は直接 boxplot の中に入れてみる。詳細は データフレームの取り扱い などを参照のこと。

boxplot(chickwts[1:10,]$weight, chickwts[11:22,]$weight, chickwts[23:36,]$weight, names = c("horsebean", "linseed", "soybean"), ylab = "Weight")


これで、上に示した boxplot が出力されるはずである。

R ボックスプロット

オプションは、ほかの多くの図と共通のものが多い。網羅していないが、これまで使ったことがあるものは以下の通り。

xlim, ylim

x 軸および y 軸の範囲を設定。ylim = c(0, 300) のように使用。

xlab, ylab

X 軸および Y 軸のラベルを追加。

names

グループの名前を X 軸に追加。names = c("horsebeam", "linseed") のように文字列のベクターを使う。

ラベルを縦にしたいときは、las=2 という記述を追加する。

以前は names.arg と書いていたが、R ver. 4.0.4 では動かなかった。boxplot でも使える。

col

バーの色を指定する。col = c("black", "white") のように文字列のベクターを使う。

width

バーの太さを指定。グループごとに指定するので、例えば群が 2 つあるなら width = c(1, 1) のように指定しなければならない。width = c(1, 2) のように、太さを変えることもできる。

cex.lab

cex.lab = 2 のようにして、X および Y 軸ラベルのフォントサイズを変更。

cex.axis

cex.axis = 2 のようにして、X および Y 軸目盛のフォントサイズを変更。names でグループを指定したときには、グループ名は軸ラベルでなく目盛なので、これで大きさを調整する。


広告

References

  1. whisker of boxplot. Link: Last access 2021/06/16.
  2. Barcelo et al., 2011a. Oropharyngeal examination to predict sleep apnea severity. Arch Otolaryngol Head Neck Surg, 137, 990-996.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。