我使用sjPlot绘制了使用Gamma分布的glm模型中的显著三因素交互作用。DV是连续的,两个IV是连续的,一个是分类变量。我希望该图由分类变量分面,每个变量上的线显示均值+/- 1 sd(如下所示)。我得到了一个非常漂亮的小平面包裹图,并且能够修改轴限制、标题等。但是,我不知道如何改变某些美学,例如删除轴线/网格,使背景颜色为白色,更改面顶部条带的颜色等。我可以在ggplot中执行此操作,但我真的希望使用模型中的特定预测值,因为除了IV、DV和调节因子外,它还包含协变量。
下面是一个使用虹膜数据集的示例:
iris.glm<-glm(Sepal.Length ~ Sepal.Width*Petal.Width*Species + Petal.Length,
family = Gamma(link="inverse"), data=iris)
summary(iris.glm)
plot_model(iris.glm, type="int", mdrt.values="meansd", axis.lim=c(4,10),
title="", axis.title=c("Sepal Width", "Sepal Length"),
legend.title="Petal Width", colors=c("#66c2a5","#fc8d62", "#8da0cb"))
然而,我想在美学上做更多的改进。当我试图在ggplot中重新创建这个情节时,我做得很糟糕!特别是我不知道如何从本质上将连续调节器转换为三级分类(-1 SD,平均值,1 SD)。我是否需要使用模型的预测值创建单独的数据框,并根据该数据框创建图?如果需要,有没有人能帮上忙?提前道歉,还是ggplot的新手。
iris %>%
ggplot(aes(x=Sepal.Width, y=Sepal.Length, color=Petal.Width, group=Petal.Width)) +
facet_grid(~Species) +
stat_smooth(method = "glm", se=T) +
xlab("Sepal Width") +
ylab("Sepal Length") +
coord_cartesian(xlim =c(2, 4.5), ylim = c(4, 10))
1条答案
按热度按时间m2xkgtsf1#
sjPlot
作者很有帮助,他不时地潜伏在这里,所以你可能要有点耐心,等待一个直接的答案。同时,您也可以尝试
marginaleffects
中的plot_cap()
函数(免责声明:我是作者).好的方面是这个函数返回“普通”的ggplot2
对象,所以你可以使用所有普通的美学和函数来定制,比如theme_classic()
或ylim()
:此外,还可以通过设置
draw=FALSE
返回底层数据,然后如果需要更多定制,可以自己绘图: