matplotlib 中的误差条显示在其他曲线上

Error bars in matplotlib display over other curves

我有一个图,其中一些数据由带有误差条的散点图表示,我想为其拟合一条曲线。然而,无论我在代码中的哪个位置绘制曲线,误差线都会浮在它上面。我希望拟合曲线显示在误差线前面,否则我看不到它。

这是一个简单的问题示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

x = np.arange(1,10)
r = np.random.random(x.size)

fig1, ax = plt.subplots()
ln1 = ax.plot(2*x,x,'g')
ax3 = ax.twinx()
ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o')
ln2fit = ax3.plot(x,r-0.3,'b')

及其产生的情节:

有两个轴,因为我正在比较两个数据集。

如您所见,即使我将曲线绘制在误差线上方,误差线和点仍然遮挡了曲线。我该怎么做才能禁用此功能?

您可以指定zorder:

ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o',zorder=1)

如果你还想在前景中有绿线,你需要将它的轴 ax 移动到更高的 zorder(默认为 0)并隐藏 ax 的轴补丁,以便然后底层 ax3 保持可见:

ax.set_zorder(1)
ax.patch.set_visible(False)