Динамическое обновление гистограммы в matplotlib

У меня есть несколько датчиков, прикрепленных к моей Raspberry Pi; Я'Я посылаю их данные на мой компьютер дважды в секунду, используя TCP. Я хотел бы непрерывно отображать эти значения с помощью matplotlib.

Метод ям в настоящее время использование кажется неэффективным (яЯ очищаю участок и перерисовываю его каждый раз) и имеет некоторые нежелательные недостатки (масштаб корректируется каждый раз; я бы хотел, чтобы он оставался в диапазоне от 0,0 до 5,0). Я знаю тамспособ сделать это без необходимости очищать и перерисовывать, но можетКажется, это понять. Ниже мой текущий код:

import socket
import sys
import time
from matplotlib import pyplot as plt

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect the socket to the port where the server is listening
server_address = ('192.168.0.10', 10000)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)

# Initial setup for the bar plot
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
x = [1,2,3]
labels = ['FSR', 'Tilt', 'IR']
ax.set_xticklabels(labels)
y = [5.0,5.0,5.0]
ax.bar(x,y)
fig.autofmt_xdate()
plt.draw()

#Grab and continuously plot sensor values
try:
    for i in range(300):
        amount_received = 0
        amount_expected = len("0.00,0.00,0.00")

        # Receive data from RasPi
        while amount_received < amount_expected:
            data = sock.recv(14)
            amount_received += len(data)
            print >>sys.stderr, 'received "%s"' % data

        # Plot received data
        y = [float(datum) for datum in data.split(',')]
        ax.clear()
        ax.bar(x,y)
        plt.draw()
        time.sleep(0.5)

#Close the socket       
finally:
    print >>sys.stderr, 'closing socket'
    sock.close()

Ответы на вопрос(2)

Ваш ответ на вопрос