首页 > 解决方案 > 单行上的 matplotlib 动画组

问题描述

我想做一个标准的matplotlib动画,我希望不同的组作为“单”线,而不是绘制共享相同x轴的10个组。对于上下文,我正在尝试绘制一个系列中 10 本书的情绪图表,并希望对每本书的线条进行颜色编码。我发现的所有动画线的搜索似乎都是您必须从 x = 0 开始到当前 x,这使得分配正确的着色标签变得困难。

例如,以Python/Matplotlib 中的动画“增长”线图为例。假设我想x in [0,10)作为一组,x in [10,20)作为第 2 组,等等。我将如何以动画方式做到这一点?

我正在尝试获取动画版本:

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

%matplotlib notebook

import matplotlib.colors as mcolors
colors = list(mcolors.XKCD_COLORS.keys())[0:10]


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

fig, ax = plt.subplots()
line, = ax.plot(x, y, color='k')

def update(num, x, y, line):
    line.set_data(x[:num], y[:num])
    line.axes.axis([0, 10, 0, 1])
    return line,

anim = ani.FuncAnimation(fig, update, len(x), fargs=[x, y, line],
                              interval=25, blit=True)
plt.show()

看起来像这样,但每个段都有一种颜色的动画:

plt.figure()
x_beg = 0
for i in range(1,11):
    plt.plot(x[x_beg:(x_beg + i * 10)],
             y[x_beg:(x_beg + i * 10)],
             label=i)
    x_beg += i * 10
    
plt.legend(loc='best', fontsize=15)
plt.show()    

在此处输入图像描述

标签: pythonmatplotlib

解决方案


我想出的答案是创建 X 组我想要绘制的填充线,用 nan 填充我不想显示的值,然后同时为所有线设置动画


推荐阅读