ggplot为什么酒吧没有堆叠?

时间:2016-12-06 16:11:41

标签: r ggplot2

我想创建一个堆积条形图但是我的输出显示重叠条而不是堆叠。我怎么能纠正这个?

#Create data
date <- as.Date(rep(c("1/1/2016", "2/1/2016", "3/1/2016", "4/1/2016", "5/1/2016"),2))
sales <- c(23,52,73,82,12,67,34,23,45,43)*1000
geo <- c(rep("Western Territory",5), rep("Eastern Territory",5))
data <- data.frame(date, sales, geo)

#Plot
library(ggplot2)
ggplot(data=data, aes(x=date, y=sales, fill=geo))+
    stat_summary(fun.y=sum, geom="bar") +
    ggtitle("TITLE")

绘图输出: GGPLOT stacked bar graph

从下面的汇总表中可以看出,它确认了条形图没有堆叠:

>#Verify plot is correct
>ddply(data, c("date"), summarize, total=sum(sales))
    date  total
1 0001-01-20  90000
2 0002-01-20  86000
3 0003-01-20  96000
4 0004-01-20 127000
5 0005-01-20  55000

谢谢!

2 个答案:

答案 0 :(得分:3)

您必须在position="stack"中加入statSummary

stat_summary(position="stack",fun.y=sum, geom="bar")

答案 1 :(得分:3)

或者,由于您的数据已经汇总,您可以使用geom_colgeom_bar(stat = "identity")的简写):

ggplot(data=data, aes(x=date, y=sales, fill=geo))+
  geom_col() +
  scale_x_date(date_labels = "%b-%d")

产地:

enter image description here

请注意,我更改了日期格式(通过将format = "%m/%d/%Y"添加到as.Date调用)并明确设置了轴标签格式。

如果您的实际数据每个时段有多个条目,您可以先summarise,然后将其传递到ggplot而不是原始数据。