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

Python读取CSV绘图求助:树莓派传感器电压数据可视化问题

问题排查与解决步骤

1. 核心问题:文件打开模式错误

读取CSV时如果误用w/w+模式,会直接清空文件内容,必须用**只读模式r**打开:

# 错误示例(会清空文件)
with open("sensor_data.csv", "w") as f:
    data = f.read()

# 正确读取方式
with open("sensor_data.csv", "r") as f:
    data = f.readlines()

2. 确保写入操作完成

写入CSV时必须保证数据真正写入磁盘,推荐用with语句自动管理文件关闭(避免缓冲区数据未写入):

import csv

def save_voltage(voltage):
    # 用a模式追加数据,不会覆盖已有内容
    with open("sensor_data.csv", "a", newline="") as f:
        writer = csv.writer(f)
        writer.writerow([voltage])

3. GUI触发读取+绘图完整示例

结合guizero和matplotlib实现按钮触发绘图:

from guizero import App, PushButton
import csv
import matplotlib.pyplot as plt

def plot_voltage_curve():
    voltages = []
    try:
        with open("sensor_data.csv", "r") as f:
            reader = csv.reader(f)
            for row in reader:
                # 跳过空行,转换为数值
                if row:
                    voltages.append(float(row[0]))
        
        if not voltages:
            print("CSV文件为空或无有效数据")
            return
        
        # 绘制曲线
        plt.figure(figsize=(8,4))
        plt.plot(voltages, label="传感器电压")
        plt.ylabel("电压(V)")
        plt.xlabel("采样次数")
        plt.title("传感器电压变化")
        plt.legend()
        plt.show()
        
    except FileNotFoundError:
        print("请先执行数据记录,CSV文件不存在")
    except ValueError:
        print("CSV文件中存在非数值数据,请检查格式")

# 初始化GUI
app = App(title="传感器数据可视化")
plot_btn = PushButton(app, text="绘制电压曲线", command=plot_voltage_curve)
app.display()

4. 额外注意事项

  • 确认CSV文件路径正确:如果不在脚本同目录,使用绝对路径(比如/home/pi/sensor_data.csv)
  • 写入时添加newline="",避免跨系统换行符问题
  • 测试前手动打开CSV文件,确认数据已正确写入

内容的提问来源于stack exchange,提问作者Antoine Legrand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:05:58