¿Has probado stat_function
?
+ stat_function(fun = dnorm)
es probable que desee para trazar los histogramas utilizando aes(y = ..density..)
con el fin de representar los valores de densidad en lugar de los conteos.
Se puede encontrar mucha información útil en la pregunta this, que incluye algunos consejos sobre el trazado de diferentes curvas normales en diferentes facetas.
He aquí algunos ejemplos:
dat <- data.frame(x = c(rnorm(100),rnorm(100,2,0.5)),
a = rep(letters[1:2],each = 100))
de superposición una sola densidad normal sobre cada faceta:
ggplot(data = dat,aes(x = x)) +
facet_wrap(~a) +
geom_histogram(aes(y = ..density..)) +
stat_function(fun = dnorm, colour = "red")
partir de la pregunta I ligado a, crear una trama de datos independiente con las diferentes curvas normales:
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))
)
})
y la trama ellos por separado utilizando 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")
no se pueden mezclar las funciones de gráficos de bases ('líneas()' etc) con gráfico reticulado como el usado por la gpplot2 ** ** ** y ** celosía paquetes. –