2013-06-14 6 views
8

Я пытаюсь построить 3 примера нормального распределения, однако ggplot, по-видимому, распознает путь как один непрерывный, а не один стратифицированный уровнями факторов. Я относительно новичок в ggplot, и любая помощь будет очень признательна.Построение нормальных распределений

Вот мой код:

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")) 

Как я могу получить ggplot распознавать факторы и сюжет с 3-х различных цветов? Вместо того, чтобы показывать один непрерывный путь?

+8

Вы были укушены немым вектор рециркуляцией АиР! Вы случайно сделали P 3 раза слишком долго. Затем X и Y повторялись один раз для каждого уровня P. Просто произведите одно изменение 'l <- length (x)' и все работает. – bdemarest

+0

Ах, хорошо, спасибо, я должен был это увидеть! – Tom

+9

+1 для воспроизводимого примера в вашем первом сообщении. Я бы попросил @bdemarest опубликовать его наблюдение в качестве ответа, чтобы OP мог принять его как правильно. –

ответ

2

Воспроизводимый пример, используя подсказки из 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) 
Смежные вопросы