[R] superimpose density line over hist

(Ted Harding) Ted.Harding at nessie.mcc.ac.uk
Tue Dec 13 16:50:24 CET 2005


On 13-Dec-05 Albert Vilella wrote:
> Hi all,
> 
> I'm trying to superimpose a rchisq density line over a histogram with
> something like:
> 
> hist(alnlength)
> lines(density(rchisq(length(alnlength), 4)),col="red")
> 
> But the rchisq line won't appear anywhere,
> 
> Anyone knows what I am missing here?

Well, it's certainly somewhere, but not within the window of your
graphic!

What you're missing is

a) Breaks in 'hist'

b) Allowing for (1) the widths of the bins, (2) the size of
   the sample, when you drawn the curve.

Example (this should work most of the time, but if it doesn't
because you have a sample that goes out of range just try again):

  alnlength<-rchisq(1000,4)
  x<-0.25*(0:100)
  hist(alnlength,breaks=0.25*(0:100))
  lines(x,1000*dchisq(x,4)*0.25)

Note that to get the 'lines' matching the histogram you have to
a) multiply the density by the binswidth to get probabilities;
b) multiply by the sample size so that the vertical scale of
   the curve matches that of the histogram (which here is showing
   counts).

If you don't want to set the breakpoints explicitly but leave it
to 'hist', you can subsequently extract the breakpoints from the
'hist' object and carry on from there.

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 13-Dec-05                                       Time: 15:50:21
------------------------------ XFMail ------------------------------




More information about the R-help mailing list