jtools包plot_summs开密度图时xlim/scale_x_continuous不生效问题咨询
问题原因
开启plot.distributions = TRUE后,plot_summs()内部会先生成全范围的系数密度曲线,再将密度曲线作为附加图形嵌入画布两侧:
- 后续叠加的
xlim()、scale_x_continuous()会被内部图层的默认范围设置覆盖,因此不生效 coord_cartesian()仅裁剪显示区域,不会移除超出范围的密度曲线部分,也不会收缩画布原本为全范围密度预留的展示边距,因此会出现大量空白
解决方案
方案1:使用内置参数限定范围(推荐)
直接将x轴范围通过xlim参数传入plot_summs(),内部计算密度时就会按指定范围生成,不会产生多余内容,也不需要额外调整图层:
library(jtools) library(ggplot2) test <- lm(mpg ~ cyl, data = mtcars) plot_summs(test, plot.distributions = TRUE, xlim = c(-5, 5))
如果仍有少量边距空白,可叠加主题参数调整边距:
plot_summs(test, plot.distributions = TRUE, xlim = c(-5, 5)) + # 四个参数依次对应上、右、下、左的边距,可根据实际显示效果调整 theme(plot.margin = unit(c(0.3, 0.1, 0.3, 0.1), "cm"))
方案2:手动修改ggplot对象(适配旧版本jtools)
如果使用的jtools版本较低不支持内置xlim参数,可直接修改生成的ggplot对象的坐标限制:
p <- plot_summs(test, plot.distributions = TRUE) # 直接修改坐标范围配置 p$coordinates$limits$x <- c(-5, 5) # 调整边距移除空白 p <- p + theme(plot.margin = unit(c(0.3, 0.1, 0.3, 0.1), "cm")) p
内容的提问来源于stack exchange,提问作者sleepy
相关产品推荐
相关产品推荐

