Re: [R] lattice auto.key drop unused levels
Jacob Wegelin wrote: On Sat, Oct 10, 2009 at 8:51 PM, Peter Ehlers wrote: The key will show the levels of the 'groups' factor. So you will have to ensure that the factor fed to groups has the levels that you want displayed. ?xyplot explicitly states that drop.unused.levels will NOT do that for you. So the answer seems to be that there is no way to drop the levels without bypassing the "subset" argument. The following creates the desired effect: xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II" , ] , group=Block [, drop=T], auto.key=T) This gives you the desired effect because you are manipulating the data set used by xyplot to contain a variable 'Block' that has 6 levels only 2 of which are represented. The way that you're specifying the 'groups' argument then drops the unused levels. This is equivalent to doing the following before calling xyplot(): data.to.plot <- subset(Oats, Block %in% c("I", "II")) (at which point 'Block' still has 6 levels), followed by grouping.factor <- data.to.plot$Block[,drop = TRUE] which will drop the unused levels of Block in grouping.factor. Then xyplot(yield ~ nitro, data = data.to.plot, groups = grouping.factor, auto.key = TRUE) whereas dropping levels in the "group" argument does not create the desired effect xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, group=Block [, drop=T], auto.key=T) Yes, here the data set Oats still has all 72 observations and all 6 levels of 'Block' are represented. Block[,drop = TRUE] has no effect because there are no levels to drop. I think the key thing is to realize that 'subset' in xyplot does nothing to the data other than to plot only those rows that are specified by the subset argument. It does not alter the data. Personally, I usually manipulate the data before passing it to plotting functions. Cheers, Peter Ehlers Jacob Wegelin -Peter Ehlers Jacob Wegelin wrote: The following code produces a legend ("key") that mentions the unused levels of Block. library(MEMSS) xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, group=Block, auto.key=T) and adding "drop.unused.levels=T" does not fix it. And in fact even the following does not solve the problem: xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II",], group=Block, auto.key=T) The following workaround solves it, but seems inelegant: junk<-Oats[Oats$Block=="I" | Oats$Block=="II",] junk$Block<-factor(as.character(junk$Block)) xyplot(yield~nitro, group=Block, data=junk, auto.key=T) What is the elegant or "proper R thinking" way to do this? That is, I want to get a key that only mentions the levels of Block that are used in the plot. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] lattice auto.key drop unused levels
On Sat, Oct 10, 2009 at 5:51 PM, Peter Ehlers wrote: > The key will show the levels of the 'groups' factor. So you will > have to ensure that the factor fed to groups has the levels > that you want displayed. ?xyplot explicitly states that > drop.unused.levels will NOT do that for you. > > (Didn't Deepayan just answer something like this?) Yes: https://stat.ethz.ch/pipermail/r-help/2009-October/214516.html and the Lattice book has a longer discussion (in particular section 9.2.5). -Deepayan > -Peter Ehlers > > Jacob Wegelin wrote: >> >> The following code produces a legend ("key") that mentions the unused >> levels of Block. >> >> library(MEMSS) >> xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, >> group=Block, auto.key=T) >> >> and adding "drop.unused.levels=T" does not fix it. And in fact even >> the following does not solve the problem: >> >> xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II",], >> group=Block, auto.key=T) >> >> The following workaround solves it, but seems inelegant: >> >> junk<-Oats[Oats$Block=="I" | Oats$Block=="II",] >> junk$Block<-factor(as.character(junk$Block)) >> xyplot(yield~nitro, group=Block, data=junk, auto.key=T) >> >> What is the elegant or "proper R thinking" way to do this? That is, I >> want to get a key that only mentions the levels of Block that are used >> in the plot. >> >> Thanks >> >> Jacob A. Wegelin >> Assistant Professor >> Department of Biostatistics >> Virginia Commonwealth University >> 730 East Broad Street Room 3006 >> P. O. Box 980032 >> Richmond VA 23298-0032 >> U.S.A. >> E-mail: jwege...@vcu.edu >> URL: http://www.people.vcu.edu/~jwegelin __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] lattice auto.key drop unused levels
On Sat, Oct 10, 2009 at 8:51 PM, Peter Ehlers wrote: > The key will show the levels of the 'groups' factor. So you will > have to ensure that the factor fed to groups has the levels > that you want displayed. ?xyplot explicitly states that > drop.unused.levels will NOT do that for you. So the answer seems to be that there is no way to drop the levels without bypassing the "subset" argument. The following creates the desired effect: xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II" , ] , group=Block [, drop=T], auto.key=T) whereas dropping levels in the "group" argument does not create the desired effect xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, group=Block [, drop=T], auto.key=T) Jacob Wegelin > -Peter Ehlers > > Jacob Wegelin wrote: >> >> The following code produces a legend ("key") that mentions the unused >> levels of Block. >> >> library(MEMSS) >> xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, >> group=Block, auto.key=T) >> >> and adding "drop.unused.levels=T" does not fix it. And in fact even >> the following does not solve the problem: >> >> xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II",], >> group=Block, auto.key=T) >> >> The following workaround solves it, but seems inelegant: >> >> junk<-Oats[Oats$Block=="I" | Oats$Block=="II",] >> junk$Block<-factor(as.character(junk$Block)) >> xyplot(yield~nitro, group=Block, data=junk, auto.key=T) >> >> What is the elegant or "proper R thinking" way to do this? That is, I >> want to get a key that only mentions the levels of Block that are used >> in the plot. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] lattice auto.key drop unused levels
The key will show the levels of the 'groups' factor. So you will have to ensure that the factor fed to groups has the levels that you want displayed. ?xyplot explicitly states that drop.unused.levels will NOT do that for you. (Didn't Deepayan just answer something like this?) -Peter Ehlers Jacob Wegelin wrote: The following code produces a legend ("key") that mentions the unused levels of Block. library(MEMSS) xyplot(yield~nitro, subset=(Block=="I" | Block=="II"), data=Oats, group=Block, auto.key=T) and adding "drop.unused.levels=T" does not fix it. And in fact even the following does not solve the problem: xyplot(yield~nitro, data=Oats[Oats$Block=="I" | Oats$Block=="II",], group=Block, auto.key=T) The following workaround solves it, but seems inelegant: junk<-Oats[Oats$Block=="I" | Oats$Block=="II",] junk$Block<-factor(as.character(junk$Block)) xyplot(yield~nitro, group=Block, data=junk, auto.key=T) What is the elegant or "proper R thinking" way to do this? That is, I want to get a key that only mentions the levels of Block that are used in the plot. Thanks Jacob A. Wegelin Assistant Professor Department of Biostatistics Virginia Commonwealth University 730 East Broad Street Room 3006 P. O. Box 980032 Richmond VA 23298-0032 U.S.A. E-mail: jwege...@vcu.edu URL: http://www.people.vcu.edu/~jwegelin __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.