Python:实时绘图更新整行而不是一点

时间:2014-06-30 08:39:59

标签: python matplotlib

我正在从COM端口读取传感器信号,并希望在图中显示值。我设法显示图表,它也会更新,但图表会更改每个新点的颜色。我想问题是不仅要点更新,而且整个图表。我的代码如下所示:

import pylab as plt

buttonclick():
  plt.figure()
  ln, = plt.plot([])
  plt.ion()
  plt.show()
  plotdata =[]
  while self.Run:
    plotdata.append(getsensordata()) #getsensordata returns a float
    plt.plot(plotdata)
    plt.draw()
    time.sleep(1000)

我还尝试了ln.set_data的另一个选项。使用此选项似乎只更新了新点但我无法确认,因为我遇到轴不会自动缩放的问题。我将while循环更改为:

i=0
while self.Run:
  plotdata.append(getsensordata())
  xdata.append(i)
  ln.set_data(xdata,plotdata)
  plt.autoscale(True,True,True)
  plt.draw()
  i+=1

我看到Can you plot live data in matplotlib?但是这个解决方案在我的情况下根本不起作用,不知道为什么。另外,blib的其他解决方案在我看来有点过头了,因为我似乎非常接近这个简单解决方案的解决方案。

1 个答案:

答案 0 :(得分:0)

Python Matplotlib: Dynamically update plot - array length not known a priori

中找到答案
fig = plt.figure()
ax = fig.add_subplot(111)
ln, = plt.plot([])
plt.ion()
axes=plt.axes()
plt.show()
plotdata = []
while self.Run:
  plotdata.append(getsensordata())
  plotdata.append(AH_SHT)
  ln.set_ydata(plotdata)
  ln.set_xdata(range(len(plotdata)))
  ax.relim()
  ax.autoscale_view()
  plt.draw()