matplotlib.PatchCollection总是被拉着拉

2024-10-03 15:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()

我希望先绘制集合中的面片,然后再绘制selctionRect和{},因为它们可以重叠集合中的面片。如果是这样,它们应该是可见的。但是,我的绘图总是显示集合中的补丁,好像它们是最后绘制的一样。我怎么才能避开这个?感谢任何帮助。在

编辑:有一件事似乎有效,那就是保留2个补丁集合。然而,当我这样做的时候,似乎我永远不能将可见性设置为false。PatchCollection是否设置重置值或其他内容?在


Tags: selfnoneaddnode绘图artist绘制shape
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:23

正如亚当在评论中所说的,你想要设置zorder,它设置了当事物在另一层上绘制时的顺序,高zorder的东西将与较低的zorder重叠。在

所有东西都有一个默认值zorder,但是您可以通过在函数调用中添加zorderkwarg来覆盖该值。它是一个Artistkwarg,所以基本上任何绘图函数都应该尊重它(如果您发现一个不向github站点提交bug报告的函数)

plt.figure()
ax = plt.gca()
ax.plot(range(5), zorder=2, lw=10)
ax.plot(range(5)[::-1], zorder=1, lw=10)

^{pr2}$

zorder demo

相关问题 更多 >