我想绘制两组不同的 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”的方法?
一般来说,有两种方法可以为
ggplot
准备数据:
geom_errorbar
绘制。第二种选择是使用原始数据并让
ggplot
为您完成所有计算。这可以通过 stat_summary
来完成。例如:
stat_summary(fun.data = "mean_cl_normal", mult = 1, geom = "errorbar")
显然,你选择了第一种方法。因此,您只需计算两个变量点的标准误差即可。
在您当前的数据集中,每个 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
会回来
您可以添加图形指令来装饰您的绘图,例如,
p + ylab("measure Req") + theme_bw()