ggplot:生成一系列直方图

时间:2014-12-04 17:13:16

标签: r ggplot2

假设我有一个data.table,其中包含对两个维度的观察,一个时间和一个组标识符。 (最后的样本数据)

我可以使用

获取任何一年的直方图
ggplot(matches[year = someYear], aes(x=length)) + geom_bar()

但是我怎么能每年生成一个子图?我是否需要每年循环,还是有更方便的方式?

示例数据:

    year length NOBS
 1: 1993      1   69
 2: 1993      2   31
 3: 1993      3   26
 4: 1993      4   16
 5: 1993      5   16
 6: 1993      6   14
 7: 1993      7   11
 8: 1993      8    6
 9: 1993      9    5
10: 1993     10    6
11: 1993     11    3
12: 1993     12    1
13: 1993     13    1
14: 1993     14    4
15: 1993     18    7
16: 1994      1   24
17: 1994      2    2
18: 1994      3    3
19: 1994      4    2
20: 1994      5    3

3 个答案:

答案 0 :(得分:2)

尝试:

ggplot(mydf, aes(x=length, y=NOBS))+geom_bar(stat='identity')+facet_grid(~year)

enter image description here

答案 1 :(得分:0)

您可能希望使用facets,请检查:?facet_grid

答案 2 :(得分:0)

cookbook-r处有一个很好的multiplot函数,可以接受ggplots的列表。您可以单击链接以获取代码。因此,您可以简单地循环使用多年并将图表存储在列表中以进行绘图。

plots <- list()
years <- unique(matches$year)
for(i in 1:length(unique(matches$year))){
  plots[[i]] <- ggplot(matches[which(matches$year==years[i]),], aes(x=length)) + geom_histogram(binwidth=1)
}

multiplot(plotlist=plots)