Help with annotate function in python

Hi everyone I'm trying to plot live data on Python from an arduino through the serial port. I found some difficulties with annotate function. I don't know how to configure it or whether the place where I have put annotate function is it the the right place or not For example: for every point in temperature, i want the value to be printed next to the point ? this is my python code import serial # import Serial Library import time #import time import numpy  # Import numpy import matplotlib.pyplot as plt #import matplotlib library from drawnow import * temperature= [] vitesse= [] charge= [] current= [] Time = [] arduinoData = serial.Serial('com5', 9600) #Creating our serial object named arduinoData plt.ion() #Tell matplotlib you want interactive mode to plot live data cnt=0 ##fig1 = plt.figure() STARTINGTIME = round(time.time(),2) def makeFig(): #Create a function that makes our desired plot     plt.subplot(2,2,1)     plt.subplot(2,2,1).annotate(str(temperature)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Temperature Sensor Data')     plt.ylabel('Temperature C')     plt.grid(True)     plt.plot(temperature, 'ro-')     plt.subplot(2,2,2)     plt.subplot(2,2,2).annotate(str(vitesse)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Speed Sensor Data')     plt.ylabel('Speed KM/H')     plt.grid(True)     plt.plot(vitesse, 'bo-')     plt.subplot(2,2,3)     plt.subplot(2,2,3).annotate(str(charge)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming SOC Sensor Data')     plt.ylabel('Battery Charge %')     plt.grid(True)     plt.plot(charge, 'go-')     plt.subplot(2,2,4)     plt.subplot(2,2,4).annotate(str(current)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Current Sensor Data')     plt.ylabel('Current A')     plt.grid(True)     plt.plot(current, 'yo-') while True: # While loop that loops forever     while (arduinoData.inWaiting()==0): #Wait here until there is data         pass #do nothing     arduinoString = arduinoData.readline() #read the line of text from the serial port     dataArray = arduinoString.split(';')   #Split it into an array called dataArray     temp = float (dataArray[0])     vite = float (dataArray[1])     char = float (dataArray[2])     curr = float (dataArray[3])     temperature.append(temp)                     #Build our temperature array by appending temp readings     vitesse.append(vite)                     #Build our vitesse array by appending temp readings     charge.append(char)                     #Build our charge array by appending temp readings     current.append(curr)                     #Build our current array by appending temp readings     Time.append(round(time.time(),2) - STARTINGTIME)     drawnow(makeFig)                       #Call drawnow to update our live graph     plt.pause(0.00001)     cnt=cnt+1     if(cnt>50):         temperature.pop(0)         vitesse.pop(0)         charge.pop(0)         current.pop(0)

Topic by SoufianeG 3 years ago


problem with annotate()

Hi im trying to plot live data on python from an arduino through the serial port  i found some difficult with annotate function i don't know how to configure the third parameter (position) python code import serial # import Serial Library import time #import time import numpy  # Import numpy import matplotlib.pyplot as plt #import matplotlib library from drawnow import * temperature= [] vitesse= [] charge= [] current= [] Time = [] arduinoData = serial.Serial('com5', 9600) #Creating our serial object named arduinoData plt.ion() #Tell matplotlib you want interactive mode to plot live data cnt=0 ##fig1 = plt.figure() STARTINGTIME = round(time.time(),2) def makeFig(): #Create a function that makes our desired plot         plt.subplot(2,2,1)     plt.subplot(2,2,1).annotate(str(temperature)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Temperature Sensor Data')     plt.ylabel('Temperature C')     plt.grid(True)     plt.plot(temperature, 'ro-')     plt.subplot(2,2,2)     plt.subplot(2,2,2).annotate(str(vitesse)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Speed Sensor Data')     plt.ylabel('Speed KM/H')     plt.grid(True)     plt.plot(vitesse, 'bo-')     plt.subplot(2,2,3)     plt.subplot(2,2,3).annotate(str(charge)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming SOC Sensor Data')     plt.ylabel('Battery Charge %')     plt.grid(True)     plt.plot(charge, 'go-')     plt.subplot(2,2,4)     plt.subplot(2,2,4).annotate(str(current)+','+ str(Time), textcoords='offset points')     plt.title('Live Streaming Current Sensor Data')     plt.ylabel('Current A')     plt.grid(True)     plt.plot(current, 'yo-')     while True: # While loop that loops forever     while (arduinoData.inWaiting()==0): #Wait here until there is data         pass #do nothing     arduinoString = arduinoData.readline() #read the line of text from the serial port     dataArray = arduinoString.split(';')   #Split it into an array called dataArray     temp = float (dataArray[0])     vite = float (dataArray[1])     char = float (dataArray[2])     curr = float (dataArray[3])     temperature.append(temp)                     #Build our temperature array by appending temp readings     vitesse.append(vite)                     #Build our vitesse array by appending temp readings     charge.append(char)                     #Build our charge array by appending temp readings     current.append(curr)                     #Build our current array by appending temp readings     Time.append(round(time.time(),2) - STARTINGTIME)     drawnow(makeFig)                       #Call drawnow to update our live graph     plt.pause(0.00001)     cnt=cnt+1     if(cnt>50):         temperature.pop(0)         vitesse.pop(0)         charge.pop(0)         current.pop(0)

Topic by SoufianeG 3 years ago  |  last reply 3 years ago