在R中绘制叠加的侧面图

时间:2013-02-28 17:57:17

标签: r normal-distribution

我在R。

中有以下代码
x = c(rep(2,10),rep(4,10))
y1 = c(5.1,3,4.2,4.1,4.8,4.0,5,4.15,3,4.5)
y2 = c(9.1,8,9.2,8.2,7,9.5,8.8,9.3,10,10.4)
y = c(y1,y2)
plot(x,y,pch=16,cex=0.9,xlim=c(0,6),ylim=c(0,13))

此代码生成带有两个点带的图。我使用powerpoint在这些波段上侧向覆盖了正常曲线。如何使用实际均值和sd值在R(绘制侧向法线曲线)中执行此操作? 注意:我再说一遍,正常曲线不是图的一部分。上面的代码只生成原始图。

enter image description here

1 个答案:

答案 0 :(得分:7)

首先,计算y1y2的平均值和标准差。

m1<-mean(y1)
s1<-sd(y1)
m2<-mean(y2)
s2<-sd(y2)

然后创建了两个数据框(为方便起见),其中包含y值作为数字序列(比实际y1y2值更宽)。然后使用x计算dnorm()的密度值,并计算平均值和标准差值。然后添加24将值移至所需位置。

df1<-data.frame(yval=seq(1,7,0.1),xval=(dnorm(seq(1,7,0.1),m1,s1)+2))
df2<-data.frame(yval=seq(6,12,0.1),xval=(dnorm(seq(6,12,0.1),m2,s2)+4))

添加了功能lines()的密度线。

plot(x,y,pch=16,cex=0.9,xlim=c(0,6),ylim=c(0,13))
with(df1,lines(xval,yval))
with(df2,lines(xval,yval))

enter image description here