首页 > 解决方案 > 使用 matplotlib 从 CSV 文件绘制实时图表

问题描述

我按照CSV/TXT 文件中的实时图形图教程进行操作,但是当我运行 python 程序时,没有创建图形,而是终端进入忙碌模式,直到我使用“Ctrl+Z”退出。

出于某种原因,matplotlib 中的 animate 函数对我不起作用。相反,我编写了以下代码,它应该可以完成这项工作:

import matplotlib.pyplot as plt

while True:
    pullData = open("data1.csv","r").read()
    dataArray = pullData.split('\n')
    xar = []
    yar = []
    for eachLine in dataArray:
        if len(eachLine)>1:
            x,y = eachLine.split(',')
            xar.append(x)
            yar.append(y)
    plt.plot(xar, yar)
    plt.pause(0.05)

plt.show()

但是上面的代码没有正确地从 CSV 文件中读取数据点并生成错误的图表。

我目前在系统上安装了Python 3.6.5 :: Anaconda, Inc .。请问有人可以帮忙吗?先感谢您。

标签: pythonmatplotlibgraph

解决方案


您可以使用我为显示实时数据而开发的polt Python 包。

假设您想在 CSV 文件中显示多个数据列的实时时间序列,您可以将实时 CSV 流(标题+实时列)通过管道传输到polt

(head -n1 myfile.csv; tail -fn0 myfile.csv) | polt add-source -p csv live

polt add-source -p csv live

解释

(
head -n1 myfile.csv; # output first line of CSV file (header) 
tail -fn0 myfile.csv # output new CSV data continuously
) | polt \ # pipe the data into polt
    add-source -p csv # tell polt to interpret data as CSV
    live # do the live plotting

如果您不想直接绘制时间序列,可以查看polt Animator 文档以获取更多显示可能性。


推荐阅读