I'm new to Python and I'm trying to plot some data taken from an Arduino hooked up to the Serial port through a USB. I have a thermistor connected to the Arduino, and would like to plot a history of the sampled temperatures. So, a graph that keeps expanding on the x-axis and keeps appending new temperature values to the y-axis.
When I run this code, however, I get a blank graph, and it never does anything else. I suspect my problem is not really understanding FuncAnimation very well. Below is my code.
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()
I should note that after I run the program and close everything out, line.get_ydata returns a collection of temperature points. So, the serial port is working, I just am not graphing it correctly. Thank you.