我正在更新线图。有一个事件触发器可以启动此更新。如果触发器来自包含绘图的图形,一切都很好。但是,如果触发器来自另一个数字,则会发生奇怪的结果:已更新的行似乎使其迹线未清除。
以下是一个例子:
import matplotlib.pyplot as plt
import numpy as np
def onclick(event):
for ii in np.linspace(0., np.pi, 100):
y1 = y * np.sin(ii)
line1.set_ydata(y1)
ax.draw_artist(line1)
line2.set_ydata(-y1)
ax2.draw_artist(line2)
ax2.set_ylim(y1.min(), y1.max())
fig.canvas.update()
plt.pause(0.1)
x = np.linspace(0., 2*np.pi, 100)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)
line1 = ax.plot(x, y)[0]
ax2 = fig.add_subplot(1, 2, 2)
line2 = ax2.plot(x, y)[0]
fig2 = plt.figure()
cid = fig2.canvas.mpl_connect('button_press_event', onclick)
plt.show()
我在屏幕上看到的内容:
请注意,如果您调整绘图大小,或将其保存为图形,则所有残留图像都将消失。
另一方面,如果将一行改为:
cid = fig2.canvas.mpl_connect('button_press_event', onclick)
然后是正确的。动画按预期工作。
答案 0 :(得分:0)
不确定fig.canvas.update()
会做什么。如果用
fig.canvas.draw_idle()
它应该按预期工作。在这种情况下,您不需要单独绘制艺术家。