ggplot2堆叠条形图与组

时间:2015-02-12 15:26:04

标签: r ggplot2 bar-chart

我想创建一个堆叠的条形图,每个时间段内有两个堆叠的列。

我能够用下面的代码实现它,但解决方案有一些局限性。除了paste0用于x轴之外,还有其他方法吗?我可以通过var4以某种方式对数据进行分组来实现它吗?

dd <- data.frame(date = rep(2001:2005,4),
                 var2=rep(c("a","b","c","d"),each=5),
                 var3=rnorm(20,5),
                 var4=rep(c(1,2),each=10))

ggplot(data = dd, aes(x=paste0(date, "/",var4), y=var3, fill=var2)) +
  geom_bar(stat="identity", position="stack")

1 个答案:

答案 0 :(得分:1)

以下是两个选项,两者都不是最佳选择。第一个使用算术而不是粘贴,但实际上与你正在做的非常相似:

ggplot(data = dd, aes(x=date + var4/2 - .75, y=var3, fill=var2)) +
  geom_bar(stat="identity", position="stack")

enter image description here

第二个使用facet生成组。这是通用的,因为您可以更改var4组的数量,这将自动更新。然而,这完全是黑客攻击:

ggplot(data = dd, aes(x=date, y=var3, fill=var2)) +
  geom_bar(stat="identity", position="stack") +
  facet_wrap(~ date + var4, scales="free_x", nrow=1) +
  scale_x_continuous(breaks=dd$date)

enter image description here