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

如何用ggplot在同一图中绘制曲线比较数据框的前后变量值?

使用ggplot对比x_before和x_after的曲线绘制方案

要在同一图表中用曲线对比这两个变量,需要先将宽格式数据转换为长格式(ggplot更适配长数据结构),再调用ggplot2绘图。以下是完整实现代码:

# 加载所需包
library(ggplot2)
library(dplyr)
library(tidyr)

# 定义数据框
df1 = data.frame(x_before = c(1,2,3,4,5,1,2,3,2,1),
                 x_after = c(2,1,2,3,6,7,2,2,2,3))

# 转换为长格式并添加行号作为x轴(代表数据顺序)
df_long <- df1 %>%
  mutate(index = row_number()) %>%
  pivot_longer(cols = c(x_before, x_after), 
               names_to = "variable", 
               values_to = "value")

# 绘制对比曲线
ggplot(df_long, aes(x = index, y = value, color = variable)) +
  geom_line(linewidth = 1) +  # 设置线条粗细
  labs(title = "x_before与x_after数值对比曲线",
       x = "数据序号",
       y = "数值",
       color = "变量") +
  theme_minimal()  # 使用简洁主题

代码说明:

  • mutate(index = row_number()):生成数据的行号作为x轴,确保曲线按原始数据顺序绘制
  • pivot_longer():将宽格式的x_before和x_after列转为长格式,新增variable列标记变量名,value列存储对应数值
  • aes(color = variable):通过颜色区分两条曲线,也可以替换为linetype = variable设置不同线型
  • labs()和theme_minimal()用于优化图表的可读性和美观度

如果需求是直接对比两个变量的对应数值(而非按样本顺序),可以用以下方式绘制连线曲线:

ggplot(df1, aes(x = x_before, y = x_after)) +
  geom_path(color = "blue") +  # 绘制连接各点的曲线
  geom_point() +  # 标记原始数据点
  labs(title = "x_before与x_after对应数值连线",
       x = "x_before",
       y = "x_after") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:00:58