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

x轴取值不均匀时如何使用ggplot绘制连续实线?

解决方案

问题核心是原始数据为宽格式,且天数被处理为分类维度而非连续数值,导致geom_line无法按照真实的天数间隔绘制连续折线。

1. 重构数据结构

首先将宽表转为长表,提取天数的数值作为x轴连续变量,同时处理逗号分隔的小数格式:

library(tidyverse)

# 宽表转长表并清洗字段
df_long <- df %>%
  pivot_longer(cols = starts_with("day"),
               names_to = "day",
               values_to = "value") %>%
  mutate(
    # 提取day后的数字作为连续天数
    day = as.numeric(str_remove(day, "day")),
    # 将逗号替换为小数点后转数值格式
    value = as.numeric(str_replace(value, ",", "."))
  )

2. 绘制连续实线折线图

处理后的数据可直接使用geom_line绘制折线,x轴会自动按照真实的天数间隔排布:

ggplot(df_long, aes(x = day, y = value, color = factor(treatment))) +
  geom_line(linewidth = 1) +
  # 可选参数:添加对应数据点
  geom_point(size = 2) +
  labs(x = "天数", y = "测量值", color = "处理组")

补充说明

如果仍需要使用geom_smooth的拟合线效果,添加se = FALSE参数即可关闭置信区间:

ggplot(df_long, aes(x = day, y = value, color = factor(treatment))) +
  geom_smooth(se = FALSE, method = "loess", linewidth = 1)

内容的提问来源于stack exchange,提问作者Gonzalo de Quesada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:48:02