对于每个X
-value,我计算了平均Y
-value和每个Y值的标准差(sd
x = 1:5
y = c(1.1, 1.5, 2.9, 3.8, 5.2)
sd = c(0.1, 0.3, 0.2, 0.2, 0.4)
plot (x, y)
如何使用标准差将误差条添加到我的曲线图的每个数据点?
发布于 2013-09-06 14:21:27
当您具有对数X轴时,会出现csgillespie解决方案的问题。你将在右边和左边有不同长度的小条(ε跟随x值)。
最好使用Hmisc
包中的errbar
函数:
d = data.frame(
x = c(1:5)
, y = c(1.1, 1.5, 2.9, 3.8, 5.2)
, sd = c(0.2, 0.3, 0.2, 0.0, 0.4)
)
##install.packages("Hmisc", dependencies=T)
library("Hmisc")
# add error bars (without adjusting yrange)
plot(d$x, d$y, type="n")
with (
data = d
, expr = errbar(x, y, y+sd, y-sd, add=T, pch=1, cap=.1)
)
# new plot (adjusts Yrange automatically)
with (
data = d
, expr = errbar(x, y, y+sd, y-sd, add=F, pch=1, cap=.015, log="x")
)
发布于 2013-02-25 09:06:48
使用ggplot2
的解决方案:
qplot(x,y)+geom_errorbar(aes(x=x, ymin=y-sd, ymax=y+sd), width=0.25)
发布于 2013-02-25 10:40:00
除了@csgillespie的答案之外,segments
也被矢量化来帮助处理这类事情:
plot (x, y, ylim=c(0,6))
segments(x,y-sd,x,y+sd)
epsilon <- 0.02
segments(x-epsilon,y-sd,x+epsilon,y-sd)
segments(x-epsilon,y+sd,x+epsilon,y+sd)
https://stackoverflow.com/questions/15063287
复制相似问题