How to add gaussian curve to histogram created with qplot?

后端 未结 2 1856
心在旅途
心在旅途 2020-12-09 20:30

I have question probably similar to Fitting a density curve to a histogram in R. Using qplot I have created 7 histograms with this command:

 (qplot(V1, data=         


        
2条回答
  •  旧巷少年郎
    2020-12-09 21:17

    Have you tried stat_function?

    + stat_function(fun = dnorm)
    

    You'll probably want to plot the histograms using aes(y = ..density..) in order to plot the density values rather than the counts.

    A lot of useful information can be found in this question, including some advice on plotting different normal curves on different facets.

    Here are some examples:

    dat <- data.frame(x = c(rnorm(100),rnorm(100,2,0.5)), 
                      a = rep(letters[1:2],each = 100))
    

    Overlay a single normal density on each facet:

    ggplot(data = dat,aes(x = x)) + 
      facet_wrap(~a) + 
        geom_histogram(aes(y = ..density..)) + 
        stat_function(fun = dnorm, colour = "red")
    

    enter image description here

    From the question I linked to, create a separate data frame with the different normal curves:

    grid <- with(dat, seq(min(x), max(x), length = 100))
    normaldens <- ddply(dat, "a", function(df) {
      data.frame( 
        predicted = grid,
        density = dnorm(grid, mean(df$x), sd(df$x))
      )
    })
    

    And plot them separately using geom_line:

    ggplot(data = dat,aes(x = x)) + 
        facet_wrap(~a) + 
        geom_histogram(aes(y = ..density..)) + 
        geom_line(data = normaldens, aes(x = predicted, y = density), colour = "red")
    

    enter image description here

提交回复
热议问题