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

ggplot2绘制按天按时段热图遇缺失值警告及图形异常求助

热图绘制异常及缺失值警告问题

我需要绘制按天(0至41,共6周)按时段(0至23时)划分的数值热图。第一个示例运行正常,但第二个示例出现如下警告:

Warning message: Removed 2 rows containing missing values (geom_tile()).

该警告不符合预期,因为数据中无显式缺失值,且绘图出现连续日期图形合并的问题。

我的需求:

  • 设置轴刻度断点:X轴按7天间隔、Y轴按3小时间隔对齐
  • 轴范围需覆盖完整的6周(0-41天)和24小时(0-23时)

此前通过将轴范围从0:23和0:41扩展至-1:24和-1:42解决过类似问题,但本次调整后仍异常,热图块宽度超出预期。

相关代码

library(ggplot2)

# 第一个示例数据
hours <- c(8,9,1,12,8,9,8,9,8)
days <- c(0,0,1,1,14,14,40,40,41)
value <- c(47,11,46,11,48,12,57,3,47)
df <- data.frame(cbind(hours,days,value))

ggplot(df,aes(days,hours))+
  geom_tile(fill=value)+
  geom_text(aes(label=value),size=3)+
  scale_fill_gradient(low="white",high="red")+
  xlab("Day")+
  ylab("Hour")+
  scale_x_continuous(breaks=seq(0,41,by=7),limits=c(-1,42))+
  scale_y_continuous(breaks=seq(0,23,by=3),limits=c(-1,24))

# 第二个示例数据(出现问题的版本)
hours <- c(16,17,0,1,2,21,22,9,19,20)
days <- c(0,0,3,3,3,6,6,11,21,21)
value <- c(3,60,18,60,23,51,48,49,47,40)
df <- data.frame(cbind(hours,days,value))

ggplot(df,aes(days,hours))+
  geom_tile(fill=value)+
  geom_text(aes(label=value),size=3)+
  scale_fill_gradient(low="white",high="red")+
  xlab("Day")+
  ylab("Hour")+
  scale_x_continuous(breaks=seq(0,41,by=7),limits=c(-1,42))+
  scale_y_continuous(breaks=seq(0,23,by=3),limits=c(-1,24))

内容的提问来源于stack exchange,提问作者Stephen Clark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:30:57