ggplot2パッケージ(tidyverseパッケージに含まれている)のdiamondsデータを使う。
> library(tidyverse) > head(diamonds) # A tibble: 6 x 10 carat cut color clarity depth table price x y z <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> 1 0.31 Good E SI1 63.3 55 544 4.33 4.36 2.75 2 0.8 Very Good H VS2 59.1 59 2953 6.02 6.07 3.57 3 0.78 Very Good H VS1 61.9 57.1 2854 5.87 5.95 3.66 4 0.3 Ideal G VVS2 61.5 57 684 4.29 4.33 2.65 5 1.5 Good F SI2 59.7 61 8181 7.39 7.44 4.43 6 1.2 Very Good E SI2 61.4 58 6130 6.81 6.88 4.2
carat
:重さ(カラット)cut
:カットの質(5段階)color
:色(7段階)clarity
:透明度(8段階)depth
:table
:最も幅広い部分に対する最上部の幅price
:値段(USD)x
,y
,z
:それぞれ長さ・幅・高さ(mm)
geom_boxplot( )を使って箱ヒゲ図を描く
x
に離散変数(cut
)、y
に連続変数(carat
)を指定するとカテゴリー別の箱ヒゲ図が横方向に並ぶ。
x, yを入れ替えると水平方向の箱ヒゲ図が縦方向に並ぶ。
ここでは箱の色もcut
別に塗り分けるようにしたが、見た目華やかになる以外の意味はない(要因による塗り分けを指定する場合はaes()
内に入れる書き方は知っておく方がよいかも)。
ggplot(data = diamonds, aes(x = cut, y = carat)) + geom_boxplot(varwidth=TRUE, notch=TRUE, notchwidth = 0.5, aes(fill = cut))
箱の形状に関する指定
notch=TRUE
とすると、箱の真ん中の線(通常はmedian)にノッチができる。notchwidth
で切れ込み具合を指定できる。例えばnotchwidth=0.2
とすると箱の20%幅までノッチが入る。1より大きい値を指定すると箱の幅よりはみ出る。varwidth=TRUE
とすると、箱の幅をサンプルサイズの平方根に比例させる
箱の色・線種に関する指定
fill
:箱を塗りつぶす色alpha
:箱の透過性。0(完全透明)から1(完全不透明)の間で指定。colour
:箱の枠線の色linetype
:箱の枠線の種類(プロットマーカーや線の種類を変更する [R] - ねこすたっと)size
:箱の枠線の太さ
外れ値に関する指定
outlier.colour
,outlier.stroke
:プロットの線の色・太さoutlier.fill
,outlier.alpha
:プロットの塗りつぶしの色、透過性outlier.shape
:プロットの形。=NA
とするとプロットを描かない(見えなくしただけ)outlier.size
:プロットの大きさ
※ プロットマーカーについて以前まとめた記事があります(2022-07-17 追加)
geom_violin( )でバイオリンプロットを描く
耳慣れないプロットだが、要は中心線の両側に密度プロットを描いたもの。
scale
でそれぞれのバイオリンの幅をどのように決めるか指定する。
"area"
:面積が同じ(デフォルト)
"width"
:最大部分の幅が同じ
"count"
:最大部分の幅がサンプルサイズに比例(少ないカテゴリーの分布はつぶれて分かりにくくなるかも)
また、draw_quantiles
でパーセンタイルを示す線を追加できる。
ggplot(data = diamonds, aes(cut,carat)) + geom_violin(scale="area", draw_quantiles = c(0.25,0.5,0.75))
色・線種に関する指定については箱ヒゲ図を参照。
stat_*( )との対応
次にあげるような箱ヒゲ図を描く元となるデータはstat_boxplot()
で計算される。
lower
,middle
,upper
:箱の下端、中央線、上端ymin
,ymax
:ヒゲの下端、上端
バイオリンプロットで使われる値はstat_ydensity()
で計算される。
おわりに
- 箱ヒゲ図で使われているymin, ymaxはリボンプロットやエラーバーを描くときにも出てくる
- ネコ用品にはついつい財布の紐が緩みますね
参考資料
- 本家ページ:
geom_*
とstat_*
の関係が詳しくまとめられています