如何修改R中sjPlot包plot_model()函数的X轴范围?
解决sjPlot::plot_model()自定义X轴范围的问题
核心思路:用ggplot原生函数强制覆盖轴范围
sjPlot的plot_model()返回的是ggplot对象,当内置axis.lim参数不生效时,直接调用ggplot原生的scale_x_continuous()来指定X轴范围,优先级更高,能突破默认限制。
具体修改代码
将你的代码调整为:
sjPlot::plot_model(lm_PMd2, axis.labels=c("TimeInterval", "FactorAnalyses_diff"), show.values=TRUE, show.p=TRUE, colors = "#ec7014", title="PMd") + theme_bw()+ theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), text = element_text(size = 12)) + scale_x_continuous(limits = c(-0.2, 0.2), expand = c(0, 0)) # 新增行强制设置X轴范围
limits参数直接定义你需要的X轴区间expand = c(0,0)可选,用于移除轴两端的空白,让刻度完全贴合你设置的范围
额外排查点
- 确认模型类型:如果是绘制优势比(OR)等经过对数转换的指标,X轴为对数刻度,此时
axis.lim逻辑会变化,需要先转换范围或配合scale_x_log10()调整;但你的场景是估计值很小的线性模型系数,上述方法完全适用。 - 检查
plot_model()的type参数:若默认绘图类型的轴有固定限制,可尝试指定type = "est"(系数图),再配合scale_x_continuous()生效。
内容的提问来源于stack exchange,提问作者Catherine
相关产品推荐
相关产品推荐

