[R] dotplot & lattice problems: y axis values and bg color output in jpg

Sundar Dorai-Raj sundar.dorai-raj at PDF.COM
Sat Oct 23 00:36:52 CEST 2004



Paul Johnson wrote:

> I have a linux system with Fedora Core 2 and R-2.0.
> 
> I was comparing plots made with plot() and dotplot() and discovered a 
> problem. Although the dots are positioned correctly, the numerical 
> labels in the dotplot y axis are not correct.
> 
> I put copies here:
> 
> http://lark.cc.ku.edu/~pauljohn/R/plotTrouble1.jpg
> 
> That is the "correct" one from plot, with the higest value on y showing 
> at 18.
> 
> http://lark.cc.ku.edu/~pauljohn/R/plotTrouble2.jpg
> 
> That is the dotplot one. The picture is basically the same, except the 
> numbers on the y axis only go up to 8.  But the dots are in the correct 
> spots and the x axis is labeled correctly.
> 
> On the screen, the plots have white backgrounds, but the picture from 
> the dotplot turns out gray. Why is that?  Sometimes, if I run another 
> lattice plot in the same session, the colors change to the dark 
> background, and I suppose the same trouble is happening.  Isn't 
> trellis.par.set() going to remain in place for all following trellis plots?
> 
> 
> Here's the code I used to make these 2 graphs.
> 
> x11(height=6.5,width=6.5)
> data2003<- subset(elaine1,POLCYEAR==2003)
> plot(data2003$OLDCRASH,data2003$RENUCYC)
> 
> modall <- lm(RENUCYC~OLDCRASH,data=data2003)
> abline(modall)
> 
> dev.copy(device=jpeg,file="plotTrouble1.jpg")
> dev.off()
> dev.off()
> 
> trellis.par.set(theme=col.whitebg(),height=9,width=6.5)
> dotplot (RENUCYC~OLDCRASH, data=elaine1, xlab="ECR", 
> as.table=T,subset=POLCYEAR==2003,
>         panel=function(x,y)
>         {
>           panel.dotplot(x,y,cex=0.2);
>           panel.lmline(x,y);
>         }
>        )
> 
> jpeg(file="plotTrouble2.jpg",bg="white",height=480,width=480)
> trellis.last.object()
> dev.off()
> dev.off()
> 
> 
> I tried to force the ylim on the dotplot up to 18, but it just produced 
> this even uglier result.
> 
> http://lark.cc.ku.edu/~pauljohn/R/plotTrouble3.jpg
> 

Paul,

dotplot is not doing what you think it's doing. RENUCYC is being forced 
to a factor with 9 levels. I think what you intending to use is xyplot. 
Just

trellis.par.set(theme=col.whitebg(),height=9,width=6.5)
xyplot(RENUCYC~OLDCRASH, data=elaine1, xlab="ECR",
        as.table=T,subset=POLCYEAR==2003,
        panel=function(x,y) {
          panel.dotplot(x,y,cex=0.2) #; no need for semi-colons
          panel.lmline(x,y)
        })

As for your second question, when you call jpeg a new device is called. 
You need to reset the theme after opening the device, or just use 
trellis.device:

trellis.device(jpeg, file="plotTrouble2.jpg",
                theme = col.whitebg(),height=480,width=480)
trellis.last.object()
dev.off()


--sundar




More information about the R-help mailing list