R 中的堆叠直方图。填充不堆叠

Stacked histogram in R. fill not stacking

试图制作堆叠直方图,但它只是灰色,没有堆叠。我不明白这里的所有示例或内置的 'iris' 示例有什么不同,除非使用时间作为 x 变量是一个问题。

我有一个很大的 df,长格式,减少到 25 行并命名为 'mini' 本例:

> dput(mini)
structure(list(maxdep = c(203.9540564, 212.9573869, 13.45896065, 
209.961431, 162.9633891, 13.97961439, 85.48389032, 102.4905817, 
100.0035986, 88.02608837, 89.02947373, 22.0301996, 20.03060219, 
19.03098037, 29.03141345, 13.03170014, 82.0328164, 55.03384725, 
15.03437183, 17.53463412, 37.5352136, 70.03588457, 90.53687883, 
91.53861116, 10.03902594), st_time = structure(c(1633321800, 
1633328510, 1633331050, 1633331285, 1633334080, 1633347960, 1633348185, 
1633355115, 1633279830, 1633298825, 1633301480, 1633302985, 1633303300, 
1633303600, 1633303825, 1633304280, 1633304430, 1633305635, 1633306445, 
1633306610, 1633306890, 1633307310, 1633307960, 1633309380, 1633310320
), class = c("POSIXct", "POSIXt"), tzone = ""), dbin = c(2, 2, 
1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1)), row.names = c(NA, 25L), class = "data.frame")

代码很简单:

gg3 <- ggplot(data = mini, aes(x = st_time, fill = dbin)) # 
gg3 <- gg3 + geom_histogram(position = "stack", binwidth = 3600) # gives hourly columns in histogram
gg3

这应该在 x 轴上绘制数据的开始时间 - 正确,相对于 y 上的计数 - 正确并按 dbin 值(例如 1 到 5)堆叠颜色 - 生成堆叠在顶部的 5 种颜色的直方图彼此(上面的样本数据中只有两个)。

相反,我得到了所有数据的一个灰色图(总共 25 个计数)。请帮助我了解问题所在

您可以将 dbin 更改为一个因数:

mini %>% 
  ggplot(aes(x = st_time, fill = as.factor(dbin) )) +
  geom_histogram(position = "stack", binwidth = 3600)