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

如何读取温湿度日志TXT并提取数据用Numpy绘制时序图表?

处理传感器数据文件并绘制曲线的解决方案

1. 读取并存储时间数据

每行的时间信息位于箭头->左侧,先按箭头分割每行内容,提取时间字符串后,用datetime模块解析为可后续处理的时间对象:

from datetime import datetime

times = []
with open('sensor_data.txt', 'r') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 分割时间与数据段
        time_str, data_part = line.split(' -> ')
        # 按格式解析时间字符串
        time_obj = datetime.strptime(time_str, '%H:%M:%S.%f')
        times.append(time_obj)

解析后的datetime对象既保留完整时间信息,也方便后续转换为绘图所需的数值格式。

2. 提取湿度、温度、热指数的数值

针对箭头右侧的数据段,先用;分割各参数项,再对每个参数按:拆分,清理单位字符后转换为浮点数:

humidity = []
temperature = []
heat_index = []

with open('sensor_data.txt', 'r') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        _, data_part = line.split(' -> ')
        # 拆分单个参数
        params = data_part.split(';')
        for param in params:
            if not param:
                continue
            key, value = param.split(':')
            # 清理单位并转数值
            if key == 'Humidity':
                humidity.append(float(value.replace('%', '')))
            elif key == 'Temperature':
                temperature.append(float(value.replace('°C', '').replace('°C', '')))
            elif key == 'Heat index':
                heat_index.append(float(value.replace('°C', '').replace('°C', '')))

这里处理了数据中多余的Â字符,确保数值能正确转换为浮点数。

3. 用Numpy存储数据并绘制曲线

将收集到的列表转换为Numpy数组,配合matplotlib绘制随时间变化的曲线:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

# 转换为Numpy数组
times_np = np.array(times)
humidity_np = np.array(humidity)
temperature_np = np.array(temperature)
heat_index_np = np.array(heat_index)

# 创建绘图
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制三条曲线
ax.plot(times_np, humidity_np, label='Humidity (%)', marker='o', linestyle='-')
ax.plot(times_np, temperature_np, label='Temperature (°C)', marker='s', linestyle='--')
ax.plot(times_np, heat_index_np, label='Heat index (°C)', marker='^', linestyle='-.')

# 设置时间轴格式
date_format = DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(date_format)
plt.xticks(rotation=45)

# 添加图表元素
ax.set_xlabel('Time')
ax.set_ylabel('Value')
ax.set_title('Sensor Data Over Time')
ax.legend()

plt.tight_layout()
plt.show()

这段代码直接使用时间对象绘图,Matplotlib会自动处理时间轴的显示逻辑,同时用不同样式区分三条曲线,提升可读性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:50:25