比方說,我做了一系列的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