1

我想在一个窗口中将多个效果图与效果包结合起来,但不知道是否有一种简单的方法可以做到这一点。

这是一个不起作用的示例:

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)
4

2 回答 2

2

有趣的是,绘制 an 的结果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)
于 2013-05-24T19:56:32.630 回答
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)

在此处输入图像描述

于 2013-05-08T07:06:12.477 回答