2015-08-08 78 views
0

您好我想作一個散點圖,並與每個點 的真正價值註釋數據點,但只是yLabel值 意思走點的實際價值,並繪製它靠近點matplotlib幫助使用Python 2.7

Python代碼

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= [] 

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 



def makeFig(): #Create a function that makes our desired plot 

plt.subplot(2,2,1) 
plt.title('Live Streaming Temperature Sensor Data') 
plt.ylabel('Temperature C') 
plt.grid(True) 
plt.plot(temperature, 'ro-') 

plt.subplot(2,2,2) 
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.title('Live Streaming SOC Sensor Data') 
plt.ylabel('Battery Charge %') 
plt.grid(True) 
plt.plot(charge, 'go-') 

plt.subplot(2,2,4) 
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 
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) 

任何想法?????

回答

0

如果我明白你要找的,你應該在每一個插曲結束使用plt.ticklabel_format(useOffset=False)。所以,你要修正y尺度。使用plt.ylim(m,n)來設置y軸的限制,其中「m」是軸的起始,「n」是結束。