擅长:python、mysql、java
<p>正如@Bart在评论中指出的,matplotlib将<code>yerr</code>解释为相对于直线y坐标的一组+/-偏移量。来自<a href="http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.errorbar" rel="nofollow noreferrer">the documentation</a>:</p>
<blockquote>
<p><em><code>xerr/yerr</code></em>: [ scalar | N, Nx1, or 2xN array-like ]</p>
<p>If a scalar number, len(N) array-like object, or an Nx1 array-like object, errorbars are drawn at <strong>+/- value relative to the data</strong>.</p>
<p>If a sequence of shape 2xN, errorbars are drawn at <strong>-row1 and +row2 relative to the data</strong>.</p>
</blockquote>
<p>您可以通过取<code>y</code>和<code>err</code>之间的绝对差异来获得所需的效果:</p>
<pre><code>err = np.array(err)
y = np.array(y)
offsets = np.abs(err - y[None, :])
figure();
errorbar(x, y, yerr=offsets, label="data")
scatter(x, err[0], c='r', label="lower limit")
scatter(x, err[1], c='g', label="upper limit")
legend()
show()
</code></pre>
<p><a href="https://i.stack.imgur.com/yKmSD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/yKmSD.png" alt="enter image description here"/></a></p>