我将在一个WxPython GUI中嵌入一个matplotlib图形来展示一些数据。
图形的内容(显示的数据)会根据所点击的按钮不断改变...
这些数据类型有两种。
1)等值线
self.axes.contour(x_scale_map,y_scale_map,matrix,cl,cmap=my_cmap,extent=0,matrix.shape[1]-1,0,matrix.shape[0]-1))
这个加载速度相对较慢(约1秒),但不经常更改。
2)在这个轮廓的基础上,我绘制了一些线条。
self.axes.axhline(y,color='black')
这些线条明显是即时绘制的,并根据用户点击而经常更改。在这些情况下,之前绘制的线条需要消失,新的线条需要出现,而等高线图保持不变。
现在,我的问题如下。我没有找到一种只删除线条而不删除等高线的方法。似乎获得所需结果的唯一方法是进行以下操作:
self.axes.clear()
然后重新绘制等高线和新的线。但是如前所述,每次重新加载等高线都很慢,因此很烦人。
有没有一种方法可以仅清除图形中的线条?我尝试使用叠加子图:
self.axes1 = self.fig.add_subplot(111)
self.axes2 = self.fig.add_subplot(111)
self.axes1.contour(...)
self.axes2.axhline(y,color='black')
self.axes2.clear()
但是,最后一行会清除整个图形。有人知道如何实现所需的功能吗?谢谢。
artist.set_visible(False)
来实现。)此外,如果你正在进行的操作中可以更新现有线条的数据而不是添加新的并隐藏旧的,则应该更新旧的线条。拥有大量隐藏的图形对象最终会开始减慢绘图的渲染速度。 - Joe Kingtonartist.set_visible(True/False)
和artist.remove()
以及del artist
的组合成功地获得了我想要的一切。谢谢。 - savantas