绘制正态分布图

8

我试图绘制正态分布的三个示例,但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识别因子并使用三种不同的颜色绘制图形?而不是显示一个连续的路径?


8
你被 R 的静默向量循环所困扰!你不经意地使 P 变成了 3 倍长。然后,X 和 Y 分别为 P 的每个级别重复了一次。只需要做一个更改 l <- length(x),一切就能正常工作。 - bdemarest
啊,好的非常感谢,我应该看到了! - Tom
9
在你的第一篇帖子中提供一个可重现的例子会得到加分。我建议@bdemarest将他的观察结果作为答案发布,这样问题提出者就可以接受它作为正确答案。 - Roman Luštrik
3
@bdemarest,请将您的评论发布为答案,以便它可以被接受。 - Thell
1
@bdemarest 同意以上关于发布答案的建议。 - Thomas
1个回答

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接