Удалить и повторно добавить объект в 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()
так что все, чего вам не хватает, это перерисовать фигуру.