2013-06-14 20 views
8

Ich versuche, 3 Beispiele der Normalverteilung zu plotten, aber ggplot scheint den Pfad als einen kontinuierlichen zu erkennen und nicht als einen durch die Faktorstufen geschichteten Pfad. Ich bin relativ neu zu ggplot und jede Hilfe würde sehr geschätzt werden.Plotten Normalverteilungen

Hier ist mein Code:

set.seed(5872) 

x<-seq(-7.5,7.5,0.1) 
l<-length(x)*3 
df<-data.frame(P=factor(rep(c("Mean: -1, SD: 0.5","Mean: 0, SD: 1","Mean: 1, SD: 1.5"),  each=l)), 
X=(c(x,x,x)), 
Y=(c(dnorm(x,-1,0.5),dnorm(x,0,1),dnorm(x,1,1.5)))) 

Normal<-ggplot(data=df,aes(X,Y,group=P,color=P))+ 
geom_path()+ 
scale_x_continuous("")+ 
scale_y_continuous("f(x)")+ 
scale_color_discrete("Parameters")+ 
ggtitle("Normal") + 
theme(plot.title = element_text(size=25,lineheight=.8, face="bold")) 

Wie kann ich ggplot bekommen die Faktoren und Grundstück mit den drei verschiedenen Farben zu erkennen? Anstatt einen kontinuierlichen Pfad anzuzeigen?

+8

Sie haben von R Stumm Vektor Recycling gebissen worden! Du hast versehentlich P 3 mal zu lang gemacht. Dann wurden X und Y für jede Ebene von P einmal wiederholt. Man sollte nur eine Änderung vornehmen, wobei man "l <- Länge (x)" ändert und alles funktioniert. – bdemarest

+0

Ah okay vielen Dank, das hätte ich sehen sollen! – Tom

+9

+1 für ein reproduzierbares Beispiel in Ihrem ersten Beitrag. Ich würde @bdemarest bitten, seine Beobachtung als Antwort zu veröffentlichen, damit OP sie als korrekt akzeptieren kann. –

Antwort

2

Ein reproduzierbares Beispiel mit Hinweis von bdemarest:

library(ggplot2) 

    set.seed(5872) 

    x<-seq(-7.5,7.5,0.1) 
    l<-length(x) 
    df<-data.frame(P=factor(rep(c("Mean: -1, SD: 0.5","Mean: 0, SD: 1","Mean: 1, SD: 1.5"), 
      each=l)), 
    X=(c(x,x,x)), 
    Y=(c(dnorm(x,-1,0.5),dnorm(x,0,1),dnorm(x,1,1.5)))) 

    Normal<-ggplot(data=df,aes(X,Y,group=P,color=P))+ 
    geom_path()+ 
    scale_x_continuous("")+ 
    scale_y_continuous("f(x)")+ 
    scale_color_discrete("Parameters")+ 
    ggtitle("Normal") + 
    theme(plot.title = element_text(size=25,lineheight=.8, face="bold")) 

    print(Normal)