2013-12-20 27 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))