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) ==================================================================== Please note that this e-mail and any files transmitted with it may be privileged, confidential, and protected from disclosure under applicable law. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any reading, dissemination, distribution, copying, or other use of this communication or any of its attachments is strictly prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and deleting this message, any attachments, and all copies and backups from your computer.
On 8/11/07, Yuelin Li <liy12 at mskcc.org> 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