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

如何用ggplot2绘制堆叠条形图对比多模型特征重要性分解结果?

实现三种模型特征重要性的堆叠条形图对比

当然可以实现这个需求,以下是具体的实现步骤和代码:

步骤说明

  • 移除不需要的y列:该列是模型的总解释值,堆叠条形图仅需各特征的分解贡献值
  • 重塑数据格式:将宽格式数据转换为长格式,这是ggplot绘制堆叠图的标准数据格式
  • 绘制堆叠条形图:利用geom_bar的position="stack"参数实现堆叠效果,stat="identity"直接使用数据中的数值作为条形高度

完整实现代码

# 加载所需工具包
library(tibble)
library(reshape2)
library(ggplot2)

# 构造目标数据集
df <- tibble(
  methods = c("线性回归", "决策树", "随机森林"), 
  y  = c(1, 2, 3), 
  g1 = c(0.3, 0.8, 1.3), 
  g2 = c(0.5, 1,   1), 
  g3 = c(0.2, 0.2, 0.7)
)

# 移除无需参与绘图的y列
df <- df %>% select(-y)

# 将宽格式数据转换为ggplot适配的长格式
df_melt <- melt(df, id.vars = 'methods')

# 绘制堆叠条形图
ggplot(df_melt, aes(x = methods, y = value, fill = variable)) + 
  geom_bar(position = "stack", stat = "identity") +
  labs(title = "不同模型的特征重要性分解对比",
       x = "模型方法",
       y = "特征贡献值",
       fill = "特征变量") +
  theme_minimal()

代码细节说明

  • melt(df, id.vars = 'methods'):以methods为分组标识,将g1/g2/g3等特征列转换为variable(特征名称)和value(贡献数值)的长格式结构
  • position="stack":指定条形图采用堆叠模式,把同一模型下的不同特征贡献值叠加展示
  • 额外添加的labs和theme_minimal用于优化图表可读性和美观度,可根据需求自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:45:40