我是Python新手,我试图通过USB绘制一些从Arduino连接到串口的数据。我有一个连接到Arduino的热敏电阻,想绘制采样温度的历史记录。因此,图表在x轴上不断扩展并保持向y轴附加新的温度值。
然而,当我运行此代码时,我得到一个空白图表,它从不做任何其他事情。我怀疑我的问题并不是真正理解FuncAnimation。以下是我的代码。
import serial
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
ser = serial.Serial()
ser.baudrate = 38400
ser.port = 'COM4'
ser.open()
fig, ax = plt.subplots()
line, = ax.plot([])
i = 0
def init():
xdata = []
ydata = []
line.set_data(xdata, ydata)
return line,
def update_data(i)
newpoint = float(ser.readline())
oldxdata, oldydata = line.get_data()
newydata = np.append(oldydata,newpoint)
newxdata = np.append(oldxdata, i)
line.set_data(newxdata, newydata)
i = i + 1
return line,
ani = animation.FuncAnimation(fig, update_data, init_func = init, fargs=i)
plt.show()
我应该注意,在运行程序并关闭所有内容后,line.get_ydata会返回一组温度点。所以,串口工作正常,我只是没有正确绘制图形。谢谢。