我正在尝试为 matplotlib 中的 fill_between 形状设置动画,但我不知道如何更新 PolyCollection 的数据。举个简单的例子:我有两条线,我总是在它们之间填充。当然,线条会发生变化并且是动画的。
这是一个虚拟示例:
import matplotlib.pyplot as plt
# Init plot:
f_dummy = plt.figure(num=None, figsize=(6, 6));
axes_dummy = f_dummy.add_subplot(111);
# Plotting:
line1, = axes_dummy.plot(X, line1_data, color = 'k', linestyle = '--', linewidth=2.0, animated=True);
line2, = axes_dummy.plot(X, line2_data, color = 'Grey', linestyle = '--', linewidth=2.0, animated=True);
fill_lines = axes_dummy.fill_between(X, line1_data, line2_data, color = '0.2', alpha = 0.5, animated=True);
f_dummy.show();
f_dummy.canvas.draw();
dummy_background = f_dummy.canvas.copy_from_bbox(axes_dummy.bbox);
# [...]
# Update plot data:
def update_data():
line1_data = # Do something with data
line2_data = # Do something with data
f_dummy.canvas.restore_region( dummy_background );
line1.set_ydata(line1_data);
line2.set_ydata(line2_data);
# Update fill data too
axes_dummy.draw_artist(line1);
axes_dummy.draw_artist(line2);
# Draw fill too
f_dummy.canvas.blit( axes_dummy.bbox );
问题是如何在每次调用 update_data() 时根据 line1_data 和 line2_data 更新 fill_between Poly 数据并在 blit 之前绘制它们(“#Update fill data too”和“#Draw fill too”)。我尝试了 fill_lines.set_verts() 没有成功并且找不到示例...
谢谢!