我在R中使用sjPlot
绘制了一个有意义的四向交互,下面是一个例子:
colnames(iris) <- c("y", "a", "b", "c", "d")
m0 <- lm(y ~ a * b * c * d, data = iris)
sjPlot::plot_model(m0, type = "pred", terms = c("a", "b", "c", "d"))
哪些地块:
我想把它们垂直堆叠d
。sjpPlot
是基于ggplot2
的,但它并不简单地接受ggplot
命令。有人知道如何做到这一点吗?
2条答案
按热度按时间tgabmvqs1#
从图的图像(已经是一个多面板图),我猜你已经安装了
see
包,即如果没有,你会得到一个单图列表和警告:在一个集成图中绘制多个面板需要
see
包。请在控制台中输入install.packages("see", dependencies = TRUE)
进行安装。会突然出现
如果安装了
see
,sjPlot::plot_model
将返回一个多面板图,它在后台使用patchwork
,即返回的对象不再是ggplot
的列表,而是patchwork
对象。(因此,按照@jared_mamrot的回答(现已删除)中的建议应用patchwork::wrap_plots
不会有任何效果。)相反,在这种情况下,您可以通过
patchwork::plot_layout
设置列数。注意:我的猜测是,在多面板图的情况下,有或者应该有一个参数来控制返回哪种类型的对象或者列数。不幸的是,我在文档中找不到这方面的东西。(:
lskq00tm2#
我认为@stefan的答案是解决这个问题的最佳方案,但是,如果你没有安装“see”软件包(如果是这种情况,该函数会警告你),
plot_model()
会生成一个绘图列表,而不是单个图形。创建于2023-04-20使用reprex v2.0.2