[R] trellis plot
Renaud Lancelot
lancelot at sentoo.sn
Thu Nov 29 09:51:50 CET 2001
Hi Brad,
Here is a function adapted from panel.superpose (S+ version). Please
note the use of llines instead of lines (bottom of the code).
Hope this helps;
Renaud
panel.superpose.loess <- function(x, y, subscripts, groups,
lwd = superpose.line$lwd, lty = superpose.line$lty, col = NULL,
f=2/3, iter=3, delta = 0.1*diff(range(x)), ...){
superpose.line <- trellis.par.get("superpose.line")
groups <- as.numeric(as.factor(groups))[subscripts]
max.groups <- max(groups)
lty <- rep(lty, length = max.groups)
lwd <- rep(lwd, length = max.groups)
if(is.null(col)) {
sl <- rep(superpose.line$col, length = max.groups)
col <- numeric(max.groups)
for(i in 1:max.groups) col[i] <- sl[i]}
else col <- rep(col, length = max.groups)
N <- seq(along = groups)
for(i in sort(unique(groups))) {
which <- N[groups == i]
j <- which # no sorting
llines(lowess(x[j], y[j], f = f, iter = iter, delta = delta),
col = col[i], lwd = lwd[i], lty = lty[i], ...)
}
}
library(lattice)
data(ethanol)
EE <- cut(ethanol$E, breaks = quantile(ethanol$E, prob = seq(0, 1,
1/3)), include.lowest = T)
trellis.device(bg = 0)
xyplot(NOx ~ C, groups = EE, data = ethanol,
key = list(space = "right", title = "EE",
text = list(levels(EE), cex = 1.2),
lines = list(lty = c(1,2,4), pch = c(1, 8, 16), col = 1:3,
type = "b", cex = 1.1)),
panel = function(x, y, ...) {
panel.superpose(x, y, pch = c(1, 8, 16), col = 1:3, ...)
panel.superpose.loess(x, y, lty = c(1,2,4), col = 1:3, ...)
}
)
Brad Buchsbaum wrote:
>
> Hi,
>
> I'd like to plot 4 groups of data using xyplot and panel.superpose so
> that the points are overlayed on a single plot. For each group of data
> I'd also like a loess smoothed function (using panel.loess). I have
> tried the following:
>
> xyplot(series ~ time | gr, data=etable,
> panel = function(x,y, ...) {
> panel.superpose(x,y, ...)
> panel.loess(x,y,span=.15)
>
> }
> )
>
> However, this gives me only a single loess curve (collapsed across
> groups) whereas I would like one curve for each group (just as I get one
> color for each set of points from the panel.superpose).
>
> Is there a way to accomplish this?
>
> thanks,
>
> Brad Buchsbaum
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
--
Dr Renaud Lancelot, vétérinaire
CIRAD, Département Elevage et Médecine Vétérinaire (CIRAD-Emvt)
Programme Productions Animales
http://www.cirad.fr/presentation/programmes/prod-ani.shtml
ISRA-LNERV tel (221) 832 49 02
BP 2057 Dakar-Hann fax (221) 821 18 79 (CIRAD)
Senegal e-mail renaud.lancelot at cirad.fr
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list