如何删除 axvspan 线?

TMo*_*ver 1 python matplotlib

我有一个包含时间序列和一条或多条 axvspan 线的图,以突出显示某些区域并提取时间序列值和即时值,但我希望能够使用按钮删除一条或所有这些 axvspan 线。我查看了一些有关如何删除线的示例(How can I deleteplotlinescreated with Mouse Over Event in Matplolib?),但我无法\xc2\xb4t找到与 axvspan 线相关的任何内容。\n这是我\用于创建 axvspan 线

\n\n
    def on_click(event):\n        global x0\n        x0 = event.xdata\n\n    def on_release(event):\n        global force_values\n        if force_value == "Min":\n            self.axes.axvspan(x0,event.xdata, facecolor=\'y\', alpha=0.5)\n            get_data(frames,force_values,x0,event.xdata)\n        else:\n            self.axes.axvspan(x0,event.xdata, facecolor=\'r\', alpha=0.5)\n            get_data(frames,force_values,x0,event.xdata)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此先感谢您的帮助。\n亲切的问候\n伊沃

\n

tac*_*ell 6

几乎所有artist对象都有一个remove成员函数,可以将它们从轴中删除:

aspan = self.axes.axvspan(x0,event.xdata, facecolor='y', alpha=0.5)
# do stuff
aspan.remove()
plt.draw()
Run Code Online (Sandbox Code Playgroud)

如果你需要做一堆,那么你只需要跟踪其中的一堆

self.aspan_list = []
self.aspan_list.append(self.axes.axvspan(x0,event.xdata, facecolor='y', alpha=0.5))
#...
for aspan in self.aspan_list:
    aspan.remove()
Run Code Online (Sandbox Code Playgroud)