如何在 R 中生成以下图表?图中显示的点是平均值,它们的范围对应于最小值和最大值。 我有两个文件中的数据(下面是一个例子)。
x y
1 0.8773
1 0.8722
1 0.8816
1 0.8834
1 0.8759
1 0.8890
1 0.8727
2 0.9047
2 0.9062
2 0.8998
2 0.9044
2 0.8960
.. ...
最佳答案
首先:R 无法“开箱即用”地绘制错误栏,这是非常不幸和令人惊讶的。
这是我最喜欢的解决方法,优点是您不需要任何额外的包。诀窍是绘制箭头 (!) 但用小水平条代替箭头 (!!!)。这个不太直接的想法来自 R Wiki Tips并在此处作为已解决的示例进行复制。
假设您有一个“平均值”向量 avg
和另一个“标准差”向量sdev
, 它们的长度相同 n
.让我们让横坐标只是这些“测量”的数量,所以 x <- 1:n
.使用这些,这里是绘图命令:
plot(x, avg,
ylim=range(c(avg-sdev, avg+sdev)),
pch=19, xlab="Measurements", ylab="Mean +/- SD",
main="Scatter plot with std.dev error bars"
)
# hack: we draw arrows but with very special "arrowheads"
arrows(x, avg-sdev, x, avg+sdev, length=0.05, angle=90, code=3)
结果是这样的:
在arrows(...)
函数 length=0.05
是以英寸为单位的“箭头”的大小,angle=90
指定“箭头”垂直于箭杆,特别直观 code=3
参数指定我们要在箭头的两端绘制一个箭头。
假设 sdev
,对于水平误差线,以下更改是必要的矢量现在包含 x
中的错误值和 y
值是纵坐标:
plot(x, y,
xlim=range(c(x-sdev, x+sdev)),
pch=19,...)
# horizontal error bars
arrows(x-sdev, y, x+sdev, y, length=0.05, angle=90, code=3)
关于r - 带误差线的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47514040/