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

在同一张图中绘制连续因变量与8个自变量的平滑关联曲线

解决方案

要在同一张图中绘制所有自变量与因变量的平滑曲线并区分颜色,核心是将宽格式数据转换为长格式,这样ggplot可以自动按变量名分组着色并生成图例。

完整代码

# 加载所需包(包含ggplot2和数据转换工具)
library(tidyverse)

# 原始数据生成代码(保留原逻辑)
set.seed(123)
mydata <- data.frame(ID = 1:100,
                     outcome = runif(100),
                     var2 = runif(100),
                     var3 = runif(100),
                     var4 = runif(100),
                     var5 = runif(100),
                     var6 = runif(100),
                     var7 = runif(100),
                     var8 = runif(100),
                     var9 = runif(100),
                     var10 = runif(100))

# 将宽格式数据转为长格式:提取var2到var10的变量名和对应值
mydata_long <- mydata %>%
  pivot_longer(cols = starts_with("var"),  # 选择所有以var开头的列
               names_to = "predictor",     # 新列:存储变量名
               values_to = "value")        # 新列:存储变量值

# 绘制平滑曲线,按变量名区分颜色
ggplot(data = mydata_long, aes(x = value, y = outcome, color = predictor)) +
  geom_smooth(se = FALSE) +  # se=FALSE可去掉置信区间,若需要保留则删除此参数
  labs(title = "Outcome与各自变量的平滑关联曲线",
       x = "自变量取值",
       y = "Outcome取值",
       color = "自变量") +
  theme_minimal()  # 可选:使用简洁主题优化视觉效果

关键说明

  • pivot_longer:把原数据中var2到var10的8列,转换为两列:predictor(记录变量名,如var2、var3)和value(记录对应变量的数值),这是实现多变量同图绘制的核心步骤
  • aes(color = predictor):将曲线颜色映射到变量名,自动生成不同颜色并添加对应图例
  • geom_smooth:默认使用loess方法拟合平滑曲线,若需要线性拟合可添加method = "lm"参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:15:22