32

各値について、各 Y値Xの平均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)

標準偏差を使用して、プロットの各データポイントにエラー バーを追加するにはどうすればよいですか?

4

5 に答える 5

32

ソリューションggplot2:

qplot(x,y)+geom_errorbar(aes(x=x, ymin=y-sd, ymax=y+sd), width=0.25)

ここに画像の説明を入力

于 2013-02-25T09:06:48.477 に答える
22

@ 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)

ここに画像の説明を入力

于 2013-02-25T10:39:59.927 に答える
20

を使用segmentsして、ベース グラフィックにバーを追加できます。ここでepsilonは、ラインの上下を横切るラインを制御します。

plot (x, y, ylim=c(0, 6))
epsilon = 0.02
for(i in 1:5) {
    up = y[i] + sd[i]
    low = y[i] - sd[i]
    segments(x[i],low , x[i], up)
    segments(x[i]-epsilon, up , x[i]+epsilon, up)
    segments(x[i]-epsilon, low , x[i]+epsilon, low)
}

@thelatemail が指摘するように、ベクトル化された関数呼び出しを実際に使用する必要がありました。

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)

ここに画像の説明を入力

于 2013-02-25T09:04:01.217 に答える
18

対数 X 軸がある場合、csgillespie ソリューションの問題が表示されます。右側と左側の小さなバーの長さが異なります (イプシロンは x 値に従います)。

パッケージのerrbar関数をより適切に使用する必要があります。Hmisc

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-09-06T14:21:27.407 に答える