2016-12-06 5 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

あなたのstatSummaryposition="stack"を含める必要があります:

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

、あなたのデータがすでにまとめられているので、あなたは(geom_bar(stat = "identity")のための短い手を)geom_colを使用することができます。

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

を生成します:

enter image description here

as.Dateコールにformat = "%m/%d/%Y"を追加して)日付書式を変更し、軸の書式設定を明示的に設定しました。

実際のデータに1つの期間に複数のエントリがある場合は、最初にsummariseを入力し、生データの代わりにggplotに渡すことができます。

関連する問題