【ggplotメモ11】複数のグラフを1つの図にまとめる(その3)

これまで、「複数のグラフを1つの図にまとめる(その1)(その2)」で同じ縦軸の値の図を横に並べたり、格子状に並べたりしてきました。今回は、異なる縦軸の値の図を並べてみようと思います。

使うデータはirisです花びらの長さの棒グラフと花びらの幅の棒グラフを横に並べたいと思います。

まず、それぞれの棒グラフを作りましょう。まず、花びらの長さの棒グラフがこちら。描き方は以前の記事と同じです。

# 使用するパッケージの読み込み 
library( ggplot2 ) 

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

# 描画 
b <- ggplot( iris, aes( x = Species, y = Petal.Length, fill = Species ) ) + 
  geom_bar( position = position_dodge( width = .9), stat = "summary", fun = "mean", alpha = .5 ) + 
  geom_point( aes( color = Species ), size = .2, shape = 21, stroke = 1 ) + 
  stat_summary( fun.data = "mean_se", geom = "errorbar", width = .2) + 
  xlab( "品種" ) + 
  ylab( "花びらの長さ" ) + 
  scale_y_continuous( breaks = c( 0, 2, 4, 6, 8 ), limits = c( 0, 8 ) ) + 
  theme( legend.position = "none" ) 

plot( b )

次に、同じ要領で花びらの幅のグラフを作ります。

b2 <- ggplot( iris, aes( x = Species, y = Petal.Width, fill = Species ) ) + 
  geom_bar( position = position_dodge( width = .9), stat = "summary", fun.y = "mean", alpha = .5 ) + 
  geom_point( aes( color = Species ), size = .2, shape = 21, stroke = 1 ) + 
  stat_summary( fun.data = "mean_se", geom = "errorbar", width = .2) + 
  xlab( "品種" ) + 
  ylab( "花びらの幅" ) + 
  scale_y_continuous( breaks = c( 0, 0.5, 1.0, 1.5, 2.0, 2.5 ), limits = c( 0, 2.7 ) ) + 
  theme( legend.position = "none" ) 

plot( b2 )

これら2つのグラフを横に並べるために、ggplotとは別のパッケージを使います。「gridExtra」です。

# 使用するパッケージの読み込み 
library( gridExtra ) 

# bとb2を2列に並べる 
b3 = grid.arrange(b, b2, ncol = 2)

そして、このように「grid.arrange()」を使って横に2つ並べてね、と指示します。その結果、

横に並べることができました。グラフの横幅がキュッとなっているのは、この図を保存するときのサイズを他のグラフと同じサイズ(1,500 ×1,500)にしているからです。

以上、縦軸の値が異なるグラフを横に並べた図を作る方法でした。