从图中Python和删除注释

mcf*_*fly 4 python annotations matplotlib

我在wxpython GUI中使用matplotlib.简而言之,我绘制了一堆数据.然后我点击一个数据点(使用DataCursor找到:

matplotlib是否相当于MATLAB的datacursormode?

要么

在wxPython中弹出matplotlib上的注释

第二个链接是我的实际实现.我从其他类中重新编写datacursor类.我想知道,如何通过单击事件按钮删除注释?例如,我有一个事件按钮来更新我的散点图(通过使用plot_handle.set_data而不是清除图).但是,无论该点是否存在,注释仍然保持原样.我该如何删除它?

谢谢!

tac*_*ell 7

大多数matplotlib对象都有一个remove()函数(我认为它是继承自的Artist).只需在要删除的对象上调用它即可.

编辑:

如果你有

dc = DataCursor(...) # what ever aruguements you give it
# bunch of code
dc.annotation.remove()
del dc
plt.draw() # need to redraw to make remove visible
Run Code Online (Sandbox Code Playgroud)

Python没有"私有"属性的概念,所以你可以到达对象内部并在注释上调用remove.有关更多详细信息,请参阅类教程.

这方面的缺点是,现在你有一个对象是一个奇怪的状态.如果您有任何其他引用,它们可能表现不佳.如果你想保持DataCursor周围的物体你可以annotation使用它的set_*功能修改对象或更改它的可见性以暂时隐藏它(doc)