2

使用 iPython 和 matplotlib,我希望能够添加注释(或任何对象),将其从图中删除,然后重新添加。本质上,我想切换图形中对象的外观。

这是我添加和删除此对象的方式。在 remove() 之后对象仍然存在。但我不知道如何让它重新出现在图表中。

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

2 回答 2

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()
于 2013-08-26T23:03:08.593 回答
2

帮助中的一个片段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()

所以你所缺少的只是重新绘制图形。

于 2013-08-26T23:04:43.220 回答