[R] Lattice: relation = 'free' in scales

Albart albart at dairyconsult.nl
Tue May 25 09:51:17 CEST 2010


Hello list,

I am making graphics for an article which I want to publish. The article is
about several methods (to calculate breeding values of individuals) applied
in several genetic scenarios (scen1 in the example) and using data from two
sources (scen 2 in my example). I want to specify the ylim of my plot and
have relation = 'free' for the yaxis but I would to avoid plotting the axis
for each subplot. I include an example to clarify my problem.

require(lattice)
nmethods <- 3
nscen1 <- 3
nscen2 <- 2
gens <- 1:10
tab <- expand.grid(method = 1:nmethods,
                   scen1 = 1:nscen1,
                   scen2 = 1:nscen2,
                   gen = gens,
                   rep = 1:3)
tab$value <- rnorm(nrow(tab),mean = with(tab,method*1000 + scen1*10 +
scen2*10 + gen*100),sd = 100)

tab$color <- factor(tab$scen2)
levels(tab$color) <- rainbow(length(levels(tab$color)))
tab$pch <- tab$color
levels(tab$pch) <- seq(21,21 + length(levels(tab$pch)))
tab$pch <- as.numeric(as.character(tab$pch))
tab$color <- as.character(tab$color)
  
ylim <- with(tab,tapply(value,method,range))
ylim <- ylim[rep(seq(1,length(ylim)),each = length(unique(tab$scen1)))]
tab$method <- factor(tab$method)
tab$scen1 <- factor(tab$scen1)
pplot <- with(tab,xyplot(value~gen|scen1*method,groups = scen2,as.table =
TRUE,
                         color = color,pch = pch,
                         scales = list(alternating = FALSE,y = list(relation
= 'free',limits = ylim)),
                         panel = function(x,y,groups,...,subscripts){
                          
tapply(1:length(y),list(x,groups[subscripts]),function(ii){
                             color <- color[subscripts[ii]]
                             pch <- pch[subscripts[ii]]
                             panel.xyplot(mean(x[ii]),mean(y[ii]),fill =
color,col = color,pch = pch,cex= 0.5)
                           })},
                           key = list(columns = 2,
                             space = "top",text =
list(unique(as.character(scen2)),col = unique(color)),
                             points = list(pch = unique(pch),fill =
unique(color),col = unique(color)))))

As you can see, I use scales = list(y = list(relation = 'free', limit =
ylim)) because the range differs between the methods and otherwise I loose
all resolution. I like the result except that the yaxis is now displayed for
each plot and not only at the left side of the plot. Since I want the same
plotting range for each row of the plot, this represents an unnecessary use
of space and I would like to remove these axis from my plot, but I am not
able to do so. I would appreciate any help.

Thanks in advance,

Albart Coster
-- 
View this message in context: http://r.789695.n4.nabble.com/Lattice-relation-free-in-scales-tp2229644p2229644.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list