Skip to content

xyplot: several plots in one creates y-scale problem

2 messages · John, Duncan Mackay

#
Hello,

I've been looking for a solution to this problem for some time now but
I seem unable to solve it.. so this is the case: I want to plot 4 time
series in the same graph using xyplot(). When I do this with

xyplot(mydata[,2]+mydata[,3]+mydata[,4]+mydata[,5] ~ mydata[,1], data
= mydata,
        type = "l",
        auto.key = list(space="right", lines = T, points = F),
        par.settings = simpleTheme(lty = c(1,2,3,4))
        )

I get a graph where all lines are "maximized" to cover the entire y-
scale width. I.e., they are use their own scale independent of each
other (my data has some columns that are one magnitude smaller than
the others). How do I force them all to use the same y-scale?

I found this thread: http://n4.nabble.com/superimposing-xyplots-on-same-scale-td905525.html,
but  I'm not really sure what is going on there. Any ideas?

/J
1 day later
#
Hi

As you did not provide an example as per posting guide here is one dataset 
cobbled from zoo help.
It is fairly rough but is optioned up to give you an idea.
The legend takes is cues from trellis.par.set() and you can set this for 
the plot by using par settings
It makes use of strip.left which gives you more space for the panel area 
rather than taken up by horizontal strips.

require(zoo)
require(lattice
z1 <-  matrix(rep(1:12,4)+round(rnorm(48),1),12,4,
               dimnames=list(1:12,paste("C",1:4) ) )
z2 <-zoo(z1, as.Date("2003-01-01") + 0:11)

xyplot(z2,
        auto.key = list(text=paste(names(z2)), points = FALSE, lines = T, 
space = "bottom"),
        par.settings = list(superpose.line = list(col = rep(1,7,
                                                  lty = rep(1, 7)) )),
        strip.left = strip.custom(factor.levels = paste("C",1:4),
                           par.strip.text = list(cex = 0.75),
                           horizontal = FALSE),
        strip = F,
        scales=list(x=list(at=as.numeric(as.Date("2003-01-01") + 
0:11)[seq(1,12,2)],
                           labels=paste(format(c(as.Date("2003-01-01") + 
0:11)[seq(1,12,2)],"%d %b"))),
                    y = list(alternating = T,
                             limits      = list(c(0,12),c(0, 12), c(0, 12), 
c(0, 15)) ,
                             relation    = "free",
                             rot         = 0)
                    ) ,
        col=1


)

HTH

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
ARMIDALE NSW 2351
Email Home: mackay at northnet.com.au
At 09:09 3/01/2010, you wrote: