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

ggplot2绘制双折线图报each group consists of only one observation问题咨询

报错原因

你当前的date_of_case列是字符型,ggplot会默认将其识别为离散分类变量,每个日期单独成为一个分组。geom_line需要明确同一个组内的多个观测点才能连线,此时每个组仅包含1个观测值,所以触发报错。geom_point不需要跨点连线,因此可以正常运行。

解决方案

方法1:快速修复,手动指定分组

你只需要在每个geom_line的aes中添加group = 1参数,告知ggplot所有点都属于同一个分组需要连线即可:

ggplot(df, aes(x=date_of_case)) +
  geom_line(aes(y=Masked, colour="Masked", group = 1)) +
  geom_line(aes(y=NoMask, colour="NoMask", group = 1))

方法2:长格式绘图(更推荐)

宽格式数据做多系列折线图很容易出现分组异常问题,更推荐先把数据转为长格式再绘图,代码更简洁也不易出错:

# 加载依赖包
library(ggplot2)
library(tidyr)

# 宽表转长表
df_long <- pivot_longer(df, 
                        cols = c(Masked, NoMask),
                        names_to = "group",
                        values_to = "value")

# 直接绘图,自动按分组绘制不同折线
ggplot(df_long, aes(x = date_of_case, y = value, color = group, group = group)) +
  geom_line()

如果需要优化x轴显示,可将字符型日期转换为日期格式,自动适配时间轴逻辑:

df$date_of_case <- as.Date(df$date_of_case, format = "%m/%d/%Y")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:06:05