R - What algorithm does geom_density() use and how to extract points/equation of curves?

前端 未结 2 958
死守一世寂寞
死守一世寂寞 2020-12-03 00:11

I would like to know what is geom_density() exactly doing, so I justify the graph and if there is any way of extracting the function or points that generates for each of the

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-03 00:30

    Typing get("compute_group", ggplot2::StatDensity) (or, formerly, get("calculate", ggplot2:::StatDensity)) will get you the algorithm used to calculate the density. (At root, it's a call to density() with kernel="gaussian" the default.)

    The points used in the plot are invisibly returned by print.ggplot(), so you can access them like this:

    library(ggplot2)
    m <- ggplot(movies, aes(x = rating))
    m <- m + geom_density()
    p <- print(m)
    head(p$data[[1]], 3)
    #           y      x   density   scaled  count PANEL group ymin      ymax
    # 1 0.0073761 1.0000 0.0073761 0.025917 433.63     1     1    0 0.0073761
    # 2 0.0076527 1.0176 0.0076527 0.026888 449.88     1     1    0 0.0076527
    # 3 0.0078726 1.0352 0.0078726 0.027661 462.81     1     1    0 0.0078726
    
    
    ## Just to show that those are the points you are after, 
    ## extract and use them to create a lattice xyplot 
    library(gridExtra)
    library(lattice)
    mm <- xyplot(y ~x, data=p$data[[1]], type="l")
    

    enter image description here

提交回复
热议问题