如何阻止sjPlot::plot_model绘图时的点偏移问题?
解决sjPlot::plot_model三向交互图点线偏移问题
直接调整sjPlot内置参数
sjPlot的plot_model()默认会对分组元素应用位置偏移(如position_dodge()),直接调用position_identity()可能被内置逻辑覆盖,试试以下几种方式:
1. 在plot_model()中显式指定位置参数
将position = position_identity()传入函数,确保覆盖默认设置:
plot_model( your_lm_model, type = "int", # 绘制三向交互图需指定type="int" position = position_identity() )
2. 修改生成的ggplot对象图层
plot_model()返回的是标准ggplot对象,可直接修改对应图层的位置属性:
# 生成交互图 p <- plot_model(your_lm_model, type = "int") # 替换线和点图层的位置设置 p$layers[[1]]$position <- position_identity() # 线图层通常为第一个 p$layers[[2]]$position <- position_identity() # 点图层通常为第二个 # 输出调整后的图 print(p)
3. 关闭自动分组偏移
部分sjPlot版本中,三向交互图默认启用dodge参数,显式设置dodge = 0关闭偏移:
plot_model( your_lm_model, type = "int", dodge = 0 )
额外排查点
如果以上方法无效,检查交互项中的分类变量因子水平是否正确。因子顺序错位可能导致视觉上的偏移感,可通过factor()重新指定水平顺序后再建模绘图:
# 示例:重新指定变量水平 data$your_cat_var <- factor(data$your_cat_var, levels = c("level1", "level2", "level3")) # 重新拟合模型并绘图 your_lm_model <- lm(y ~ x*a*b, data = data) plot_model(your_lm_model, type = "int", dodge = 0)
内容的提问来源于stack exchange,提问作者Jefa
相关产品推荐
相关产品推荐

