根据您发布的代码,创建的图是正确的。 最低 的对象zorder
放在底部,而 最高 的对象zorder
放在顶部。您链接到的zorder问题已在matplotlib版本1.2.1中修复,因此,如果可能,应更新安装。
在您的第一个子图中,误差线被绘制在散点上,因为用errorbar
调用了zorder=2
,而scatter
用zorder=1
-调用了,这意味着误差线将覆盖散点。
在你的第二个插曲,你叫errorbar
用zorder=99
,scatter
用zorder=100
而plot
用zorder=101
-这意味着errorbars将被放置在散点和线下两种。
之所以legend
在第一个子图中的行顶部显示它,而在第二个子图中的同一行顶部显示它,是因为您没有显式设置图例objectazorder
值,这意味着它将使用它的默认值(我相信是5)。要更改图例的zorder,只需使用P.legend(loc="center").set_zorder(102)
102是所需的zorder值。
因此,为了产生所需的输出,必须相应地设置zorder
参数。由于您尚未在问题中描述 所需的 输出,因此我很难“更正”您的代码,因为我不知道您希望以什么顺序绘制对象。