Re: [R] Lattice dotplot with symbols sized and colored

From: Deepayan Sarkar <deepayan_at_stat.wisc.edu>
Date: Tue 03 May 2005 - 23:30:17 EST

On Tuesday 03 May 2005 06:39, David Kidd wrote:
> Sundar suggested setting up a theme which I have done...
>
> my.theme <- function() {
> theme <- col.whitebg()
> symb <- theme$superpose.symbol
> symb$col=
> c("red","blue","green","yellow","orange","black","purple") #symb$pch
> is c(1,3,6,0,5,16,17) by default for col.whitebg
> theme$superpose.symbol <- symb
> theme
> }
> trellis.par.set(theme = my.theme())
> # from ?dotplot
> dotplot(sporder ~ cvarorder | direct, data=sp.nc.bdrs.data,
> groups = sp.nc.bdrs.data$mysign,
> cex=abs(sp.nc.bdrs.data$mwZ * 0.05),
> xlab="climate variables",
> ylab="species",
> scales = list(y = list(labels = as.character(spname),at = 1:12, cex =
> 0.5), x = list(labels = as.character(my.ylabel), at = 1:66, rot=90,
> cex = 0.5), alternating = 3))
>
>
> Now if I am understanding lattice correctly setting symb$cex sets the
> size multiplier for symbols within each group but does not support
> the differential sizing of symbols for each record independently
> within each group. Hence I have tried to use a 'global' cex (after
> the groups statement), however, this has no effect on the displayed
> symbol size. Do I need to change the pch or another parameter to draw
> sized filled circles as is the default symbol for dotplot?

Yes, canned features of lattice are not enough for this. Here's something that should work:

with(sp.nc.bdrs.data,

     dotplot(sporder ~ cvarorder | direct, 
             col.var = factor(mysign),
             cex.var = abs(mwZ),
             col = c('green', 'red'),
             panel = function(x, y, cex, col, cex.var, col.var,
                              subscripts, ...) {
                 panel.dotplot(x, y,
                               col = col[col.var[subscripts]],
                               cex = cex.var[subscripts] * 0.05, ...)
             }))

Here's a version with the barley data (not a very good example, though):

with(barley,

     dotplot(site ~ yield, 
             col.var = factor(year),
             cex.var = yield,
             col = c('green', 'red'),
             panel = function(x, y, cex, col, cex.var, col.var,
                              subscripts, ...) {
                 panel.dotplot(x, y,
                               col = col[col.var[subscripts]],
                               cex = cex.var[subscripts] * 0.03, ...)
             }))

Deepayan



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 04 00:10:09 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:32 EST