python - 使用 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 .。请问有人可以帮忙吗?先感谢您。
解决方案
您可以使用我为显示实时数据而开发的polt Python 包。
假设您想在 CSV 文件中显示多个数据列的实时时间序列,您可以将实时 CSV 流(标题+实时列)通过管道传输到polt
:
(head -n1 myfile.csv; tail -fn0 myfile.csv) | 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 文档以获取更多显示可能性。
推荐阅读
- python - Python Django Channels - 更好地隔离 WebSocket 服务器?
- xml - Apache骆驼多个端点
- corda - 搜索链我可以找到是否已经消耗了某些东西以及它是由什么消耗的?
- docker - K6 InfluxDB + Grafana Docker:一个容器可以运行多少个虚拟用户?
- ansible - Ansible Conditional - 将注册变量与值进行比较
- python - 对多个 HTTP 请求进行异步状态检查
- parallel-processing - 使用两个应用程序时重定向 mpirun 标准输出 (MIMD)
- php - 无法将新闻项目附加到数据透视表中的用户
- sas - 使用 proc sql 过滤更高的值
- python - gunicorn 问题 - 文件不可执行