On 01/15/2010 08:43 AM, kellys17 wrote:>
> Hi,
>
> I have a data set that has columns "bird.species",
"tree.species"and
> "count". I am investigating differences in tree species usge by
two species
> of birds. "Count" is numerical and is a count of observations of
bird
> species x using tree species x. For bird species A I have 3 different
counts
> for each tree species. For bird species B I have only 1 count for each tree
> species.
>
> I have generated a barplot using the following function:
> barplot(tapply(count,list(bird.species,tree.species),mean),beside=TRUE)
>
> This graph is so far ok and gives the mean count for bird species A.
> I want to add error bars to illustrate the variance in mean of bird species
> A for each tree species.
>
> The error bar function I am using is:
> error.bars<-function(yv,z,nn){
> xv<-barplot(yv,ylim=c(0,(max(yv)+max(z))),names=nn,
> ylab=deparse(substitute(yv)))
> g<-(max(xv)-min(xv))/50
> for (i in 1:length(xv)){lines(c(xv[i],xv[i]),c(yv[i]+z[i],yv[i]-z[i]))
> lines(c(xv[i]-g,xv[i]+g),c(yv[i]+z[i],yv[i]+z[i]))
> lines(c(xv[i]-g,xv[i]+g),c(yv[i]-z[i],yv[i]-z[i]))}}
>
> I used "error.bars(ybar1,se1,labels1)" to try generate the error
bars with
> se1<-rep("standard error of a mean", "no. of numbers used
to calculate
> mean")
> labels1<-as.character(levels(tree.species))
> ybar1<-as.vector(tapply(count,tree.species,mean))
>
> but the it failed and the resulting warning I got was:
> Error in barplot.default(yv, ylim = c(0, (max(yv) + max(z))), names = nn,
:
> incorrect number of names
>
> I was wondering If anyone could help with me this warning, or point me in
> the right direction as to how to illustrate the variance in means from bird
> species A without adding any error bars to bird species B (which has no
> variance to show)?
Hi Sean,
The easiest way I can think of is to add a test to your error bar
drawing routine so that it does nothing when the variance is NA:
for(i in 1:length(xv)) {
if(!is.na(z[i])) {
lines...
}
}
However, the error is about the number of names not being equal to the
number of "heights", so you will have to make sure that is fixed, too.
Jim