如何在R中将不同数据框的多模型预测图合并至同一画布?
解决方法:合并预测数据后重新绘图
你之前用plot_model生成的每个绘图对象都内置了预测数据,我们可以提取这些数据并添加年份标识,合并后用ggplot统一绘制,就能得到包含5条不同颜色趋势线的单图。
步骤1:提取并整理预测数据
首先加载dplyr包处理数据,然后提取每个绘图对象的底层数据,添加年份标签后合并:
library(dplyr) # 提取各年份模型的预测数据,添加年份列 data_2015 <- plot1$data %>% mutate(Year = "2015") data_2016 <- plot2$data %>% mutate(Year = "2016") data_2017 <- plot3$data %>% mutate(Year = "2017") data_2018 <- plot4$data %>% mutate(Year = "2018") data_2019 <- plot5$data %>% mutate(Year = "2019") # 合并所有数据 combined_data <- bind_rows(data_2015, data_2016, data_2017, data_2018, data_2019)
步骤2:绘制合并后的趋势图
用ggplot基于合并数据绘图,按年份区分颜色,统一设置坐标轴:
library(ggplot2) ggplot(combined_data, aes(x = Level2, y = predicted, color = Year)) + geom_point() + geom_line() + scale_y_continuous(limits = c(0, 0.40), breaks = seq(0, 0.40, 0.05)) + labs(x = "Level2", y = "预测值", color = "年份") + theme_minimal()
可选:添加置信区间
如果需要展示预测值的置信区间,可加入geom_ribbon图层:
ggplot(combined_data, aes(x = Level2, y = predicted, color = Year, fill = Year)) + geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = 0.2, color = NA) + geom_point() + geom_line() + scale_y_continuous(limits = c(0, 0.40), breaks = seq(0, 0.40, 0.05)) + labs(x = "Level2", y = "预测值", color = "年份", fill = "年份") + theme_minimal()
核心逻辑
plot_model生成的ggplot对象中,data属性存储了预测值(predicted列)、自变量(Level2列)及置信区间(conf.low/conf.high列),直接提取即可复用;通过Year列区分不同年份的模型数据,ggplot会自动分配不同颜色实现分组对比。
内容的提问来源于stack exchange,提问作者user22286085
相关产品推荐
相关产品推荐

