r散点图,两个方向都有误差条

时间:2015-02-15 03:52:50

标签: r plot scatter

如何在两个方向上创建带有误差线的散点图?通常误差条在垂直方向上(即y值的不确定性)。然而,我的数据也有x值的不确定性

X      ErrX   Y     ErrY
1.0    0.1    3.0   0.2
1.5    0.3    4.2   0.1
etc

3 个答案:

答案 0 :(得分:3)

使用ggplot2,这很容易。您可以完全控制所有四个侧面的长度"的错误栏。使用geom_errorbar()设置y错误,geom_errobarh()(h代表水平)设置x错误。

#toy data
df <- data.frame(X = rnorm(4), errX = rnorm(4)*0.1, Y = rnorm(4), errY = rnorm(4)*0.2)

#load ggplot2
require(ggplot2)

#make graph
ggplot(data = df, aes(x = X, y = Y)) + geom_point() + #main graph
    geom_errorbar(aes(ymin = Y-errY, ymax = Y+errY)) + 
    geom_errorbarh(aes(xmin = X-errX, xmax = X+errX))

通过在geom_errorbar()内设置参数,您可以单独控制每个条形的颜色,线宽等。有关详细信息,请参阅帮助和Google。例如,您可以控制&#34;大写&#34;的宽度。或使用width参数完全消除它们。将上图与此图进行比较,以获取删除它们的示例:

ggplot(data = df, aes(x = X, y = Y)) + geom_point() + 
        geom_errorbar(aes(ymin = Y-errY, ymax = Y+errY), width = 0) + 
        geom_errorbarh(aes(xmin = X-errX, xmax = X+errX), height = 0)

答案 1 :(得分:1)

作为替代方案(使用Curt F.&#39;&#34; df&#34;):

rangeX = range(c(df$X + df$errX, df$X - df$errX))
rangeY = range(c(df$Y + df$errY, df$Y - df$errY))

plot(df$X, df$Y, xlim = rangeX, ylim = rangeY)

segments(df$X, df$Y - df$errY, df$X, df$Y + df$errY)
segments(df$X - df$errX, df$Y, df$X + df$errX, df$Y)

答案 2 :(得分:1)

使用来自我的心理包的error.crosses +来自Curt的玩具数据:

 df1 <- data.frame(mean=df$X,sd=df$errX)
 df2 <- data.frame(mean=df$Y,sd=df$errY) 
 error.crosses(df1,df2,sd=TRUE)

有关更复杂的示例,请参阅error.crosses的帮助页面。