假设我有一个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
答案 0 :(得分:2)
尝试:
ggplot(mydf, aes(x=length, y=NOBS))+geom_bar(stat='identity')+facet_grid(~year)
答案 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)