如何在sjPlot的plot_models中调整变量显示顺序(不修改公式)
调整sjPlot::plot_models的y轴变量顺序
由于plot_models没有内置的order.terms参数,但可以通过两种方式实现变量顺序调整:
方法1:用plot_model分别绘图后组合
利用支持order.terms的plot_model(单数版本)分别生成每个模型的可视化结果,再用绘图组合工具合并:
library(sjPlot) library(gridExtra) mod1 <- lm(mpg ~ cyl + disp + hp, data = mtcars) mod2 <- lm(drat ~ cyl + disp + hp, data = mtcars) # 为每个模型指定变量顺序:cyl → hp → disp p1 <- plot_model(mod1, order.terms = c(1, 3, 2)) p2 <- plot_model(mod2, order.terms = c(1, 3, 2)) # 横向组合两个图 gridExtra::grid.arrange(p1, p2, ncol = 2)
方法2:直接修改plot_models生成的ggplot对象
plot_models返回的是ggplot对象,可以通过修改数据中变量的因子水平来调整y轴顺序:
library(sjPlot) library(ggplot2) mod1 <- lm(mpg ~ cyl + disp + hp, data = mtcars) mod2 <- lm(drat ~ cyl + disp + hp, data = mtcars) # 生成原始组合图 p <- plot_models(mod1, mod2) # 重新指定变量的因子水平,控制y轴从上到下的显示顺序 p$data$term <- factor(p$data$term, levels = c("cyl", "hp", "disp")) # 输出调整后的图 print(p)
注:因子水平的顺序对应y轴从上到下的显示顺序,按需修改
levels参数即可。
内容的提问来源于stack exchange,提问作者Schillerlocke
相关产品推荐
相关产品推荐

