具备Automatic Data Sending功能的Python mmWave vital sign数据采集应用:关闭时自动生成并展示Excel数据图表的方法咨询
具备Automatic Data Sending功能的Python mmWave vital sign数据采集应用:关闭时自动生成并展示Excel数据图表的方法咨询
嘿,很高兴能帮你搞定这个需求!针对你的mmWave生命体征数据采集应用,要实现关闭时自动用Excel里的日志生成图表并展示,咱们可以分几步来操作,一步步来很简单:
1. 先装好用得上的依赖库
首先得安装几个Python工具包,用来读Excel、画图表:
pip install pandas matplotlib openpyxl
pandas负责轻松读取Excel里的数据matplotlib用来生成各种图表(折线图、柱状图都能搞定)openpyxl是读取.xlsx格式文件的必要引擎
2. 捕获应用关闭的时机
要让图表在关闭应用时自动生成,有两种常见方式,看你的应用是命令行还是带GUI界面的:
情况一:命令行/无界面的采集程序
用Python自带的atexit模块,它会在程序正常退出时自动执行你指定的函数,完美适配这种场景:
import atexit import pandas as pd import matplotlib.pyplot as plt # 定义生成并展示图表的核心函数 def generate_and_display_chart(): # 替换成你的Excel文件路径 excel_path = "vital_signs_log.xlsx" try: # 读取Excel数据 df = pd.read_excel(excel_path, engine="openpyxl") # 这里以生成心率随时间变化的折线图为例,记得替换成你实际的列名 plt.figure(figsize=(10, 6)) plt.plot(df["采集时间"], df["心率"], label="心率", color="#ff4444", linewidth=2) # 如果还有其他指标比如呼吸率,可以再加一条曲线 # plt.plot(df["采集时间"], df["呼吸率"], label="呼吸率", color="#0099cc", linewidth=2) # 给图表加细节,让它更清晰 plt.xlabel("采集时间") plt.ylabel("生命体征数值") plt.title("mmWave生命体征数据趋势") plt.legend() plt.grid(alpha=0.3) # 可选:把图表保存成图片文件,方便后续查看 plt.savefig("vital_signs_trend.png", dpi=150) # 自动弹出窗口展示图表 plt.show() except FileNotFoundError: print("⚠️ 错误:找不到指定的Excel数据文件!") except KeyError as e: print(f"⚠️ 错误:Excel里找不到列名 {e},请检查数据格式!") except Exception as e: print(f"⚠️ 生成图表时出错:{str(e)}") # 注册这个函数,让程序退出时自动执行 atexit.register(generate_and_display_chart) # 这里放你的数据采集主逻辑 print("正在采集mmWave生命体征数据...") # 比如你的采集循环、设备交互代码都写在这里
情况二:带GUI界面的采集程序(以Tkinter为例)
如果你的应用有图形界面,那就绑定窗口的关闭事件,用户点叉的时候触发图表生成:
import tkinter as tk from tkinter import messagebox import pandas as pd import matplotlib.pyplot as plt def generate_and_display_chart(): # 和上面的函数内容完全一样,复制过来就行 excel_path = "vital_signs_log.xlsx" try: df = pd.read_excel(excel_path, engine="openpyxl") plt.figure(figsize=(10, 6)) plt.plot(df["采集时间"], df["心率"], label="心率", color="#ff4444", linewidth=2) plt.xlabel("采集时间") plt.ylabel("生命体征数值") plt.title("mmWave生命体征数据趋势") plt.legend() plt.grid(alpha=0.3) plt.savefig("vital_signs_trend.png", dpi=150) plt.show() except Exception as e: messagebox.showerror("错误", f"生成图表失败:{str(e)}") def on_window_close(): # 先弹个确认框,避免误操作 if messagebox.askyesno("确认退出", "确定要关闭数据采集应用吗?"): # 生成并展示图表 generate_and_display_chart() # 关闭窗口 root.destroy() # 创建GUI窗口 root = tk.Tk() root.title("mmWave生命体征采集") # 绑定窗口关闭事件 root.protocol("WM_DELETE_WINDOW", on_window_close) # 这里放你的GUI组件,比如采集按钮、状态显示等 tk.Label(root, text="正在采集数据...").pack(pady=20) # 启动GUI主循环 root.mainloop()
3. 适配你自己的数据格式
一定要记得把代码里的列名(比如采集时间、心率)替换成你Excel文件里实际的列名!如果你的数据有多个指标,直接多加几条plt.plot()语句就行,图表会自动添加图例。
4. 小提示
- 如果你的Excel文件是旧的
.xls格式,把engine="openpyxl"改成engine="xlrd",同时需要安装xlrd:pip install xlrd==1.2.0(新版本xlrd不支持.xls) - 要是想生成其他类型的图表(比如柱状图、散点图),把
plt.plot()换成plt.bar()或者plt.scatter()就行,Matplotlib的功能足够灵活
备注:内容来源于stack exchange,提问作者marsc0des
相关产品推荐
相关产品推荐

