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

Shapviz依赖图点按变量上色失败求助:颜色映射报错

解决Shapviz依赖图按X类别设置点颜色的问题

问题原因

你之前的代码把color_var设为NULL,导致所有点使用固定灰色;直接传颜色列表会触发美学映射长度不匹配的报错,因为sv_dependence的color参数仅支持单一颜色值,而非映射用的颜色向量。

修正后的代码

library(kernelshap)
library(shapviz)
library(ggplot2)

# 定义类别名称
names_cos <- c('ART','AGRI','PAST','HDW','EUC','RES','SHL')
# 自定义对应颜色(可按需调整)
cos_colors <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

# 生成依赖图时,指定color_var为要分颜色的X变量"cos"
cos_dep <- sv_dependence(sv, v = "cos", color_var = "cos")

# 调整可视化细节
cos_dep <- cos_dep +
  scale_x_discrete(labels = names_cos, limits = factor(1:7)) +
  scale_color_manual(values = cos_colors, labels = names_cos) + # 绑定类别与对应颜色
  labs(y = "SHAP value", x = "LCU", tag = "(b)") +
  theme_bw() +
  theme(plot.tag = element_text(), plot.tag.position = c(0.95, 0.1)) +
  geom_hline(yintercept = 0, color = "black") # 直接添加水平线,替代修改layers的方式

# 输出图形
cos_dep

关键说明

  • color_var = "cos":告诉sv_dependence根据X变量(即"cos"的类别)映射颜色,让ggplot自动为每个类别创建颜色映射,避免长度不匹配的报错。
  • scale_color_manual:手动指定每个类别对应的颜色,values向量顺序要和names_cos完全对应。
  • 直接用+ geom_hline()添加水平线,比修改layers列表更直观且不易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:56:09