Thanks to Deepayan, I have a corrected version of how to color points in a
qqmath plot according to another variable. Using the barley data for a more
concise example::
qqmath(~ yield | variety, data = barley, groups=year,
auto.key=TRUE,
prepanel = function(x, ...) {
list(xlim = range(qnorm(ppoints(length(x)))))
},
panel = function(x, ...) {
xx <- qnorm(ppoints(length(x)))[order(x)]
panel.xyplot(x = xx, y = x, ...)
})
The example I posted previously (and shown below) is not correct. My
apologies.
Kevin
On Wed, May 27, 2009 at 11:05 AM, Kevin W <kw.statr@gmail.com> wrote:
> Having solved this problem, I am posting this so that the next time I
> search for how to do this I will find an answer...
>
> Using qqmath(..., groups=num) creates a separate qq distribution for each
> group (within a panel). Using the 'col' or 'pch' argument
does not
> (usually) work because panel.qqmath sorts the data (but not 'col'
or 'pch')
> before plotting. Sorting the data before calling qqmath will ensure that
> the sorting does not change the order of the data.
>
> For example, to obtain one distribution per voice part and color the point
> by part 1 or part 2:
>
> library(lattice)
> singer <- singer
> singer <- singer[order(singer$height),]
> singer$part <- factor(sapply(strsplit(as.character(singer$voice.part),
> split = " "), "[", 1),
> levels = c("Bass", "Tenor", "Alto",
"Soprano"))
> singer$num <- factor(sapply(strsplit(as.character(singer$voice.part),
split
> = " "), "[", 2))
> qqmath(~ height | part, data = singer,
> col=singer$num,
> layout=c(4,1))
>
>
>
> Kevin
>
>
[[alternative HTML version deleted]]