如何去除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
相关产品推荐
相关产品推荐

