17

我正在尝试复制类似于以下的图表(最初在此处找到)
堆叠直方图

它在概念上很简单,但我对如何在 R 中做到这一点有点困惑。
总结一下:我想在每天的 24 小时内生成行为频率的直方图(24 级因子变量)星期。然后,我想将这些直方图堆叠在一起,以便可以轻松比较一天中一小时内的行为分布(再次参见示例)。

例如,我的数据可能如下所示:

  weekday hour    count
  Tuesday   15      553
   Monday    1       53
   Monday   10      539
   Monday   15      629
  Tuesday    9      281
 Saturday    4       11
   Monday    3       20
   Sunday    3       10
   Sunday    7        2
   Sunday    2       17

我该如何实现上面链接中的图表?我很糟糕ggplot,但有一种感觉,这是可能的解决方案。谢谢!

4

1 回答 1

31

像这样的东西?

set.seed(1234)
df <- data.frame(weekday=rep(sort(unique(weekdays(.leap.seconds))), each=24), 
                       hour=rep(1:24, 7), count=sample(2:600, 24*7, replace=T))

df$weekday <- factor(df$weekday, levels=c("Monday", "Tuesday", "Wednesday", 
                      "Thursday", "Friday", "Saturday", "Sunday"), ordered=T)
df$hour <- factor(df$hour)

require(ggplot2)    
p <- ggplot(data = df, aes(x=hour)) 
p <- p + geom_histogram(aes(weights=count, fill=weekday))
p <- p + scale_fill_brewer(palette="Set3")
p <- p + facet_wrap( ~ weekday, ncol=1)
p

ggplot2_facet_histogram

于 2013-02-11T18:39:21.553 回答