我正在尝试使用ggplot2将Months with Year作为子组绘制到图表中。也就是说,看起来像这样:
回答了类似的问题here,但我希望有一种更好的方法可以避免对轴标签进行硬编码。
数据帧的R代码如下:
set.seed(100)
df = data.frame( Year = rep(c(rep(2013, 12), rep(2014, 9)), 2)
, Month = rep(rep(month.abb, 2)[1:21], 2)
, Condition = rep(c("A", "B"), each=21)
, Value = runif(42))
作为奖励,我希望学习如何在不引入新变量的情况下逐年绘制平滑总计(如果可能的话?)。如果我使用dplyr
到summarise
和group_by
年和月,则不会保留月份的顺序。
注意,月份现在从4月开始:
group_by(df, Year, Month) %>% summarise(total = sum(Value)) %>% head
Source: local data frame [6 x 3]
Groups: Year
Year Month total
1 2013 Apr 0.4764846
2 2013 Aug 0.9194172
3 2013 Dec 1.2308575
4 2013 Feb 0.7960212
5 2013 Jan 1.0185700
6 2013 Jul 1.6943562
答案 0 :(得分:1)
试试这个,
df$Month <- factor(df$Month, levels=month.abb)
p <- ggplot(df, aes(Month, Value, colour=Condition, group=Condition))+
facet_grid(.~Year) + geom_line() + theme_minimal()
library(gtable)
g <- ggplotGrob(p)
g2 <- g[-3,] %>%
gtable_add_rows(heights = g$heights[3], nrow(g)-3) %>%
gtable_add_grob(g[3,], t = nrow(g)-2, l=1, r=ncol(g))
grid.newpage()
grid.draw(g2)