You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ggplot堆叠直方图:小时分箱合并与自定义堆叠顺序问题

ggplot堆叠时段分布直方图调整问题及解决

我使用ggplot绘制了按深度堆叠的时段分布直方图,效果见下图:
时段对应计数,按深度堆叠

目前遇到两个待解决的问题:

  • 当前直方图输出25个分箱列,我需要得到对应全天24小时的24个列,需合并首尾分箱。我的st_time字段是从覆盖6个月的datetime列中提取的时间,处理后为POSIXct格式,范围是2021-10-11 00:00:00至2021-10-11 23:59:54,对应处理代码如下:
All_M_dives$st_time <- format(as.POSIXct(All_M_dives$begdesc, format = "%d/%m/%Y %H:%M:%S"), format = "%H:%M:%S")
All_M_dives$st_time <- as.POSIXct(All_M_dives$st_time, format = "%H:%M:%S")
  • 堆叠分组字段dbins目前被R默认按字母顺序排序,导致图例和图表堆叠顺序错误,我需要手动指定堆叠顺序为深度值0、25、50、100、200。我也考虑过可以将dbins调整为按字母顺序命名后再重命名图例的方案,若该方案可行也可提供。

现有绘图代码如下:

gg <- ggplot(data = All_M_dives, aes(x = st_time, fill = dbins)) + 
  geom_histogram(colour = "black", position = "stack", binwidth = 3600 ) +
  scale_x_datetime(date_labels = "%H:%M") +
  labs(title = NULL, x = "Time of Day", y = "Dive Count") +
  theme(legend.position = "none") +
  theme_classic() + theme(axis.text.x = element_text(angle=45)) 
gg

该问题已通过设置center=1800和将dbins转为因子的方法解决,最终效果见下图:
最终版本


内容的提问来源于stack exchange,提问作者R student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:15:01