gpt4 book ai didi

python - 为什么我需要从我的 matplotlib Axes 中删除补丁两次才能将它们全部删除?

转载 作者:行者123 更新时间:2023-12-04 03:56:31 24 4
gpt4 key购买 nike

我有一个 matplotlib Axes对象 self.amatplotlib 上定义canvas对象 self.fold_canvas .在它的构建过程中,在某些时候我在地 block 上绘制了一堆透明框,通过

self.a.axvspan(bins[lower],bins[upper],color=palette[i],alpha=0.3, gid='foldstate')

后来,我想摆脱他们。我使用循环执行此操作:

for p in self.a.patches:
if p.get_gid() == 'foldstate':
p.remove()
self.fold_canvas.draw()

出于某种原因,此循环删除了除一个 axvspan 之外的所有内容实例。如果我再做一次,即

for p in self.a.patches:
if p.get_gid() == 'foldstate':
p.remove()
for p in self.a.patches:
if p.get_gid() == 'foldstate':
p.remove()
self.fold_canvas.draw()

它按预期工作,并且所有的 axvspans 都被删除了。

为什么我需要执行两次循环才能将它们全部删除?

编辑:似乎用独特的 gid 标记它们修复了该问题,因此当多个补丁共享相同的 gid 时,它可能与内部问题有关.

最佳答案

因为这还没有被触及:matplotlib 内部似乎存在一个问题,其中 gid 需要对于每个标记的项目都是唯一的。如果您在任何地方重复使用 gid,它似乎会导致一些静默失败。

关于python - 为什么我需要从我的 matplotlib Axes 中删除补丁两次才能将它们全部删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63798397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com