2016-12-06 96 views
0

我想創建一個堆積條形圖,但是我的輸出顯示疊加條而不是堆疊。我該如何糾正這一點?ggplot爲什麼酒吧不堆放?

#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 

謝謝!

回答

3

你必須包括position="stack"statSummary

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

或者,因爲您的數據已經彙總,您可以使用geom_col(短手geom_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而不是原始數據。