R语言 如何在绘制网格图时按正/负系数对sjPlot::model_plots进行颜色编码?

0sgqnhkj  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(109)

我想使用sjPlot::plot_models并行绘制多个模型,但当我运行以下代码时:

set.seed(10)
a <- sample(c("low", "medium", "high"), 100, replace = T)
b <- rnorm(100)
c <- rnorm(100)

mod1 <- lm(b ~ a)
mod2 <- lm(c ~ a)

sjPlot::plot_models(mod1, mod2, grid = T)

那么左边的图将是红色的,右边的图将是蓝色的。有没有办法让正系数是蓝色的,负系数(右下)是红色的?

cu6pst1q

cu6pst1q1#

可以使用ggplot_build通过负y值有条件地更改层中的颜色,如下所示:

library(ggplot2)
library(dplyr)
p <- sjPlot::plot_models(mod1, mod2, grid = T)

q <- ggplot_build(p)
q$data[[2]] = q$data[[2]] %>%
  mutate(colour = case_when(y < 0 ~ '#E41A1C', 
                            TRUE ~ '#377EB8'))
q$data[[3]] = q$data[[3]] %>%
  mutate(colour = case_when(y < 0 ~ '#E41A1C', 
                            TRUE ~ '#377EB8'))

q <- ggplot_gtable(q)
plot(q)

创建于2023年3月11日,使用reprex v2.0.2

相关问题