如何删除axvspan线?

时间:2013-11-04 22:12:53

标签: python matplotlib

我有一个带有时间序列和一个或几个axvspan线的图,以突出显示某些区域并提取时间序列值和即时但我希望有可能用按钮删除一个或所有这些axvspan线。我已经看了一些关于如何删除行(How can I delete plot lines that are created with Mouse Over Event in Matplolib?)的示例,但我找不到与axvspan行相关的任何内容。 这是我用来创建axvspan行的代码

    def on_click(event):
        global x0
        x0 = event.xdata

    def on_release(event):
        global force_values
        if force_value == "Min":
            self.axes.axvspan(x0,event.xdata, facecolor='y', alpha=0.5)
            get_data(frames,force_values,x0,event.xdata)
        else:
            self.axes.axvspan(x0,event.xdata, facecolor='r', alpha=0.5)
            get_data(frames,force_values,x0,event.xdata)

提前感谢您的帮助。 亲切的问候 IVO

1 个答案:

答案 0 :(得分:4)

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

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

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

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()