On 8/11/07, Yuelin Li <[EMAIL PROTECTED]> wrote: > In the hypothetical example below, how do I add two segments() into > the two panels, respectively? Say segments(x0=5, y0=10, x1=5, y1=20) > on the left and segments(x0=15, y0=-10, x1=15, y1=-2) on the right? > Many thanks in advance, > > Yuelin Li. > > ps. part of the code came from a solution given by Deepayan Sarkar. > > ------------------- > library(lattice) > set.seed(12345) > x <- 0:20 > y.male.obs <- - 1.2 * x + 22 + rnorm(length(x), sd = 3) > y.male.prd <- - 1.2 * x + 22 > y.fema.obs <- - 2.2 * x + 30 + rnorm(length(x), sd = 2) > y.fema.prd <- - 2.2 * x + 30 > tdat <- data.frame(x = rep(x, 8), > y = rep(c(y.male.obs, y.male.prd, y.fema.obs, y.fema.prd), 2), > sex = rep(rep(c("m", "f"), each = 2*length(x)), 2), > cohort = rep(c("1970", "1980"), each = 4*length(x)), > source = rep(rep(c("obs", "prd"), each = length(x)), 4) ) > xyplot(y ~ x | as.factor(cohort), data = tdat, > groups = interaction(sex, source), > type = c("p", "p", "l", "l"), distribute.type = TRUE)
If this is a one-off requirement, the simplest solution is: xyplot(y ~ x | as.factor(cohort), data = tdat, groups = interaction(sex, source), type = c("p", "p", "l", "l"), distribute.type = TRUE, panel = function(...) { panel.xyplot(...) switch(panel.number(), panel.segments(x0=5, y0=10, x1=5, y1=20), panel.segments(x0=15, y0=-10, x1=15, y1=-2)) }) This is not generalizable, but you haven't told us your general use case. -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 and provide commented, minimal, self-contained, reproducible code.