I am showing two alternatives, both from the HH package.
install.packages("HH")
The first one does essentially what you request,
smithdata <- src[c("x", "trt")]
smithdata$timefactor <- factor(src$time)
position(smithdata$timefactor) <- as.numeric(levels(smithdata$timefactor))
position(smithdata$trt) <- c(7, 17)
smithdata
intxplot(x ~ timefactor, data=smithdata, groups=trt, se=TRUE, ylim=c(-1,9),
cv=1, main="this is your graph, with critical value=1.00")
intxplot(x ~ timefactor, data=smithdata, groups=trt, se=TRUE, ylim=c(-1,9),
main="this is your graph with more typical critical
value=1.96")
## I don't know what the red and green dots on your sample graph signify, so
## I didn't attempt to reproduce them.
## When I look at interaction plots, I normally want to look at both
## sequences, interchanging the role of the x-variable and the
## trace-variable. Therefore I recommend
interaction2wt(x ~ timefactor*trt, data=smithdata, simple=TRUE)
Rich
On Tue, May 29, 2012 at 4:42 PM, John Smith <zmring@gmail.com> wrote:
> 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]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
>
http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]