ggplot:误差线

问题描述 投票:0回答:2

我想绘制两组不同的 y1、y2 值相对于 x 的误差线。换句话说,我有两个数据Y1,Y2,它们对应X值。在重新调整数据框后,我设法将它们绘制在一起。现在我想在同一个图表上绘制每个 Y1、Y2 点的误差线。我明白

geom_errorbar()
就是我正在寻找的。然而,我要走很长的路才能做到这一点,而且我确信有一条捷径。我正在做的事情是计算每组的“se”并计算
aes(ymin=y1-se, ymax=y+se)
并对Y2重复相同的操作。因为我想将此误差线应用于不同的图。我宁愿以简短的方式完成它。

这是重塑后我的数据框:

M     Req      Rec      load       Un      L1
1    30.11  9.000000   3.000000  30.02000  A
2    50.31  10.030000  6.045000  39.44000  A
3    60.01  11.290000  7.366667  54.93000  A
4    66.10  12.630000  8.827500  68.44500  A
5    80.18  13.106000  9.462000  71.07600  A
6    87.10  14.421667  15.961667 82.70500  A
7    90.08  15.880000  20.644286 94.20714  A
1    4.000  1.500000    1.000000  1        B
2    8.240  6.240000    4.760000  3.00000  B
3    10.28  12.230000  9.420000  4.05000   B
4    18.570 25.570000 17.930000  6.00000   B
5    22.250 35.250000 27.850000  7.00000   B
6    35.070 55.010000 36.810000  8.06000   B
7    48.480  0.420000 47.020000  9.06000   B

我使用以下命令来绘制它:

ggplot(df_reshaped,aes(x = M, y = Req, colour = L1, shape=L1)) +  
     geom_point(size = 5)+
     geom_line() +
     scale_x_discrete(name="M") +
     scale_y_continuous(name="Y1 Y2")+
     ggtitle("A vs B")

在这种情况下,我绘制 Y1=Req1,Y2=Req2,相对于 x=M

有什么简单的方法或建议来计算误差线吗?

有没有快速计算“se”的方法?

r ggplot2
2个回答
1
投票

一般来说,有两种方法可以为

ggplot
准备数据:

  • 您可以汇总原始数据并绘制结果。如果按照这种方式,您还必须计算标准误差,因为无法从聚合数据中检索信息。这些标准误差可以用
    geom_errorbar
    绘制。
  • 第二种选择是使用原始数据并让

    ggplot
    为您完成所有计算。这可以通过
    stat_summary
    来完成。例如:

    stat_summary(fun.data = "mean_cl_normal", mult = 1, geom = "errorbar")
    

显然,你选择了第一种方法。因此,您只需计算两个变量点的标准误差即可。


0
投票

在您当前的数据集中,每个 Req x L1 条件只有一个点,因此无法计算标准误差或置信区间。

假设您有一些变化,您可以使用superb(带有误差线的摘要图)来获得结果。

作为说明,让我们随机复制样本 3 次 变化:

df1 <- read.table(header = TRUE, text="
M     Req      Rec      load       Un      L1
1    30.11  9.000000   3.000000  30.02000  A
2    50.31  10.030000  6.045000  39.44000  A
3    60.01  11.290000  7.366667  54.93000  A
4    66.10  12.630000  8.827500  68.44500  A
5    80.18  13.106000  9.462000  71.07600  A
6    87.10  14.421667  15.961667 82.70500  A
7    90.08  15.880000  20.644286 94.20714  A
1    4.000  1.500000    1.000000  1        B
2    8.240  6.240000    4.760000  3.00000  B
3    10.28  12.230000  9.420000  4.05000   B
4    18.570 25.570000 17.930000  6.00000   B
5    22.250 35.250000 27.850000  7.00000   B
6    35.070 55.010000 36.810000  8.06000   B
7    48.480  0.420000 47.020000  9.06000   B
")

# duplicate the above df with some random error:
df2 <- df3 <- df1
df2$Req <- df2$Req+rnorm(14)   # some random error on each line
df3$Req <- df3$Req+rnorm(14)

# merge the three dataframes
df123 <- rbind(df1, df2, df3)

这就是您所需要的。

library(superb)
p <- superb(Req ~ M + L1, df123, plotStyle="line")
p

会回来

7 x 2 mean plot

您可以添加图形指令来装饰您的绘图,例如,

p + ylab("measure Req") + theme_bw()
© www.soinside.com 2019 - 2024. All rights reserved.