2015-08-08 65 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”是结束。