Dear R users,

I am trying to use xyplot to draw group mean and CI. The following is the
sample code. But I want:

   1. Use different colors and symbols to draw individual points, CI and
   the lines connect group means from different time points;
   2. Add jitters to x axis to allow CIs not be overlapped

Could anyone modify the attached code to achieve this?

Thanks





library(lattice)
set.seed(123)
src <- data.frame(time = rep(c(1, 6, 24), rep(6,3)), trt =
rep(rep(c('C','T'), each=3), 3))
src <- transform(src, x=sqrt(time)+2*(trt=='C')+rnorm(18), trt =
ordered(trt, levels=c('C','T')))
src <- src[-5,]
src$m <- ave(src$x, src[c('time','trt')], FUN = mean)
src$sd <- ave(src$x, src[c('time','trt')], FUN = sd)
src$n <- ave(src$x, src[c('time','trt')], FUN = length)
src <- transform(src, se = sd/sqrt(n))
src <- transform(src, cl=m-se, cu=m+se)

prepanel.ci <- function(x, y, ly, uy, subscripts, ...)
  {
    x <- as.numeric(x)
    ly <- as.numeric(ly[subscripts])
    uy <- as.numeric(uy[subscripts])
    list(ylim = range(y, uy, ly, finite = TRUE))
  }

panel.ci <- function(x, y, ly, my, uy, subscripts, ...)
  {
    x <- as.numeric(x);    y <- as.numeric(y);  my <-
as.numeric(my[subscripts])
    ly <- as.numeric(ly[subscripts]);  uy <- as.numeric(uy[subscripts])
    panel.xyplot(x, y, ...)
    panel.arrows(x, ly, x, uy, length = 0.25, unit = "native", angle = 90,
code = 3)
    panel.lines(x, my)
  }

par.settings <- list(superpose.symbol = list(col = c("red", "green",
"blue"),
                       fill = c("red", "green", "blue"), pch=15:17),
                      superpose.line = list(col = c("red", "green",
"blue")))
windows(width=10.67, height=6.60)
xyplot(x ~ time, xlab="Time", ylab="X", groups=trt, data=src, trt=src$trt,
       ly = src$cl, uy = src$cu, mx = src$time, my = src$m, type="p",
       prepanel = prepanel.ci, panel = panel.superpose, panel.groups =
panel.ci,
       auto.key = list(space = "top",  points = TRUE, lines = TRUE,
columns=2),
       par.settings = par.settings)

	[[alternative HTML version deleted]]

