在绘制实时数据时加入数据点

时间:2016-02-15 14:08:39

标签: python matplotlib

我有一些代码可以从某些温度传感器获取实时数据。该代码每5秒左右绘制一次从传感器获得的值,并绘制图表上的数据点。那里的一切都很好,所以我认为如果积分合起来可能看起来会更好。我假设只是在linestyle = '-'的末尾添加plt.plot,但这不会产生连接点的行。

我尝试简化代码,看看我是否错过了我在下面显示的内容,但这仍然没有加入点数。

所以我的问题......在绘制实时数据时是否有办法加入积分?

x = [1,2,3,4,5,6,7,8,9]
y = [2,5,2,7,9,4,2,7,6]

i= 0

plt.ion()
plt.ylim(0,10)

for i in range (0,9):
    plt.plot(x[i],y[i], marker = 'o', linestyle = '-')
    i+=1
    plt.pause(1)

plt.show(block=True)

1 个答案:

答案 0 :(得分:1)

您的for循环存在一些概念性问题,但这与手头的问题无关。问题是,在您目前的情况下,您的每个plt.plot调用都会创建一个具有该数据点的新绘图。你想要做的是创建一个图并更新其数据。

要修复你的例子,我会像这样做

plt.ion()
plt.xlim(0,10)  #  Need to make sure both x and y axes have proper ranges
plt.ylim(0,10)
line_plot=plt.plot([],[],marker='o',linestyle='-')[0] # Create an empty plot with which we can work

for xval,yval in zip(x,y):
    line_plot.get_xdata().append(xval) #  Attach a new data point
    line_plot.get_ydata().append(yval)   
    plt.pause(1)