Допустим, я делаю серию AnnotationBbox'es в Matplotlib через цикл, как это: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