• 十六、实时图表

    十六、实时图表

    在这篇 Matplotlib 教程中,我们将介绍如何创建实时更新图表,可以在数据源更新时更新其图表。 你可能希望将此用于绘制股票实时定价数据,或者可以将传感器连接到计算机,并且显示传感器实时数据。 为此,我们使用 Matplotlib 的动画功能。

    最开始:

    1. import matplotlib.pyplot as plt
    2. import matplotlib.animation as animation
    3. from matplotlib import style

    这里,唯一的新增导入是matplotlib.animation as animation。 这是一个模块,允许我们在显示之后对图形进行动画处理。

    接下来,我们添加一些你熟悉的代码,如果你一直关注这个系列:

    1. style.use('fivethirtyeight')
    2. fig = plt.figure()
    3. ax1 = fig.add_subplot(1,1,1)

    现在我们编写动画函数:

    1. def animate(i):
    2. graph_data = open('example.txt','r').read()
    3. lines = graph_data.split('\n')
    4. xs = []
    5. ys = []
    6. for line in lines:
    7. if len(line) > 1:
    8. x, y = line.split(',')
    9. xs.append(x)
    10. ys.append(y)
    11. ax1.clear()
    12. ax1.plot(xs, ys)

    我们在这里做的是构建数据,然后绘制它。 注意我们这里不调用plt.show()。 我们从一个示例文件读取数据,其内容如下:

    1. 1,5
    2. 2,3
    3. 3,4
    4. 4,7
    5. 5,4
    6. 6,3
    7. 7,5
    8. 8,7
    9. 9,4
    10. 10,4

    我们打开上面的文件,然后存储每一行,用逗号分割成xsys,我们将要绘制它。 然后:

    1. ani = animation.FuncAnimation(fig, animate, interval=1000)
    2. plt.show()

    我们运行动画,将动画放到图表中(fig),运行animate的动画函数,最后我们设置了 1000 的间隔,即 1000 毫秒或 1 秒。

    运行此图表的结果应该像往常一样生成图表。 然后,你应该能够使用新的坐标更新example.txt文件。 这样做会生成一个自动更新的图表,如下:

    十六、实时图表 - 图1