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

如何去除shapviz包sv_waterfall()瀑布图的边框线型?

解决shapviz瀑布图消除条形边框的问题

因为sv_waterfall()底层使用gggenes::geom_gene_arrow()绘制条形,直接新增geom_gene_arrow()图层只会叠加图形,无法修改原有条形的参数。你可以通过直接修改已生成图形的图层参数来消除边框:

方法1:针对单个图形修改(推荐)

生成瀑布图后,找到对应的geom_gene_arrow图层,修改其边框线型或颜色:

shap_mlr <- fastshap::explain(
  MLR_N_All, 
  X = X_df_train,
  nsim = 1000, 
  pred_wrapper = predict,
  shap_only = FALSE,
  adjust = TRUE
)

sv_LM <- shapviz(shap_mlr)
sv_LM_wtf <- sv_waterfall(sv_LM, row_id = 3, fill_colors=c('#FF0051', '#008BFB')) +
  ggtitle("LM")+
  theme(text=element_text(size=14,family="Palatino"),
        axis.title.x=element_blank())

# 方法A:设置边框线型为无
sv_LM_wtf$layers[[1]]$geom_params$linetype <- "blank"

# 方法B:设置边框颜色为透明(如果线型设置无效时使用)
# sv_LM_wtf$layers[[1]]$geom_params$colour <- NA

sv_LM_wtf

方法2:全局修改(影响所有使用geom_gene_arrow的图形)

如果需要所有geom_gene_arrow生成的图形都去掉边框,可以全局修改默认参数:

# 全局设置geom_gene_arrow的默认边框线型
ggplot2::update_geom_defaults("gene_arrow", list(linetype = "blank"))

# 之后再生成瀑布图即可生效
sv_LM_wtf <- sv_waterfall(sv_LM, row_id = 3, fill_colors=c('#FF0051', '#008BFB')) +
  ggtitle("LM")+
  theme(text=element_text(size=14,family="Palatino"),
        axis.title.x=element_blank())

内容的提问来源于stack exchange,提问作者Moh Zulfajrin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:37:28