Hi, I was able to get past the error, and I am now trying to add a callback to receive values from a queue, add it to the existing poly line, and render the same using matplotlib. The code snippet is shown below:
=== BEGIN === import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import sys import paho.mqtt.client as mqtt def update_line(num, x, y, z, l): print x, y, z l, = ax.plot(x, y, z, label='Line') return l, def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("hello/world") def on_message(client, userdata, msg): data = msg.payload print(msg.topic+" "+str(msg.payload)) point = np.asarray([float(x) for x in data.split()]) print point x=np.concatenate((x,[point[0]])) y=np.concatenate((y,[point[1]])) z=np.concatenate((z,[point[2]])) l, = ax.plot(x, y, z, label='Line') return l, fig = plt.figure() ax = fig.gca(projection='3d') ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') x = np.array([1.0, 2.0, 3.0]) print type(x) y = np.array([4.0, 7.0, 8.0]) z = np.array([6.0, 9.0, 5.0]) l, = ax.plot(x, y, z, label='Line') ax.legend() client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect_async("localhost", 1883, 60) client.loop_start() line_ani = animation.FuncAnimation(fig, update_line, 25, fargs=(x, y, z, l), interval=2000, blit=True) plt.show() === END === I now hit the following error: === ERROR === $ python mat-3.py <type 'numpy.ndarray'> [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] Connected with result code 0 [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] hello/world 34.56 15.912 0.72 [ 34.56 15.912 0.72 ] Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2287, in _thread_main self.loop_forever() File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1261, in loop_forever rc = self.loop(timeout, max_packets) File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 811, in loop rc = self.loop_read(max_packets) File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1073, in loop_read rc = self._packet_read() File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1475, in _packet_read rc = self._packet_handle() File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1943, in _packet_handle return self._handle_publish() File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2118, in _handle_publish self._handle_on_message(message) File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2274, in _handle_on_message self.on_message(self, self._userdata, message) File "mat-3.py", line 23, in on_message x=np.concatenate((x,[point[0]])) ValueError: zero-dimensional arrays cannot be concatenated [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] [ 1. 2. 3.] [ 4. 7. 8.] [ 6. 9. 5.] ... === END === Is there a better way to re-render the plot after receiving data? Thanks! SK -- Shakthi Kannan http://www.shakthimaan.com ------------------------------------------------------------------------------ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users