On 7/8/05, Bret Collier <[EMAIL PROTECTED]> wrote: > R-Users, > Hopefully someone can shed some light on these questions as I had > little luck searching the archives (although I probably missed something > in my search due to the search phrase). I estimated multinomial > probabilities for some count data (number successful offspring) ranging > from 0 to 8 (9 possible response categories). I constructed a barplot > (using barplot2) and I want to "overlay" a normal distribution on the > figure (using rnorm (1000, mean, sd)). My intent is to show that using > a mean(and associated sd) estimated from discrete count data may not be > a valid representation of the distribution of successful offspring. > > Obviously the x and y axes (as structured in barplot2) will not be > equivalent for these 2 sets of information and this shows up in my > example below. > > 1) Is it possible to somehow reconcile the underlying x-axis to the > same scale as would be needed to overly the normal distribution (e.g. > where 2.5 would fall on the normal density, I could relate it to 2.5 on > the barplot)? Then, using axis (side=4) I assume I could insert a > y-axis for the normal distribution. > > 2) Is lines(density(x)) the appropriate way to insert a normal > distribution into this type of figure? Should I use 'curve'? > > If someone could point me in the right direction, I would appreciate > it. > > TIA, Bret > > Example: > > testdata > 0 0.196454948 > 1 0.063515510 > 2 0.149187592 > 3 0.237813885 > 4 0.282127031 > 5 0.066469719 > 6 0.001477105 > 7 0.001477105 > 8 0.001477105 > > > x<-rnorm(1000, 2.84, 1.57) > barplot2(testdata, xlab="Fledgling Number", > ylab="Probability", ylim=c(0, 1), col="black", > border="black", axis.lty=1) > lines(density(x)) >
Maybe something like this using rect and curve: # data from your post testdata <- c(0.196454948, 0.06351551, 0.149187592, 0.237813885, 0.282127031, 0.066469719, 0.001477105, 0.001477105, 0.001477105) x <- 0:9 # setup plot ranges noting max of normal density is at mean xrange <- range(x) + c(-0.5,+0.5) yrange <- range(c(testdata, dnorm(2.84, 2.84, 1.57), 0)) plot(xrange, yrange, type = "n", xlab = "X", ylab = "Probability", xaxt = "n") axis(1, x) # draw bars using rect and density using curve rect(x - 0.5, 0, x + 0.5, testdata, col = "lightgrey") curve(dnorm(x, 2.84, 1.57), min(xrange), max(xrange), add = TRUE) ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html