rgraphicseffects

Combine two plots created with effects package in R


I have the following Problem. After running an ordered logit model, I want to R's effects package to visualize the results. This works fine and I did so for two independent variables, then I tried to combine the two plots. However, this does not seem to work. I provide a little replicable example here so you can see my problem for yourself:

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

I can print these two plots now independently, but when I try to plot them together, the first plot is overwritten. I tried setting par(mfrow=c(2,1)), which didn't work. Next I tried the following:

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

In this latter case, the positions of the two plots are just fine, but still the first plot vanishes once I add the second (or better, it is overwritten). Any suggestions how to prevent this behavior would be appreciated.


Solution

  • Reading down the long list of arguments to ?print.eff we see that there are some arguments for doing just this:

    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)
    

    The reason par() didn't work is because this package is using lattice graphics, which are based on the grid system, which is incompatible with base graphics. Neither par() nor layout will have any effect on grid graphics.