【问题标题】:Drawing overlayed sideways plots in R在 R 中绘制重叠的横向图
【发布时间】:2013-02-28 17:57:16
【问题描述】:

我在 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 中执行此操作(绘制横向正态曲线)? 注意:我再说一遍,正态曲线不是情节的一部分。上面的代码只是生成原始图。

【问题讨论】:

    标签: r normal-distribution


    【解决方案1】:

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

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

    然后制作了两个数据框(为方便起见),其中包含 y 值作为数字序列(比实际的 y1y2 值更宽)。然后使用dnorm() 计算x 的密度值,并计算平均值和标准偏差值。然后添加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))
    

    【讨论】:

    • 如果 x 轴在 50 到 100 之间,y 轴在 0 到 40000 之间,那么曲线看起来像平线。在那个范围内如何做到这一点?
    • 然后你可以将 dnorm(seq(1,7,0.1),m1,s1) 的结果乘以 y 的某个常数或平均值。
    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多