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

已修正y轴类型仍报Discrete value supplied to continuous scale错误求助

问题分析与解决

核心原因

你只修正了y轴time的类型,但x轴的date字段大概率还是离散型(字符/因子),而你用了scale_x_continuous(连续型刻度),这就会触发"Discrete value supplied to continuous scale"错误——这是当前报错的关键。

具体修复步骤

  1. 检查并修正字段类型
    先确认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")
    
  2. 优化绘图代码
    调整后的完整代码(假设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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:00:25