Matplotlib在形状之间填充动画

2024-05-13 17:44:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在matplotlib中的形状之间设置填充动画,我不知道如何更新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_数据和line2_数据的多边形数据之间的填充,并在blit之前绘制它们(“update fill data too”&;“&35; draw fill too”)。我试过填充行。set_verts()没有成功,找不到示例。。。

谢谢!


Tags: 数据truedataplotfilldummycolortoo