Matplotlib动画:带斑点的交互式缩放/平移不起作用

时间:2019-02-20 14:26:19

标签: python matplotlib

使用blitting时,我在matplotlib中发现了FuncAnimation的一个奇怪问题。以下代码是一个最小的工作示例,它使点沿着正弦线移动。问题在于,在交互式缩放/平移操作之后,轴已重绘,但线图仍保留在屏幕上的原始位置。似乎由于某种原因,缩放/平移不会触发闪烁的新初始化。我在Matplotlib 3.0.2中使用Qt5Agg后端,但是TkAgg后端也存在问题。可能的解决方法是使函数更新也返回折线图。但是,这以某种方式挫败了发条的想法。您知道解决此问题的更好方法吗?

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.animation

t = np.linspace(0, 10, 100)
y = np.sin(t)

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

line, = ax.plot(t, y)
point, = ax.plot(0, 0, 'o')


def update(i):
    point.set_data([t[i], y[i]])
    return point,


ani = mpl.animation.FuncAnimation(fig, update, frames=t.size, blit=True)
plt.tight_layout()
plt.show()

1 个答案:

答案 0 :(得分:0)

借助ImportanceOfBeingErnest的帮助,我找到了以下解决方案:

ax.callbacks.connect('xlim_changed', lambda event: ani._blit_cache.clear())
ax.callbacks.connect('ylim_changed', lambda event: ani._blit_cache.clear())

我将尝试为FuncAnimation提交补丁。