无论绘制何种类型,如何删除matplotlib的通用内容

时间:2013-02-13 23:37:32

标签: python matplotlib

我已经环顾了一会儿,发现了一些从绘图中删除内容的巧妙方法。

e.g。 lines = blah,del lines [0],line gone。

但这显然不适用于直方图,或者例如imshow。

有没有办法清除绘图区域(即不使用clf())而不必重新生成整个图形。这要求您对当前绘制的内容没有严格的了解,但仍然可以将其删除。我正在开发一个使用相同区域进行绘图的应用程序,我想要一种通用的方法来删除我想要显示的不同类型图形的内容。一些线,一些分散,一些组织等。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在axes上显示的所有内容都是Artist的子类,并且具有成员函数remove (doc)。所有绘图函数(应该)都返回它们添加到轴的artist(或artists列表)。例如:

ln, = ax.plot(...) # adds a line
img = ax.imshow( ) # adds an image
ln.remove()        # removes the line
img.remove()       # removes the image

在更改可见之前,您必须重新绘制画布(plt.draw()ax.figure.canvas.draw())。

您可以使用

获取给定axes中所有艺术家的列表
artist_list = ax.get_children()

如果要从轴上删除所有内容,

ax.cla()