繁体   English   中英

使用python绘制存储在csv中的最新值的最佳方法是什么? 下面的代码绘制图形,但要逐行

[英]what is the best way to plot the most recent value that is being stored in csv using python? The below code plots graph but want line by line

    plt.rcParams["figure.figsize"]=[7.00,3.50]
    plt.rcParams["figure.autolayout"]=True
    df=pd.read_csv('C:\\data.csv',names=('x','xl','y','z','fe','ti','ge','sd'))
    plt.plot(df.xl, df.y)
    plt.xlabel("xlabel")
    plt.ylabel=("ylabel")
    plt.show()
  

我想在代码写入 csv 文件时绘制一个实时图表。 上面的代码绘制了图形,但接收了整个文件并立即绘制它。 逐行寻找一些东西,应该看起来像活的。 这些值从 arduino 串行存储在 CSV 中。

您可以使用带有选项iterator=True, chunksize=1read_csv读取

import pandas as pd

for line in pd.read_csv('data.csv', iterator=True, chunksize=1):
    print(line)
    print('---')

它需要在for -loop 之前和for -loop 内部创建绘图,它需要使用特殊方法向现有绘图添加新值(类似于plt.xdata()


编辑:

从文件中读取随机数据的最小工作代码。 但是我不知道当程序必须等待文件中的数据时它将如何工作。 当文件中没有更多数据并且需要不同的方法来完成时,它可能会完成for -loop。 当文件较大时,可能需要检查文件大小并读取新数据

我使用io.StringIO(text)创建每个人都可以简单地编写和运行的示例。 你应该使用你的filename而不是io.StringIO()

# --- create random data for example ---

import random

random.seed(0)
data = [(x, random.randint(-10, 10)) for x in range(100)]
text = "\n".join(f'{x},{y}' for x, y in data)

# --- code ---

import pandas as pd
import numpy as np
import io
import time
import matplotlib.pyplot as plt

line, = plt.plot([], [])  # create empty plot, has to be `,` after `line` 
plt.xlim(0, 100)   # show all area for plot data
plt.ylim(-10, 10)  # show all area for plot data

plt.show(block=False)  # don't block code - so next lines can run
plt.pause(.001)  # time to update window

#for part in pd.read_csv("filename.csv", iterator=True, chunksize=1, names=['x' ,'y']):
for part in pd.read_csv(io.StringIO(text), iterator=True, chunksize=1, names=['x' ,'y']):
    x = np.append(line.get_xdata(), part.x)
    y = np.append(line.get_ydata(), part.y)
    line.set_xdata(x)
    line.set_ydata(y)
    #print('x:', x)
    #print('y:', y)
    #print('---')
    
    plt.draw()  # inform plot to update window
    plt.pause(.001) # time to update window
    
    time.sleep(0.25)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM