比方说,我做了一系列的matplotlib AnnotationBbox'es通过一个for循环,像这样:Matplotlib:删除所有艺术家和线
for city in cities:
x, y = self.map(city[1], city[0])
ab = AnnotationBbox(imagebox, [x,y],
xybox=(0, 0),
xycoords='data',
boxcoords="offset points",
frameon=False)
self.axes.add_artist(ab)
self.locationImages.append(ab)
在这个例子中,我创建了一系列AnnotationBBoxes的,并将它们存储在名为self.locationImages的列表中。然后我经过self.locationImages在一个循环,并删除每一个被这样:
for image in self.locationImages:
image.remove()
有没有一种方法,以消除所有的艺术家,而不必经过一个循环?或者完全删除所有艺术家和线条,而不必删除轴或图形?
我在地图上绘制点,我需要地图留下来。我正在进行缩放和放大,但在放大和缩小时,我需要删除所有内容并重新绘制。我有一个大的数据集工作,做迭代是一个昂贵的行动
使用'set_visible'可能比删除艺术家更好。 http://matplotlib.org/api/artist_api.html#matplotlib.artist.Artist.set_visible你仍然必须触发重画,但你不必设置和拆除艺术家。 – tacaswell