已修正y轴类型仍报Discrete value supplied to continuous scale错误求助
问题分析与解决
核心原因
你只修正了y轴time的类型,但x轴的date字段大概率还是离散型(字符/因子),而你用了scale_x_continuous(连续型刻度),这就会触发"Discrete value supplied to continuous scale"错误——这是当前报错的关键。
具体修复步骤
检查并修正字段类型
先确认date和time的类型:class(NewRoom$date) class(NewRoom$time)如果输出是
character或factor,转成数值型:# 处理date字段(如果是表示每月日期的字符/因子) NewRoom$date <- as.numeric(as.character(NewRoom$date)) # 确保time是数值型(你已经做过,但再确认) NewRoom$time <- as.numeric(as.character(NewRoom$time))若
date是标准日期对象(如Date类),则不能用scale_x_continuous,需改用scale_x_date:scale_x_date(date_breaks = "10 days", date_labels = "%d")优化绘图代码
调整后的完整代码(假设date是每月日期数值):# 先处理字段类型 NewRoom$date <- as.numeric(as.character(NewRoom$date)) NewRoom$time <- as.numeric(as.character(NewRoom$time)) # 构建绘图 p <- ggplot(NewRoom, aes(date, time, fill = temp)) + geom_tile(color = "white", size = 0.1) + scale_fill_viridis(name = "Hrly Temps C", option = "C") + facet_grid(Bdrmno ~ month) + # 对breaks排序,保证y轴小时顺序正确 scale_y_continuous(trans = "reverse", breaks = sort(unique(NewRoom$time))) + scale_x_continuous(breaks = c(1, 10, 20, 31)) # 执行绘图 print(p)
额外排查点
- 若仍报错,检查分面变量
Bdrmno和month:这两个变量可以是离散型(字符/因子),不影响连续刻度,但如果误将它们映射到了坐标轴,会引发错误。 - 确认
unique(NewRoom$time)返回的是纯数值(无NA或字符),可以用sort(unique(NewRoom$time))确保breaks顺序合理。
内容的提问来源于stack exchange,提问作者Aishwarya Iyer
相关产品推荐
相关产品推荐

