2013-12-20 59 views
0

我想創建一個堆疊直方圖,底部顯示canceled == TRUE,頂部顯示canceled == FALSE。不過,我似乎無法弄清楚。任何想法我可以如何使用ggplot2來做到這一點,同時保持圍繞源代碼的方面?如何創建堆疊直方圖w/ggplot2?

這是我目前有:

ggplot(data, aes(x=days, fill="canceled")) + 
    geom_histogram(binwidth=1, position="stack") + 
    facet_wrap(~source, ncol=2, scale="free_y") + 
    coord_cartesian(xlim=c(0, 21)) 

我的數據:

days,source,canceled 
1,ABC,TRUE 
1,ABC,FALSE 
1,ABC,TRUE 
2,ABC,FALSE 
2,XYZ,FALSE 
+0

看到這個從stats.stackexchange.com遷移過來。如果我想在這裏發佈,它會被遷移到統計信息。贏不了。 – Bradford

+0

不,這確實是一個編程問題... –

回答

1

那麼,你至少應該開始從圍繞這個詞去掉引號「取消」,在ggplot命令。這會導致TRUE和FALSE值的顏色不同,並且堆疊在另一個上面,這比您以前的要好,但它仍然在頂部堆疊TRUE,底部堆疊爲FALSE,與您要求的相反。我不確定如何控制堆棧順序(畢竟,大概是首先使用ggplot2來委託很多這些詳細的低級顯示決策),但這至少可以解決您的一半問題。我稍微修改過的代碼版本和顯示的結果在下面附加。 ggplot results for histogram stacking example

library(ggplot2) 

days <- c(1, 1, 1, 2, 2) 
source <- c("ABC", "ABC", "ABC", "ABC", "XYZ") 
canceled <- c(TRUE, FALSE, TRUE, FALSE, FALSE) 

data <- data.frame(days, source, canceled) 

print(ggplot(data, aes(x=days, fill=canceled)) + 
      geom_histogram(binwidth=1, position="stack") + 
      facet_wrap(~source, ncol=2, scale="free_y") + 
      coord_cartesian(xlim=c(0, 21))) 
2

當你需要獲得通過可變canceled不同的填充值,那麼它應該不帶引號使用。要以相反的順序進行堆疊,您可以使用參數order=並設置爲canceled的負數。

ggplot(data, aes(x=days, fill=canceled,order=-canceled)) + 
    geom_bar(binwidth=1, position="stack") + 
    facet_wrap(~source, ncol=2, scale="free_y") + 
    coord_cartesian(xlim=c(0, 21))