这应该很容易,但是我很难过。基本上,我在matplotlib中有一个子图,每次调用一个函数时,我都会绘制一个六边形图,但是每次调用该函数时,都会得到一个新的颜色条,所以我真正想做的就是更新颜色条。不幸的是,这似乎不起作用,因为通过subplot.hexbin重新创建了附加了颜色条的对象。
def foo(self):
self.subplot.clear()
hb = self.subplot.hexbin(...)
if self.cb:
self.cb.update_bruteforce() # Doesn't work (hb is new)
else:
self.cb = self.figure.colorbar(hb)
我现在在这个烦人的地方,尝试完全删除颜色条轴,然后重新创建它。不幸的是,当我删除颜色条轴时,子图轴不会回收空间,并且调用self.subplot.reset_position()并没有达到我的预期。
def foo(self):
self.subplot.clear()
hb = self.subplot.hexbin(...)
if self.cb:
self.figure.delaxes(self.figure.axes[1])
del self.cb
# TODO: resize self.subplot so it fills the
# whole figure before adding the new colorbar
self.cb = self.figure.colorbar(hb)
有没有人有什么建议?
非常感激!
亚当
最佳答案
我认为问题在于,使用del
可以取消变量,但不能取消引用的对象colorbar。
如果希望将颜色条从绘图中删除并消失,则必须使用颜色条实例的remove
方法,并且为此需要将颜色条包含在变量中,为此您有两个选择:
cb=plt.colorbar()
然后:
cb.remove()plt.draw() #update plot
关于python - 从matplotlib中的图中删除颜色条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5263034/