Reputation: 2694
Consider the following example plot:
mtcars %>% ggplot() + stat_bin(aes(x=wt, y=..density..), binwidth=0.2)
The maximum value of density is near to 0.8. Is it possible to know its exact value?
According to stat_bin
documentation, ..density..
represents the density of points in bin, scaled to integrate to 1, but this does not help me to much to understand how these values are computed in practice, or how to get the maximum density point (as it also depends on the binwidth
set).
The closer I have get is with:
binwidth = 0.2
((mtcars$wt %/% binwidth)*binwidth) %>% table %>% prop.table %>% max
But it does return the value observed in the plot.
Any ideas?
Upvotes: 1
Views: 1064
Reputation: 76
you can try this
binwidth=0.2
x=mtcars$wt
x_bins <- table(cut(x,breaks=seq(min(x),max(x),by = binwidth)),useNA = "ifany" )
max(x_bins)/(sum(x_bins)*binwidth )
#[1] 0.78125
or
gg_plot <- mtcars %>% ggplot() + stat_bin(aes(x=wt, y=..density..), binwidth=binwidth)
max(ggplot_build(gg_plot)$data[[1]][[1]])
Upvotes: 1
Reputation: 270338
Not clear what in advance refers to but if you are looking for the maximum of the density curve then try this:
dens <- density(mtcars$wt)
plot(dens)
max(dens$y)
## [1] 0.5068726
Upvotes: 2