gpt4 book ai didi

python - Matplotlib 动画 fill_between 形状

转载 作者:太空狗 更新时间:2023-10-29 17:47:46 25 4
gpt4 key购买 nike

我正在尝试为 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 );

问题是如何根据line1_dataline2_data每次更新fill_betweenPoly数据update_data() 被调用并在 blit 之前绘制它们(“# Update fill data too” & “# Draw fill too”)。我尝试了 fill_lines.set_verts() 但没有成功,而且找不到示例。

最佳答案

好的,正如有人指出的那样,我们在这里处理一个集合,所以我们将不得不删除并重绘。因此,在 update_data 函数的某处,删除与其关联的所有集合:

axes_dummy.collections.clear()

并绘制新的“fill_between”PolyCollection:

axes_dummy.fill_between(x, y-sigma, y+sigma, facecolor='yellow', alpha=0.5)

将未填充的等高线图叠加在已填充的等高线图上需要类似的技巧,因为未填充的等高线图也是一个集合(我想是线条?)。

关于python - Matplotlib 动画 fill_between 形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com