[R] How to plot Histogram with frequence overlaid by distribution curve

Rolf Turner rolf at math.unb.ca
Mon Mar 1 14:43:09 CET 2004

In response to a posting from WeiQiang Li:

> Hi,
> I am facing the problem that I want to plot a histogram chart set
> freq to true and overlay with normal or weibull or exponential distribution
> curve.
> The sample code is shown as below:
> >samp<-c(-8.2262,-8.2262,-8.2262,-8.20209,-8.09294,-8.07321,-8.07321,
> -8.07321,-8.07175,-8.04948,-8.04948,-8.04948,-8.03848,-8.03848,
> -8.026,-7.92517,-7.92517,-7.77218,-7.62414,-7.62414,-7.62414,
> -7.59027,-7.59027,-7.59027,-7.59027,-7.59027,-7.59027,-7.28924,
> -7.28924,-6.78729,-6.25307)
> >hist(samp,freq=TRUE,br=20)
> >curve(dnorm(x,mean=mean(samp),sd=sd(samp)),add=TRUE)
> In the chart created based on above command, curve scale is too small
> compared to the freqeunce. My question here is how to adjust the scale of
> distribution curve. Thanks !

Gabor Grothendieck wrote:

> histdata <- hist(samp,freq=TRUE,br=20)
> curve(max(histdata$count)*dnorm(x,mean=mean(samp),sd=sd(samp)),add=TRUE)

This is a perfectly correct answer to a question that should not have
been asked in the first place.  What WeiQiang Li proposes to do makes
no sense at all, and will simply confuse and mislead the viewer/reader.
If a histogram is to be overlaid with a density curve that histogram
should represent a density and hence should be plotted on the density
scale --- NOT on the frequency scale.


					Rolf Turner
					rolf at math.unb.ca

More information about the R-help mailing list