Esto ha sido contestada here y parcialmente here.
Si desea que el eje y tenga recuentos de frecuencia, entonces la curva normal debe escalarse de acuerdo con el número de observaciones y el ancho de la ranura.
# Simulate some data. Individuals' heights in cm.
n <- 1000
mean <- 165
sd <- 6.6
binwidth <- 2
height <- rnorm(n, mean, sd)
qplot(height, geom = "histogram", breaks = seq(130, 200, binwidth),
colour = I("black"), fill = I("white"),
xlab = "Height (cm)", ylab = "Count") +
# Create normal curve, adjusting for number of observations and binwidth
stat_function(
fun = function(x, mean, sd, n, bw){
dnorm(x = x, mean = mean, sd = sd) * n * bw
},
args = c(mean = mean, sd = sd, n = n, bw = binwidth))
EDITAR
O, para un enfoque más flexible que permite el uso de facetas y se basa en un enfoque que aparece here, crear un conjunto de datos independiente que contiene los datos para las curvas normales y superponer estos.
library(plyr)
dd <- data.frame(
predicted = rnorm(720, mean = 2, sd = 2),
state = rep(c("A", "B", "C"), each = 240)
)
binwidth <- 0.5
grid <- with(dd, seq(min(predicted), max(predicted), length = 100))
normaldens <- ddply(dd, "state", function(df) {
data.frame(
predicted = grid,
normal_curve = dnorm(grid, mean(df$predicted), sd(df$predicted)) * length(df$predicted) * binwidth
)
})
ggplot(dd, aes(predicted)) +
geom_histogram(breaks = seq(-3,10, binwidth), colour = "black", fill = "white") +
geom_line(aes(y = normal_curve), data = normaldens, colour = "red") +
facet_wrap(~ state)
cheque esta respuesta mía sobre una cuestión relacionada, donde he escrito una función genérica para superponer histograma en parcela densidad. http://stackoverflow.com/questions/6847450/r-how-to-plot-gumbel-distribution-using-ggplot2s-stat-function/6848958#6848958 – Ramnath
Pero esa función requiere valores de densidad en el eje y, ¿verdad? ¡Deseo mantener mis recuentos de frecuencia allí! No quiero una gráfica de densidad, sino una curva normal simple. – Bloomy
pero la curva normal tiene densidades. entonces estoy confundido quieres una curva normal con conteos de frecuencia? – Ramnath