I'm trying to arrange three sv_dependence()
plots from shpaviz
in a single graph with grid.arrange()
. I would like the feature value color scale to appear just once. Here is a reproducible code, with the result I obtained so far:
library(shapviz)
library(ggplot2)
library(gridExtra)
set.seed(1)
X_train <- data.matrix(`colnames<-`(replicate(26, rnorm(100)), LETTERS))
dtrain <- xgboost::xgb.DMatrix(X_train, label = rnorm(100))
fit <- xgboost::xgb.train(data = dtrain, nrounds = 50)
shp <- shapviz(fit, X_pred = X_train)
p_a <- sv_importance(shp, kind = "beeswarm", show_numbers = TRUE, max_display = 15, color_bar_title=NULL)
p_b <- sv_importance(shp, kind = "beeswarm", show_numbers = TRUE, max_display = 15, color_bar_title=NULL)
p_c <- sv_importance(shp, kind = "beeswarm", show_numbers = TRUE, max_display = 15)
grid.arrange(p_a,p_b,p_c,nrow=1)
How can I make the third graph the same dimension of the other two while having the feature value color bar displayed?
One option would be to switch to patchwork
to glue your plots together.
library(patchwork)
p_a + p_b + p_c