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

以前、複数のグラフ(花の種類ごとのグラフ)を横に並べる方法を書きました。今回は、横にではなく、格子状に並べる方法を書きたいと思います。

気温のデータを使っていきます。データの中身はこんな感じでした。

> head( airquality ) 
  Ozone Solar.R  Wind Temp Month Day 
1    41     190   7.4   67     5   1 
2    36     118   8.0   72     5   2 
3    12     149  12.6   74     5   3 
4    18     313  11.5   62     5   4 
5    NA      NA  14.3   56     5   5 
6    28      NA  14.9   66     5   6

このデータから、毎日の気温の変化を月ごとに示してみましょう。

# 折れ線グラフ 
# Environmentにairqualityを置いておく 
data( "airquality" ) 
# Valuesとして読み込まれる 
str( airquality ) 
# ValuesからDataになる 
head( airquality ) 

# ggplot2の読み込み 
library( ggplot2 ) 

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

l3 <- ggplot( airquality, aes( x = Day, y = Temp, group = 1 ) ) + 
  facet_wrap( ~ Month ) + 
  stat_summary( fun = mean, geom = "line", size = 0.5 ) + 
  stat_summary( fun.data = "mean_se", geom = "errorbar", size = 0.5, width = 0.1) + 
  stat_summary( fun = mean, geom = "point", size = 2 ) + 
  scale_shape_manual( values = c( 1 ) ) + 
  xlab( "日" ) + 
  ylab( "気温(華氏)" ) + 
  coord_cartesian( ylim = c( 32, 95 ) ) 

plot( l3 ) 

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

月ごとのデータを格子状に並べるために、「facet_wrap( ~ Month )」と書いているのがポイントです。横にただ並べるだけで良い場合は、「facet_grid()」でしたね。

また、「stat_summary( fun.data = “mean_se”, geom = “errorbar”, size = 0.5, width = 0.1)」と書いてありますが、各日のデータは1つずつしかないので、エラーバーは表示されません。ここら辺は以前折れ線グラフを作ったときの書き方と同じにしてあります。

このように書いて、出来上がったものがこちらです。

5月から9月の気温のデータを、月ごとに分けて示すことができました。ちなみに、横にいくつ、縦にいくつ並べるかは、データの数によっていい感じになるように決めてくれます。便利。

以上です!