我正在从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的其他解决方案在我看来有点过头了,因为我似乎非常接近这个简单解决方案的解决方案。
答案 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()