Hi, Since trt is a factor, you use it for indexing. try just delete in the code fill <- my.fill[combined$trt[subscripts]]
Weidong Gu On Fri, Jan 13, 2012 at 11:30 AM, matteo dossena <m.doss...@qmul.ac.uk> wrote: > #Dear All, > #I'm having a bit of a trouble here, please help me... > #I have this data > set.seed(4) > mydata <- data.frame(var = rnorm(100), > temp = rnorm(100), > subj = as.factor(rep(c(1:10),5)), > trt = rep(c("A","B"), 50)) > > #and this model that fits them > lm <- lm(var ~ temp * subj, data = mydata) > > #i want to plot the results with lattice anf fit the regression line, > predicted with my model, trough them > #to do so, I'm using this approach, outlined "Lattice Tricks for the power > useR" by D. Sarkar > > temp_rng <- range(mydata$temp, finite = TRUE) > > grid <- expand.grid(temp = do.breaks(temp_rng, 30), > subj = unique(mydata$subj), > trt = unique(mydata$trt)) > > model <- cbind(grid, var = predict(lm, newdata = grid)) > > orig <- mydata[c("var","temp","subj","trt")] > > combined <- make.groups(original = orig, model = model) > > > xyplot(var ~ temp | subj, > data = combined, > groups = which, > type = c("p", "l"), > distribute.type = TRUE > ) > > > # so far every thing is fine, but, i also whant assign a filling to the data > points for the two treatments trt=1 and trt=2 > # so I have written this piece of code, that works fine, but when it comes to > plot the regression line, it seems that type is not recognized by the panel > function... > > my.fill <- c("black", "grey") > > plot <- with(combined, > xyplot(var ~ temp | subj, > data = combined, > group = combined$which, > type = c("p", "l"), > distribute.type = TRUE, > panel = function(x, y, ..., subscripts){ > fill <- my.fill[combined$trt[subscripts]] > panel.xyplot(x, y, pch = 21, fill = my.fill, col = > "black") > }, > key = list(space = "right", > text = list(c("trt1", "trt2"), cex = 0.8), > points = list(pch = c(21), fill = c("black", "grey")), > rep = FALSE) > ) > ) > plot > > #I've also tried to move type and distribute type within panel.xyplot, as > well as subsseting the data in it panel.xyplot like this > > plot <- with(combined, > xyplot(var ~ temp | subj, > data = combined, > panel = function(x, y, ..., subscripts){ > fill <- my.fill[combined$trt[subscripts]] > panel.xyplot(x[combined$which=="original"], > y[combined$which=="original"], pch = 21, fill = my.fill, col = "black") > panel.xyplot(x[combined$which=="model"], > y[combined$which=="model"], type = "l", col = "black") > }, > key = list(space = "right", > text = list(c("trt1", "trt2"), cex = 0.8), > points = list(pch = c(21), fill = c("black", "grey")), > rep = FALSE) > ) > ) > plot > > #but no success with that either... > #can anyone help me to get the predicted values plotted as a line instead of > being points? > #really appricieate > #matteo > > > > > > [[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 > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ 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 and provide commented, minimal, self-contained, reproducible code.