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
相关产品推荐
相关产品推荐

