2 回答

TA贡献1951条经验 获得超3个赞
根据您发布的代码,创建的图是正确的。最低 的对象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
参数。由于您尚未在问题中描述所需的输出,因此我很难“更正”您的代码,因为我不知道您希望按什么顺序绘制对象。

TA贡献1850条经验 获得超11个赞
在我看来,新旧软件的使用总是“利弊”,因此最终我猜这是由用户决定的,更重要的是(例如新功能与已知的错误解决方法等) )。我以前的评论应该更清楚一些;避免已知问题(至少在某种程度上)的最简单方法是使软件保持最新。
添加回答
举报