leo_wa <kwngai6022 <at> hotmail.com> writes:

> 
> 
> i want to plot the histogram and the curve in the same graph.if i have a set
> of data ,i plot the histogram and also want to see what distribution it
> was.So i want to plot the curve to know what distribution it like.


You will find below an example using only basic plotting functions. 
The created function (called histplot) plots a histogram of the data, 
along with a density kernel estimate of the distribution and 
(if asked by option ncurve=T) the normal distribution 
(with mean and sd computed from the original data). 

Hope this will help

Matthieu


#generating random values to be plotted
dat <- rnorm(100)

#plotting function 
histplot <- function(dat, breaks="Sturges", ncurve=TRUE, ...)
{
        #compute the histogram and density of "dat"
        hdat <- hist(dat, breaks=breaks, plot=F)
        ddat <- density(dat)
        
        #compute the xlim and ylim of the plot
        # i.e. the min and max of the different superimposed 
        #plots (hist, density and normal curves)
        xlim <- range(ddat$x)
        if(ncurve)
        {
                #max of the normal curve                
                maxnorm <- pnorm(mean(dat), mean=mean(dat), sd=sd(dat))
                ylim <- c(0,  max(hdat$density,ddat$y,maxnorm))
        }
        else
        {
                ylim <- c(0,  max(hdat$density,ddat$y))
        }
        
        #plotting 
        plot(hdat,
                freq=F,
                xlim=xlim, ylim=ylim, ...)
        lines(ddat)
        if (ncurve) curve(dnorm(x, mean=mean(dat), sd=(sd(dat))), 
                                lty=3, add=TRUE)
}

#usage
histplot(dat)
histplot(dat, ncurve=F)
histplot(dat, col="blue") #arguments are passed to the hist plotting function

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to