我有一个matplotlib.PatchCollection
我想要添加到情节中。但我也有文字和其他补丁我直接添加到情节。所以它看起来像这样:
node.shape = RegularPolygon((node.posX, node.posY),
6,
radius = node.radius,
edgecolor = 'none',
facecolor = node.fillColor,
zorder = node.zorder)
self.patches.append(node.shape)
self.p = PatchCollection(self.patches, edgecolor = 'none', match_original=True )
self.plotAxes.add_collection(self.p)
#Two previously instantiated patches (they are visible)
self.plotAxes.add_artist(selectionRect)
self.plotAxes.add_artist(brushShape)
self.plotCanvas.draw()
我希望首先绘制集合中的Pat,然后绘制selctionRect
和brushShape
,因为它们可以与集合中的Pat重叠。如果他们这样做,他们应该是可见的。但是,我的情节总是在集合中显示补丁,就像它们最后被绘制一样。我怎么能绕过这个?任何帮助表示赞赏。
编辑:似乎有效的一件事就是保留2个PatchCollections。然而,当我这样做时,似乎我永远不会将可见性设置为假。 PatchCollection
是否将重置值设置为什么?
答案 0 :(得分:0)
正如亚当在评论中所说的那样,你想设置zorder
,它设置了什么顺序,当它们被绘制在彼此之上时,具有较高zorder
的事物将与较低的zorder
重叠。 1}}。
所有内容都有默认zorder
,但您可以通过将zorder
kwarg添加到函数调用来覆盖该值。它是一个Artist
kwarg,所以基本上绘制函数应该尊重它(如果你找到一个不向github网站提交bug报告的话)
离
plt.figure()
ax = plt.gca()
ax.plot(range(5), zorder=2, lw=10)
ax.plot(range(5)[::-1], zorder=1, lw=10)
VS
plt.figure()
ax = plt.gca()
ax.plot(range(5), zorder=1, lw=10)
ax.plot(range(5)[::-1], zorder=2, lw=10)