Удалить и повторно добавить объект в matplotlib | Переключить внешний вид объекта matplotlib

Используя iPython и matplotlib, я хочу иметь возможность добавить аннотацию (или любой объект), удалить ее из графика, а затем повторно добавить. По сути, я хочу переключить внешний вид объекта на графике.

Вот как я добавляю и удаляю этот объект. Объект все еще существует после удаления (). Но я не могу понять, как заставить его появиться на графике.

an = ax.annotate('TEST', xy=(x, y), xytext=(x + 15, y), arrowprops=dict(facecolor='#404040'))
draw() 
an.remove()

2 ответа

Решение

Ты хочешь set_visible ( док)

an = gca().annotate('TEST', xy=(.1, .1), xytext=(.1 + 15,.1), arrowprops=dict(facecolor='#404040'))
gca().set_xlim([0, 30])
draw() 
plt.pause(5)
an.set_visible(False)
draw()
plt.pause(5)
an.set_visible(True)
draw()

Фрагмент из an.remove() Справка гласит: "Эффект не будет виден, пока фигура не будет перерисована". Если вы делаете это:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure('A figure title')
ax = fig.add_subplot(111, autoscale_on=False, xlim=(-1,5), ylim=(-3,5))

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=3, color='purple')

ann=ax.annotate('offset', xy=(1, 1),  xycoords='data',xytext=(-15, 10),     textcoords='offset points',arrowprops=dict(facecolor='black', shrink=0.05),horizontalalignment='right', verticalalignment='bottom')

Нарисует фигуру с аннотацией. Чтобы удалить это все, что вам нужно сделать, это:

ann.remove()
fig.canvas.draw()

так что все, чего вам не хватает, это перерисовать фигуру.

Другие вопросы по тегам