To pytanie pojawiło się, gdy próbowałem narysować standardowy rozkład normalny za pomocą ggplot (łatwe do wykonania przy użyciu funkcji stat_function), a także pokolorować obszar pod krzywą dla różnych kwintyli -ggplot2 stat_function - czy możemy użyć wygenerowanych wartości y na innych warstwach
że w stanie to zrobić z geom_line i geom_ribbon po utworzonego ramkę danych z różnych wartości X i odpowiednie wartości dnorm dla każdego X, jak Y
data = data.frame(x=seq(-3,3,length.out=1000))
data$y=dnorm(data$x)
data$Quintile <- with(data,ifelse(x<qnorm(0.2),"Bottom",
ifelse(x<qnorm(0.4),"Second",
ifelse(x<qnorm(0.6),"Middle",
ifelse(x<qnorm(0.8),"Fourth","Top")))))
data$Quintile <- factor(data$Quintile, levels=c("Bottom","Second","Middle","Fourth","Top"))
ggplot(data,aes(x=x,y=y,fill=Quintile))+geom_ribbon(aes(ymax=y),ymin=0,alpha=0.5)+
geom_line(color="black")+theme_bw()+theme(legend.position="bottom")+
scale_fill_manual(values=c("darkgreen","red","purple","blue","gray"))+
geom_vline(xintercept=c(qnorm(c(0.2,0.4,0.6,.8))),color=c("darkgreen","red","purple","blue"),size=1)+
scale_y_continuous("",breaks=NULL)+scale_x_continuous("",breaks=NULL)
i płetwa d bardziej zachęca do korzystania z funkcji stat_function i domyślam się, że musi tworzyć swój zestaw wartości y, aby narysować linię - próbowałem uzyskać dostęp do tych na innych warstwach, aby dodać kolorowe paski, ale nie mogłem tego zrobić - chcę zobaczyć czy ktoś potrafi wyjaśnić, jak to można zrobić i dlaczego nie możemy
innymi słowy zamiast generowania danych siebie i używać geom_line narysować krzywą, chcę zrobić coś podobnego
ggplot(NULL,aes(x=c(-3,3))) + stat_function(fun=dnorm)
i wykorzystania dane wygenerowane przez funkcję stat_ do kolorowania - nie byłem w stanie uzyskać dostępu do wygenerowanych wartości y (próbowałem użyć na przykład ..y ..)
Czy istnieje sposób na wykorzystanie tych wartości? Jeśli tak to jak?
Będziesz łatwiej pomóc, jeśli podasz kod używany do tworzenia ramki danych i narysować wykres. – eipi10