On Tue, Mar 6, 2012 at 8:55 PM, Byerly, Mike M (DFG) <mike.bye...@alaska.gov> wrote: > > estimates <- c(67.42,30.49,32.95,23.53,10.26,6.03,23.53,0.93,50.72,24.2,25.84,18.54, 7.16,3.6,9.35,0.33,87.28,37.25,40.16,28.59,13.77,8.92,40.74,1.68,48.28,23.09, 24.49,17.7,6.63,3.28,7.79,0.26,91.63,38.74,41.6,29.74,14.49,9.51,44.16,1.88) > estimates.m<- matrix(estimates, 8,5) > colnames(estimates.m) <- list("est","lci90","uci90","lci95","uci95") > id <- c(1,1,2,2,3,3,4,4) > size <- c("All","All","Large","Large","Medium","Medium","Small","Small") > gear <- rep(c("Camera","Dredge"),4) > cds.est <- data.frame(id,size,gear,estimates.m)
# From this point try this instead: library(lattice) library(gridExtra) dat <- by(cds.est,cds.est$id,function(x) x) plots <- lapply(dat,function(dat){ dotplot(gear ~ est , data=dat, xlim = c(min(dat$lci95-10), max(dat$uci95 +10)), xlab='Density (num / Nmi^2)', main = as.vector(unique(dat$size)), panel=function(x,y) { panel.xyplot(x,y,pch=16,cex=1) panel.segments(dat$lci95,as.numeric(y),dat$uci95,as.numeric(y), lty=1, col=1) panel.segments(dat$lci90,as.numeric(y),dat$uci90,as.numeric(y), lty=1,lwd=4, col='grey60') panel.xyplot(x,y,pch=16,cex=1.2,col='white') panel.xyplot(x,y,pch=1,cex=1.1, col='black') } ) }) do.call(grid.arrange, plots) > # cds.est data frame and stores the plots in a list. Since dotplot() is > part of the # lattice package, I used grid.arrange to tile the plots. In my opinion you are going about it the wrong way. You are not using any of the functionality provided by lattice or dotplot for scaling and panel arrangement. All you use are panel.xyplot and panel.segments, manually calculating limits, labels and arranging the plots yourself - you could have just done this in base graphics (and a loop). But if that's how you want it to look... HTH > > > > library(grid) > > library(gridExtra) > > > > id2 <- 1:max(cds.est$id) > > plots <- vector("list", length(id2)) > > j <- 0 > > for (i in id2) { > > dat <- cds.est[cds.est$id == i,] > > plots[[ j <- j+1]] <- > > dotplot(gear ~ est , data=dat, xlim = c(min(dat$lci95 > -10), max(dat$uci95 +10)), xlab='Density (num / Nmi^2)', > > main = as.vector(unique(dat$size)), > > panel=function(x,y) { > > panel.xyplot(x,y,pch=16,cex=1) > > > panel.segments(dat$lci95,as.numeric(y),dat$uci95,as.numeric(y), lty=1, > col=1) > > > panel.segments(dat$lci90,as.numeric(y),dat$uci90,as.numeric(y), lty=1, > lwd=4, col='grey60') > > > panel.xyplot(x,y,pch=16,cex=1.2,col='white') > > panel.xyplot(x,y,pch=1,cex=1.1, > col='black') > > }) > > > > } > > do.call(grid.arrange, plots) > > > > # The script runs and produces all the plots with the correct estimates, > but the CI's are not > > # plotting correctly. Does anyone have suggestions on what is causing > this? > > > > Thanks, Mike > > > > > > > > > [[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.