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

R ggplot2绘制日期折线图报错Discrete value supplied to continuous scale求助

问题根源

你的x轴变量Start.Date为日期类型,但代码中使用了针对数值型变量的scale_x_continuous设置坐标轴,类型不匹配是报错的直接原因。之前可以正常运行大概率是彼时Start.Date被误识别为数值型,重新读取数据后类型变为正确的日期格式,因此触发报错,你之前尝试转换为数值的操作属于走偏了方向,不需要对日期做数值转换。

修复方案

  1. 绘图前先明确将Start.Date转换为标准日期格式,避免数据读取带来的类型偏差
  2. 将原代码中的scale_x_continuous替换为适配日期类型的scale_x_date
  3. 可清理breaks参数里重复的日期值,避免x轴出现重复标签,同时将手写的y轴刻度替换为更简洁的序列生成写法

修改后完整代码

IHS %>%
  filter(Start.Date != "2020-11-13", Start.Date != "2021-01-08", Start.Date != "2021-01-15", Start.Date != "2021-05-07") %>% 
  filter(Template != "Campus Event - IHS Tour (VIRTUAL)") %>%
  # 明确转换日期格式
  mutate(Start.Date = as.Date(Start.Date)) %>%
ggplot(aes(x = Start.Date)) +
  geom_line(aes(y = Registrants, color = "Registrants")) +
  geom_line(aes(y = Attendance, color = "Attendance")) +
  geom_line(aes(y = No.Show, color = "No.Show")) +
  theme_classic() +
  annotate("rect", xmin = as.Date("2020-11-20"), xmax = as.Date("2021-01-22"), ymin = 0, ymax = 14,
  alpha = .09) + 
  annotate("text", x = as.Date("2020-11-20"), y = 12, label = "No tours\nduring holiday", hjust = -1, vjust = 0.5, size = 3) +
  annotate("text", x = as.Date("2021-04-09"), y = 26, label = "26", hjust = .5, vjust = -.9, size = 3) +
  annotate("text", x = as.Date("2021-04-09"), y = 15, label = "15", hjust = .5, vjust = -.9, size = 3) +
  annotate("text", x = as.Date("2021-04-09"), y = 11, label = "11", hjust = .5, vjust = -.9, size = 3) +
  labs(x = "Date", y = "Count")+
  ggtitle("IHS Tour Registrants, Attendance, and No Show") +
  # 替换为适配日期的坐标轴函数,同时清理了重复的breaks值
  scale_x_date(limits = as.Date(c("2020-09-11","2021-04-30")), 
               breaks = as.Date(c("2020-09-11", "2020-09-18", "2020-09-25", "2020-10-02", "2020-10-11", "2020-10-16", "2020-10-23", "2020-10-30", "2020-11-06", "2020-11-20", "2021-01-22", "2021-01-29", "2021-02-05", "2021-02-12",  "2021-02-26", "2021-03-05", "2021-03-12", "2021-03-19", "2021-03-26", "2021-04-09",  "2021-04-16", "2021-04-23", "2021-04-30"))) +
  scale_color_manual(name = "Legend", values = c("#FF8000", "#7A1F2E", "#006699")) +
  scale_y_continuous(limits = c(0,27), breaks = seq(0,27,1)) +
  theme(axis.title.y = element_text(angle = 0, vjust = .5)) +
  theme(legend.position = "top") +
  theme(axis.title.x = element_text(size=10, face = "bold"),
        axis.text.x  = element_text(size=10, angle = 90), 
        axis.text.y = element_text(angle = 0, size = 9), 
        axis.title.y = element_text(angle=0, size = 10, vjust = .5, face = "bold")) 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:06:04