在同一张图中绘制连续因变量与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
相关产品推荐
相关产品推荐

