2017-06-21 22 views
0

3つのセンサノードからのソケット接続を介して私にデータが提供されていますが、それぞれ温度、電圧、湿度の3つのサブプロットがあります。 tempサブプロットは、各ノードからの温度値をプロットする必要があります。湿度と電圧についても同様です。ここで私が書いたコードです:matplotlib.animationループ内でのプロット

import socket 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
import pickle 


fig = plt.figure() 
temp_plot = fig.add_subplot(3,1,1) 
volt_plot = fig.add_subplot(3,1,2) 
pres_plot = fig.add_subplot(3,1,3) 


maclist=['xyz01','xyz02','xyz03'] 
temp=[] 
volt=[] 
time=[] 
pres=[] 


ip = 'server IP address' 

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
sock.connect((ip,10030)) 
print 'connection established to server...' 

def animate(i): 
    global sock 
    info = sock.recv(1024) 
    info = pickle.loads(info) 

    ind = maclist.index(info['MAC']) 
    if len(temp[ind]) == 10: #to make sure every time 10 points are plotted 
    temp[ind].pop(0) 
    time[ind].pop(0) 
    volt[ind].pop(0) 
    pres[ind].pop(0) 

    temp[ind].append(info['TEMP']) 
    time[ind].append(info['TIME']) 
    volt[ind].append(info['VOLT']) 
    pres[ind].append(info['PRES']) 
    temp_plot.clear() 
    volt_plot.clear() 
    pres_plot.clear() 

    for i in range(len(maclist)): 
    temp_plot(time[i],temp[i]) 
    volt_plot(time[i],volt[i]) 
    pres_plot(time[i],pres[i]) 

if __name__ == '__main__' : 
    ani = animation.FuncAnimation(fig,animate,interval = 100) 
    plt.show() 

info = {'MAC':'xyz01','TIME':21.4131,'TEMP':27.0,'VOLT':2.5,'PRES':892}

一時、ボルト、時間とPRESはサブリストが含まれているリストである、 元について - 一時は[0]ノード0からの温度値のリストが含まれています。

このコードは私にエラーを与え、私が原因ループ内

'temp_plot(time[i],temp[i])
TypeError: 'AxesSubplot' object is not callable '

をプロットしようとしているのである疑いいる誰もが親切にこの

答えて

0

temp_plotについて私を助けることができるあなたにプロットしたいサブプロットであります。サブプロット自体を呼び出すことはできません。 plt(x,y)またはax(x,y)と書くのではなく、plt.plot(x,y)またはax.plot(x,y)と書いてください。ここが必要です

temp_plot.plot(time[i],temp[i]) 
volt_plot.plot(time[i],volt[i]) 
pres_plot.plot(time[i],pres[i]) 
関連する問題