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 '
をプロットしようとしているのである疑いいる誰もが親切にこの