Próbuję wykreślić dane typu sieci z GGPLOT2, a następnie nakładam normalny rozkład na dane próbki, aby zilustrować, jak daleko od normalnych danych podstawowych. Chciałbym mieć normalny dystans na górze, aby mieć ten sam średni i stdev co panel.przy użyciu funkcji stat_function i facet_wrap razem w GGPLOT2 w R
oto przykład:
library(ggplot2)
#make some example data
dd<-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("x_value", "Predicted_value", "State_CD")
#This works
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + facet_wrap(~State_CD)
print(pg)
To wszystko działa świetnie i daje piękny wykres trzy panelu danych. Jak dodać normalny dystans na górze? Wydaje użyłbym stat_function, ale to się nie powiedzie:
#this fails
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) + facet_wrap(~State_CD)
print(pg)
Wydaje się, że nie jest coraz stat_function wraz z funkcją facet_wrap. Jak sprawić, by ci dwaj grali ładnie?
------------ EDIT ---------
Próbowałem zintegrować pomysłów z dwóch odpowiedzi poniżej i jestem nadal nie istnieje:
stosując kombinację obu odpowiedziach mogę włamywanie razem to:
library(ggplot)
library(plyr)
#make some example data
dd<-data.frame(matrix(rnorm(108, mean=2, sd=2),36,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("x_value", "Predicted_value", "State_CD")
DevMeanSt <- ddply(dd, c("State_CD"), function(df)mean(df$Predicted_value))
colnames(DevMeanSt) <- c("State_CD", "mean")
DevSdSt <- ddply(dd, c("State_CD"), function(df)sd(df$Predicted_value))
colnames(DevSdSt) <- c("State_CD", "sd")
DevStatsSt <- merge(DevMeanSt, DevSdSt)
pg <- ggplot(dd, aes(x=Predicted_value))
pg <- pg + geom_density()
pg <- pg + stat_function(fun=dnorm, colour='red', args=list(mean=DevStatsSt$mean, sd=DevStatsSt$sd))
pg <- pg + facet_wrap(~State_CD)
print(pg)
który jest bardzo blisko ... chyba coś jest nie tak z normalnego dist wydrukiem:
co ja tu robię źle?
W przyszłości można proszę użyć nazwy zmiennych z obu mieszanych przypadku _or_ podkreślenia, ale nie jednocześnie. To mnie zabija! – hadley
OK ok, to dobra uwaga. :) –
Przesunąłem moją "odpowiedź" w pole pytania. Powinienem to tam umieścić na początek. Moje przeprosiny dla tych, którzy napisali komentarze, ponieważ nie przekazali. Będę bardziej zamyślony, jak to zrobię w przyszłości. –