varias superponer studio normal lineas histogramas histograma graficos graficas ggplot curva con r ggplot2

studio - superponer graficas en r ggplot



Histograma de superposiciĆ³n con curva de densidad (2)

Estoy tratando de hacer un histograma de valores de densidad y superponerlo con la curva de una función de densidad (no la estimación de densidad).

Usando un ejemplo normal estándar simple, aquí hay algunos datos:

x <- rnorm(1000)

Puedo hacer:

q <- qplot( x, geom="histogram") q + stat_function( fun = dnorm )

pero esto da la escala del histograma en frecuencias y no en densidades. con ..density.. puedo obtener la escala correcta en el histograma:

q <- qplot( x,..density.., geom="histogram") q

Pero ahora esto da un error:

q + stat_function( fun = dnorm )

¿Hay algo que no estoy viendo?

Otra pregunta, ¿hay alguna manera de trazar la curva de una función, como curve() , pero luego no como layer?


¡Aqui tienes!

# create some data to work with x = rnorm(1000); # overlay histogram, empirical density and normal density p0 = qplot(x, geom = ''blank'') + geom_line(aes(y = ..density.., colour = ''Empirical''), stat = ''density'') + stat_function(fun = dnorm, aes(colour = ''Normal'')) + geom_histogram(aes(y = ..density..), alpha = 0.4) + scale_colour_manual(name = ''Density'', values = c(''red'', ''blue'')) + theme(legend.position = c(0.85, 0.85)) print(p0)


Una alternativa más escueta a la respuesta de Ramnath, pasando la media observada y la desviación estándar, y usando ggplot lugar de qplot :

df <- data.frame(x = rnorm(1000, 2, 2)) # overlay histogram and normal density ggplot(df, aes(x)) + geom_histogram(aes(y = stat(density))) + stat_function( fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)), lwd = 2, col = ''red'' )