【ggplotメモ4】箱ひげ図を描く

ggplotメモ第4回です。今回はirisデータを使って箱ひげ図を描きたいと思います。irisデータの読み込みについては【ggplotメモ1】をご覧ください。

箱ひげ図は最小値、第1四分位点、中央値(第2四分位点)、第3四分位点、最大値といったデータの要約を示す図です。ここでは、品種ごとの花びらの長さについて描いてみたいと思います。

# 箱ひげ図 
# ggplot2の読み込み 
library( ggplot2 ) 

# グラフの基本設定 
ggplot() + theme_set( theme_classic(base_size = 12, base_family = "Hiragino Kaku Gothic Pro W3") ) 

# 描画 
p <- ggplot( iris, aes( x = Species, y = Petal.Length, fill = Species ) ) + 
  geom_boxplot() + 
  xlab( "品種" ) + 
  ylab( "花びらの長さ" ) + 
  scale_y_continuous( breaks = c( 0, 2, 4, 6, 8 ), limits = c( 0, 8 ) ) + 
  theme( legend.position = "none" ) 
plot( p )

グラフの基本設定を行った後、使用するデータを指定し、geom_boxplot を使って箱ひげ図を描くことを指示します。以降は縦軸と横軸の指定をしています。こうして出来上がったものがこちら。

データを指定する際(描画の1行目)に fill = Species としているので、品種ごとに色がついています。また、黒い丸は外れ値です。

中央値だけじゃなくて平均値も知りたいなという場合は、箱ひげ図の上に平均値をプロットすればいいと思います。

# 描画 
p <- ggplot( iris, aes( x = Species, y = Petal.Length, fill = Species ) ) + 
  geom_boxplot() + 
  stat_summary(fun = "mean", geom = "point", shape = 21, size = 2., fill = "white") + 
  xlab( "品種" ) + 
  ylab( "花びらの長さ" ) + 
  scale_y_continuous( breaks = c( 0, 2, 4, 6, 8 ), limits = c( 0, 8 ) ) + 
  theme( legend.position = "none" ) 
plot( p )

先ほどのスクリプトの geom_boxplot() の後に平均値をプロットしてほしい旨を記しました。こうして出来上がったものがこちら。

平均値が白い丸でプロットされました。

最後に図を保存しておきましょう。

savePlot = function( data, name, dpi, width, height ){ 
  ggsave( plot = data, file = name, dpi = dpi, width = width / dpi, height = height / dpi ) 
} 
savePlot( p, "plot3.png", 300, 1500, 1500 )

 

今回はここまで。ありがとうございました。