结合使用R中的效果包创建的两个绘图

时间:2013-03-05 15:08:05

标签: r graphics effects

我有以下问题。在运行有序的logit模型之后,我想要R的效果包来可视化结果。这很好,我为两个独立变量这样做,然后我尝试将两个图组合起来。但是,这似乎不起作用。我在这里提供了一个可复制的示例,以便您可以自己查看我的问题:

library(car)
data(Chile)
mod <- polr(vote ~ age + log(income), data=Chile)

eff <- effect("log(income)", mod)
plot1 <- plot(eff, style="stacked",rug=F, key.args=list(space="right"))

eff2 <- effect("age", mod)
plot2 <- plot(eff2, style="stacked",rug=F, key.args=list(space="right"))

我现在可以独立打印这两个图,但是当我尝试将它们一起绘制时,第一个图被覆盖。我尝试设置par(mfrow=c(2,1)),但这不起作用。接下来我尝试了以下内容:

print(plot1, position=c(0, .5, 1, 1), more=T)
print(plot2, position=c(0,0, 1, .5))

在后一种情况下,两个图的位置都很好,但是一旦我添加第二个图(或更好,它被覆盖),第一个图仍然消失。任何建议如何防止这种行为将不胜感激。

2 个答案:

答案 0 :(得分:4)

向下阅读?print.eff的长参数列表,我们看到有一些论据可以做到这一点:

plot(eff, style="stacked",rug=F, key.args=list(space="right"),
     row = 1,col = 1,nrow = 1,ncol = 2,more = TRUE)
plot(eff2, style="stacked",rug=F, key.args=list(space="right"),
     row = 1,col = 2,nrow = 1,ncol = 2)

par()无效的原因是因为此软件包使用网格图形,这些图形基于网格系统,与基础不兼容图形。 par()layout都不会对网格图形产生任何影响。

答案 1 :(得分:1)

这似乎有效:

plot(eff,col=1,row=2,ncol=1,nrow=2,style="stacked",rug=F,
  key.args=list(space="right"),more=T)
plot(eff2,col=1,row=1,ncol=1,nrow=2,style="stacked",rug=F, 
  key.args=list(space="right"))

编辑:太晚了......