# I have some population estimates and confidence intervals for various
size classes 

# of animals captured with two gear types.  I'd like to plot the
estimates along with 

# the 90 and 95% CI's by size class for each gear type.

# The data can be read in as:

 

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,2
3.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)

 

# The following script works fine for plotting one size class at a time
using dotplot() and is how I 

# would like the plots to look

 

library(lattice)

dat1 <- cds.est[cds.est$id == 1,]

dotplot(gear ~ est , data=dat1, xlim = c(min(dat1$lci95 -10),
max(dat1$uci95 +10)), xlab='Density (num / Nmi^2)',

                main = as.vector(unique(dat1$size)),

                panel=function(x,y) {

                                panel.xyplot(x,y,pch=16,cex=1)

 
panel.segments(dat1$lci95,as.numeric(y),dat1$uci95,as.numeric(y), lty=1,
col=1)

 
panel.segments(dat1$lci90,as.numeric(y),dat1$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')

})

 

# Since I have multiple size classes and will producing similar plots
for other data sets

# I've written the following script using a loop.  The script loops over
the "id" variable in the 

# 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.  

 

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]]

