当我从套接字接收数据时,Matplotlib逐行填充空白图像

时间:2013-07-11 10:24:41

标签: python numpy matplotlib

我有来自套接字的数据。 我想在开始时创建一个空图像,然后每次从套接字接收数据时更新此图像。 问题是当我收到大量数据(1024)并且我想要显示它时,需要时间并且挂起。是否有可能加快它的速度? 我认为我这样做的方式就是问题,所以如果有人知道更好的方法,请提出建议。

这就是我正在做的事情:

    for i in range(0,99): 
        self.image_array[i] = np.zeros(shape=(y,x))  # y lines, x = points

    #values are the received array 
    self.image_array[ch_id][line] = self.values  from socket

    ax1.imshow(self.image_array[ch_id],cmap='gray',interpolation='nearest',
            origin='lower')

    plt.draw()
    plt.clf()

当我收到数据时,有可能不是替换数据,而是追加或者什么? 是否有更好的方法来初始化数组而不是np.zeros(...

1 个答案:

答案 0 :(得分:1)

每次从套接字到达新数据时都不必创建新图像。您可以在初始化时创建单个图像,然后根据您收到的数据更新数组中的值:

  # on initialisation
  self.im = imshow(np.zeros((x,y)),cmap='gray',interpolation='nearest',
        origin='lower')
  ...

  # on update
  self.im.set_data(self.values)
  self.im.set_clim(self.values.min(),self.values.max())
  self.im.figure.canvas.draw()