You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

具备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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:09:28