Traçando funções de densidade pré-determinada utilizando ggplot e R
Pergunta
Eu tenho três conjuntos de diferentes comprimentos de dados e gostaria de traçar funções de densidade de todos os três na mesma parcela. Isto é para a frente com bases gráficos:
n <- c(rnorm(10000), rnorm(10000))
a <- c(rnorm(10001), rnorm(10001, 0, 2))
p <- c(rnorm(10002), rnorm(10002, 2, .5))
plot(density(n))
lines(density(a))
lines(density(p))
O que me dá algo como isto:
alt texto http://www.cerebralmastication.com /wp-content/uploads/2009/10/density.png
Mas eu realmente quero fazer isso com ggplot2 porque eu quero adicionar outros recursos que estão disponíveis apenas com ggplot2. Parece que GGPLOT realmente quer levar meus dados empíricos e calcular a densidade para mim. E isso me dá um monte de lábio porque meus conjuntos de dados são de diferentes comprimentos. Então, como posso obter esses três densidades a trama em ggplot2?
Solução
O segredo para a felicidade na ggplot2 é colocar tudo no "longo" (ou o que eu acho orientada matriz pessoas chamaria de "escassa") formato:
df <- rbind(data.frame(x="n",value=n),
data.frame(x="a",value=a),
data.frame(x="p",value=p))
qplot(value, colour=x, data=df, geom="density")
Se você não quiser cores:
qplot(value, group=x, data=df, geom="density")