10978| 2
|
[项目分享] 【Mind+ Python】使用matplotlib实现温度可视化监测 |
本帖最后由 Ski 于 2021-3-22 18:47 编辑 可视化温度实时监测窗口 Mind+ 1.70版本推出了期待已久的Python模式,不用再单独安装配置python环境,直接使用mind+软件就可以体验所有python功能。 而且python模式下,代码模式内提供库管理功能,一键加载常用库。 Mind+ Python模式使用教程大家可以到官方教程中查看:Mind+ Python模式教程 。 已经看到有大佬在用mind+玩pinpong库了,用Mind+玩转PinPong库 ,看了这个帖子,突发奇想python有许多好用的数据处理库,我们可以利用这些工具,结合pinpong库,将硬件传感器数据导出或形成图表,进行数据分析或者是实时监测数据。 下面我们来试试做一个可视化温度实时监测窗口。项目分析: 实现温度实时监测窗口,首先我们需要用到pinpong库,来控制硬件获取温度值;而将获取到的温度数值转为折线图,网上查了一下可以使用matplotlib库,matplotlib 是 Python 最常用的可视化工具,他可以被用来生成直方图、折线图、散点图等数据图表,非常强大,刚好符合我们想要的折线图效果。 准备工作: 1.打开mind+,从软件右上角切到Python模式,并且新建"temperature.py"文件。 2.选择“库管理”,加载安装pinpong库以及matplotlib库。 程序分析: 首先先确定一下需要实现的效果:
获取温度值,这里使用UNO主控和LM35温度传感器,将LM35温度传感器接到UNO板A0接口,如下图: 程序部分使用pinpong库,获取A0口的模拟值: 数据处理: 接着我们需要使用matplotlib库来处理数据,其中使用pyplot和animation两个方法,pyplot函数集类似于MATLAB,可以帮助我们绘图,animation可以实现动图效果,实现数据的实时更新。 前面我们提到,需要数据的实时更新,折线图的X轴坐标以时间戳的形式呈现,所以这里我们还需要加入datetime,用于调用时间值。 导入各个库之后,创建画布,并且修改画布样式,这里我们创建两个列表,对应折线图的x和y轴坐标值。 想要实现动图效果,这里我们使用FuncAnimation方法,首先我们先来了解一下FuncAnimation()函数: FuncAnimation(fig,func,frames,init_func,interval,blit)
大概知道了这个函数的用法,前面我们已经定义了画图fig,并且给予了配置样式,同时创建了两个列表对应折线图的横纵轴坐标,那么我们还需要定义一个动画函数。 在动画函数中,我们需要确定x和y轴的数值,y轴在这里是我们需要的温度值,通过公式转化后,添加到ys列表中:ys.append(temp_c) x轴使用时间值,调用datetime,以时间戳的形式添加进xs列表中:xs.append(dt.datetime.now().strftime('%H:%M:%S')) 在得到x和y轴数据后,调用plot绘制图形:ax.plot(xs, ys) 函数最后,我们还需要设置一下图像的格式,设置图标标题及坐标名称等。 动画函数完成后,调用FuncAnimation,填入画布名称及动画函数等等参数后,使用plt.show()绘制画布。 完整代码如下:
|
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed