使用 iPython 和 matplotlib,我希望能够添加注释(或任何对象),将其从图中删除,然后重新添加。本质上,我想切换图形中对象的外观。
这是我添加和删除此对象的方式。在 remove() 之后对象仍然存在。但我不知道如何让它重新出现在图表中。
an = ax.annotate('TEST', xy=(x, y), xytext=(x + 15, y), arrowprops=dict(facecolor='#404040'))
draw()
an.remove()
使用 iPython 和 matplotlib,我希望能够添加注释(或任何对象),将其从图中删除,然后重新添加。本质上,我想切换图形中对象的外观。
这是我添加和删除此对象的方式。在 remove() 之后对象仍然存在。但我不知道如何让它重新出现在图表中。
an = ax.annotate('TEST', xy=(x, y), xytext=(x + 15, y), arrowprops=dict(facecolor='#404040'))
draw()
an.remove()
你想要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()
所以你所缺少的只是重新绘制图形。