Reputation: 141
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?
Upvotes: 1
Views: 382
Reputation: 124083
One option would be to switch to patchwork
to glue your plots together.
library(patchwork)
p_a + p_b + p_c
Upvotes: 2