加速计数据写入文件,然后写入图形Matplotlib(3个子图[x,y,z])

2024-09-27 07:35:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程不是很在行,所以请容忍我。把编程项目作为业余爱好(我主修物理)。无论如何,尝试接收串行数据,然后使用matplotlib从一个使用ADXL345分接跳闸轴加速度计的Arduino Uno进行绘图。我现在不需要它是动态的(livefeed)。这是我用来将串行数据写入性能良好的文件的代码。在

import serial

filepath = 'C:/Users/Josh/Documents/Programming/'
outfilename =filepath + 'data.txt'
outfile = open(outfilename,"w")

numpoints = 1000
ser = serial.Serial('COM4',9600)
for i in range(numpoints):
    inString=ser.readline()
    print inString
    outfile.write(inString)

ser.close()
outfile.close()

这使得一个相当容易访问的文本文件,我想把它转换成一个matplotlib图,其中包含每个轴(x,y,z)的三个子图。我说从python文件中找到它是不存在的,但是我不能从文件中找到它。非常感谢任何帮助。这是我拙劣的尝试的一部分:

^{pr2}$

Tags: 文件数据项目closematplotlib编程serial物理
2条回答

如果您对绘制ADXL345的实时读数感兴趣,这里是我的代码。 我用pyqtgraph来快速绘制

    from pyqtgraph.Qt import QtGui, QtCore
    import numpy as np
    import pyqtgraph as pg
    import serial

    app = QtGui.QApplication([])
    xdata = [0]
    ydata = [0]
    zdata = [0]

    # set up a plot window
    graph = pg.plot()
    graph.setWindowTitle("ADXL345 realtime data")
    graph.setInteractive(True)

    xcurve = graph.plot(pen=(255,0,0), name="X axis")
    ycurve = graph.plot(pen=(0,255,0), name="Y axis")
    zcurve = graph.plot(pen=(0,0,255), name="Z axis")

    # open serial port
    ser = serial.Serial("COM4", 115200, timeout=1)

    def update():
        global xcurve, ycurve, zcurve, xdata, ydata, zdata

        # serial read
        dataRead = ser.readline().split()

        # append to data list
        xdata.append(float(dataRead[0]))
        ydata.append(float(dataRead[1]))
        zdata.append(float(dataRead[2]))

        # plot 
        xcurve.setData(xdata)
        ycurve.setData(ydata)
        zcurve.setData(zdata)

        app.processEvents()  

    # Qt timer
    timer = QtCore.QTimer()
    timer.timeout.connect(update)
    timer.start(0)


    if __name__ == '__main__':
        import sys
        if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
            QtGui.QApplication.instance().exec_() 

文件路径是完整的文件路径,而不是目录。然后添加'data.txt',需要将代码更改为:

filepath = 'C:\\Users\\Josh\\Documents\\Programming\\'
infile = filepath + 'data.txt'
infile = open(infile,"r")

在python中,'\'用于转义字符,因此要有实际的'\',必须使用'\'。在

或者,您可以(通常应该)使用^{}将目录和文件连接在一起。在这种情况下,您的代码变成:

^{pr2}$

相关问题 更多 >

    热门问题