我想将一个窗口中的多个效果图与效果包结合起来,但不知道是否有一种简单的方法可以实现。
以下是一个不起作用的示例:
d1 <-data.frame(x1=rnorm(100,0:10),y1=rnorm(100,0:10),x2=rnorm(100,0:10),y2=rnorm(100,0:10))
require(effects)
require(gridExtra)
plot1 <- plot(allEffects(mod=lm(y1~x1,d1)))
plot2 <- plot(allEffects(mod=lm(y2~x2,d1)))
grid.arrange(plot1,plot2,ncol=2)
答案 0 :(得分:2)
我认为您需要收集allEffects组件的值,然后将它们绘制为'efflist'。在我看来,绘图是基础图形,但如果你遵循类功能轨迹(或者如果你阅读:?plot.efflist
),它实际上是“格子”
试试这个:
ef1 <-allEffects(mod=lm(y1~x1,d1))[[1]]
ef2 <- allEffects(mod=lm(y2~x2,d1))[[1]]
elist <- list( ef1, ef2 )
class(elist) <- "efflist"
plot(elist, col=2)
答案 1 :(得分:2)
有趣的是,绘制efflist
(来自allEffects
的结果)的结果不是格子图形;它改为使用print.lattice
方法构建一个格子图形的多面板图形。但是,如果您通过从allEffects
或使用effect
获取元素来绘制单个效果,那么您将获得晶格图形。
要么像这样
p1 <- plot(allEffects(m1)[[1]])
p2 <- plot(allEffects(m2)[[1]])
或者像这样。
p1 <- plot(effect("x1", m1))
p2 <- plot(effect("x2", m2))
这些可以与grid.arrange
结合使用;问题是,他们的班级c("plot.eff", "trellis")
grid.arrange
无法识别,因此必须先将它们制作成简单的trellis
个对象。
class(p1) <- class(p2) <- "trellis"
grid.arrange(p1, p2, ncol=2)