Python并从figu中移除注释

2024-09-27 09:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在wxpython GUI中使用matplotlib。简而言之,我绘制了一组数据。然后,我单击一个数据点(使用位于以下位置的数据光标:

Is there a matplotlib equivalent of MATLAB's datacursormode?

或者

Pop up annotations on matplotlib within wxPython

第二个环节是我的实际执行。我将datacursor类与其他类分离。我想知道的是,如何通过单击事件按钮删除注释?例如,我有一个更新散点图的事件按钮(使用plot_handle.set_数据,而不是清除图形)。但是,无论点是否在那里,注释都会精确地保留在原来的位置。如何删除它?

谢谢!


Tags: of数据matplotlibiswxpython绘制事件gui
2条回答

大多数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

Python没有“private”属性的概念,因此您可以直接访问对象内部并对注释调用remove。见tutorial on classes for more details

它的反面是,现在你有一个物体是一个奇怪的状态。如果你有任何其他的参考,他们可能会表现不好。如果你想让DataCursor对象在你身边,你可以使用它的set_*函数修改annotation对象,或者改变它的可见性来暂时隐藏它(doc

你需要像艺术家一样添加它才能像艺术家一样删除它

arrow2 = matplotlib.text.Annotation("I love it",xy=(0.5,0.5),xycoords='data',arrowprops=dict(arrowstyle="-")) 
ax2.add_artist(arrow2) 
arrow2.remove() 

相关问题 更多 >

    热门问题