Python 为什么在覆盖可见性时会出现问题?

Python 为什么在覆盖可见性时会出现问题?,python,collections,matplotlib,patch,visible,Python,Collections,Matplotlib,Patch,Visible,我正在使用matplotlib PatchCollection来保存一组matplotlib.patches.矩形。但我希望它们在第一次绘制时不可见(只有在单击其他内容时才可见)。当我使用add_-artist将矩形直接绘制到画布上时,效果很好,但我想将此更改为使用PatchCollection。出于某种原因,当我创建PatchCollection并使用add_collection添加它时,它们都是可见的 self.plotFigure = Figure() self.plotAxes = se

我正在使用matplotlib PatchCollection来保存一组matplotlib.patches.矩形。但我希望它们在第一次绘制时不可见(只有在单击其他内容时才可见)。当我使用add_-artist将矩形直接绘制到画布上时,效果很好,但我想将此更改为使用PatchCollection。出于某种原因,当我创建PatchCollection并使用add_collection添加它时,它们都是可见的

self.plotFigure = Figure()
self.plotAxes = self.plotFigure.add_subplot(111)

self.selectionPatches = []
for node in self.nodeList:
    node.selectionRect = Rectangle((node.posX - node.radius*0.15 , node.posY - node.radius*0.15),
                                    node.radius*0.3,
                                    node.radius*0.3,
                                    linewidth = 0,
                                    facecolor = mpl.colors.ColorConverter.colors['k'],
                                    zorder = z,
                                    visible = False)
    self.selectionPatches.append(node.selectionRect)

self.p3 = PatchCollection(self.selectionPatches, match_original=True)
self.plotAxes.add_collection(self.p3)

如果我遍历self.selectionPatches并打印出每个矩形的get_visible(),它将返回false。但当它们被画出来时,它们是清晰可见的。如果有人能帮助我了解为什么会发生这种情况,我将不胜感激。

当您创建一个
补丁集合时,它会从您提交的对象(形状、位置、样式(如果您使用
match_original
)中提取一大堆信息,但不会保留补丁对象以供以后参考(因此它会丢弃每个补丁
可见的
)。如果您希望所有矩形同时可见/不可见,可以这样做

self.p3 = PatchCollection(self.selectionPatches, 
                          match_original=True, 
                          visible=False)
另一方面,我认为您必须将它们分组到您希望一起出现的集合中

查看
PatchCollection
\uuuu init\uuuuu
功能,以及通过
Collection
Artist
向上层叠的其余部分