Hi Ahmed
Without a dataset it is harder to know what is exactly going on How does the following look library(latticeExtra) useOuterStrips(strip = strip.custom(factor.levels = top factor levels par.strip.text = list(cex = 0.9)), strip.left = strip.custom(factor.levels = left factor levels, par.strip.text = par.strip.text = list(cex= 0.9)), xyplot(GrainM~Nrate|S*Loc, data = Ahmed, layout=c(5,3,1), xlab=expression(bold(paste("N rate (kg ", ha^-1,")"))), ylab=expression(bold(paste("Grain yield (Mg ",ha^-1,")"))), ylim=c(10,20), scales = list(alternating=F, y=list(at=c(10,12,14,16,18,20,22)),font=2, cex=0.7, col="black"),aspect = 1, panel = function(x,y,subscripts,groups,...) { #panel.grid(-1,-1) m1 <- lm(y ~ x) x.seq <- data.frame(x=seq(min(x)*0.95,max(x)*1.05,max(x)/10)) pred <- predict(m1, x.seq, se.fit=T) grid.polygon(c(x.seq$x,rev(x.seq$x)), c(pred$fit + 2*pred$se.fit, rev(pred$fit - 2*pred$se.fit) ), gp=gpar(col=0, fill="light grey", alpha = 1), default.units = "native") llines(x.seq$x, pred$fit, lty = 1) panel.xyplot(x,y) print(round(summary(m1)$coef[ 2,c(1,4) ],3) ) ltext(50,18.4,paste("Slope = ",round(summary(m1)$coef[ 2,c(1,4) ],3),sep=""), cex=0.65, adj=0) ltext(50,19.5,paste("Intercept = ",round(summary(m1)$coef[ 1,c(1,4) ],3),sep=""), cex=0.65, adj=0) print(summary(m1)) } ) ) ## useOuterStrips You need to fill the strips in the order of the panels so you will have to put a string of factor names that correspond to the strips on each of the panels. It makes it easier with useOuterStrips Have a look at strip.default xyplot(GrainM~Nrate|S*Loc, data = Ahmed, layout=c(5,3,1), xlab=expression(bold(paste("N rate (kg ", ha^-1,")"))), ylab=expression(bold(paste("Grain yield (Mg ",ha^-1,")"))), ylim=c(10,20), strip=strip.custom(interaction(S,Loc),style=2, # Guess but something along these lines par.strip.text = list(cex = 0.9)), scales = list(alternating=F,y=list(at=c(10,12,14,16,18,20,22)),font=2, cex=0.7, col="black"),aspect = 1, panel = function(x,y,subscripts,groups,...) { #panel.grid(-1,-1) m1 <- lm(y ~ x) x.seq <- data.frame(x=seq(min(x)*0.95,max(x)*1.05,max(x)/10)) pred <- predict(m1, x.seq, se.fit=T) grid.polygon(c(x.seq$x,rev(x.seq$x)), c(pred$fit + 2*pred$se.fit, rev(pred$fit - 2*pred$se.fit) ), gp=gpar(col=0, fill="light grey", alpha = 1), default.units = "native") llines(x.seq$x, pred$fit, lty = 1) panel.xyplot(x,y) print(round(summary(m1)$coef[ 2,c(1,4) ],3) ) ltext(50,18.4,paste("Slope = ",round(summary(m1)$coef[ 2,c(1,4) ],3),sep=""), cex=0.65, adj=0) ltext(50,19.5,paste("Intercept = ",round(summary(m1)$coef[ 1,c(1,4) ],3),sep=""), cex=0.65, adj=0) print(summary(m1)) } ) Regards Duncan Duncan Mackay Department of Agronomy and Soil Science University of New England Armidale NSW 2351 Email: home: mac...@northnet.com.au From: Ahmed Attia [mailto:ahmedati...@gmail.com] Sent: Saturday, 17 January 2015 06:52 To: r-help Cc: Duncan Mackay Subject: Specifying strip names in xyplot (strip.custom) Hi R Users, I would like to specify strip names in xyplot. I have 5 sources (S) and 3 locations (Loc). How I can force R to specifiy the strip names for each source and location. Below is my code; S*Loc represents source by location. I do not know how to specify which panel or factors.levels. In the code below, factor.levels represent three Loc Thanks for your help. Ahmed trellis.device(col=F) xyplot(GrainM~Nrate|S*Loc, data = Ahmed, layout=c(5,3,1), xlab=expression(bold(paste("N rate (kg ", ha^-1,")"))), ylab=expression(bold(paste("Grain yield (Mg ",ha^-1,")"))), ylim=c(10,20), strip=strip.custom(which.panel=3,factor.levels=c("Pierce","HAL","Concord"),s trip.names=c(TRUE),strip.levels=c(TRUE),style=2, par.strip.text = list(cex = 0.9)), scales = list(alternating=F,y=list(at=c(10,12,14,16,18,20,22)),font=2, cex=0.7, col="black"),aspect = 1, panel = function(x,y,subscripts,groups,...) { #panel.grid(-1,-1) m1 <- lm(y ~ x) x.seq <- data.frame(x=seq(min(x)*0.95,max(x)*1.05,max(x)/10)) pred <- predict(m1, x.seq, se.fit=T) grid.polygon(c(x.seq$x,rev(x.seq$x)), c(pred$fit + 2*pred$se.fit, rev(pred$fit - 2*pred$se.fit) ), gp=gpar(col=0, fill="light grey", alpha = 1), default.units = "native") llines(x.seq$x, pred$fit, lty = 1) panel.xyplot(x,y) print(round(summary(m1)$coef[ 2,c(1,4) ],3) ) ltext(50,18.4,paste("Slope = ",round(summary(m1)$coef[ 2,c(1,4) ],3),sep=""), cex=0.65, adj=0) ltext(50,19.5,paste("Intercept = ",round(summary(m1)$coef[ 1,c(1,4) ],3),sep=""), cex=0.65, adj=0) print(summary(m1)) } ) Ahmed Attia, Ph.D. Agronomist & Soil Scientist Post-Doc Research Associate Texas A&M AgriLife Research-Vernon ahmed.at...@ag.tamu.edu Cell phone: 001-979-248-5215 [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.