alejandro munoz
2005-Dec-09 17:03 UTC
[R] lattice legend colors recycling sooner than expected
dear r-helpers, it seems the colors in an automatically generated lattice legend recycle after the 8th color, even when the user has set e.g. superpose.symbol$col to be longer than 8. the following example will illustrate what i mean: z <- data.frame(x=rep(letters[1:15], each=4), y=rnorm(60), groups=rep(LETTERS[1:3], 20)) library(nlme) library(lattice) plot(groupedData(y ~ x | groups, data=z)) # symbol colors recycle after every 8 for plot and legend symbols; # e.g. a, h, and o are cyan. trellis.par.set(superpose.symbol = list(col=rainbow(15))) plot(groupedData(y ~ x | groups, data=z)) # each dot in the plot has a different color, but colors in legend # still recycle every 8 points; e.g. cyan, violet, and blue aren't in legend. in case this is an nlme issue, i examined the three plot.XXXGroupedData methods, but could not find any obvious fixes. is there a simple way of having auto.key "know" how many color entries it should have? alejandro
Deepayan Sarkar
2005-Dec-09 17:19 UTC
[R] lattice legend colors recycling sooner than expected
On 12/9/05, alejandro munoz <guerinche at gmail.com> wrote:> dear r-helpers, > > it seems the colors in an automatically generated lattice legend > recycle after the 8th color, even when the user has set e.g. > superpose.symbol$col to be longer than 8. the following example will > illustrate what i mean: > > z <- data.frame(x=rep(letters[1:15], each=4), y=rnorm(60), > groups=rep(LETTERS[1:3], 20)) > library(nlme) > library(lattice) > plot(groupedData(y ~ x | groups, data=z)) > # symbol colors recycle after every 8 for plot and legend symbols; > # e.g. a, h, and o are cyan. > > trellis.par.set(superpose.symbol = list(col=rainbow(15))) > plot(groupedData(y ~ x | groups, data=z)) > # each dot in the plot has a different color, but colors in legend > # still recycle every 8 points; e.g. cyan, violet, and blue aren't in > legend. > > in case this is an nlme issue, i examined the three > plot.XXXGroupedData methods, but could not find any obvious fixes.It is indeed an nlme issue, although I'm not yet sure how.> is there a simple way of having auto.key "know" how many color entries > it should have?'auto.key' does know; at least for me dotplot(groups ~ y, groups = x, data=z, auto.key = list(space = "right")) uses the correct colors. The problem is that nlme (which was written before lattice existed) doesn't use 'auto.key'. It could have been updated after the fact, but in the spirit of "don't fix it if it ain't broken", I haven't mucked around with it unless necessary. I'll look into it. Deepayan