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

如何用Python从含多表格的CSV生成红外传感器读数热图

解决红外传感器CSV数据转热图的问题

问题根源

你遇到的错误是因为CSV文件的每行数据是一整个包含多个数值的字符串(比如错误信息里的长串),csv.reader没有正确拆分出单个数值,导致数组里的元素都是字符串类型,无法直接转成float。另外每行末尾还有多余的逗号,也会干扰转换。

解决方案步骤

1. 正确解析CSV数据

读取文件后,对每行数据做以下处理:

  • 去除行尾的逗号和空白字符
  • 按逗号分割成单个数值字符串
  • 将每个字符串转换为float类型

2. 分组处理15组数据

CSV里每24行对应一组24×32的传感器数据,所以按24行一组拆分所有数据。

3. 绘制每组的热图

用matplotlib的imshow绘制热图,每组生成独立的可视化窗口或保存为文件。

完整代码示例

import numpy as np
import matplotlib.pyplot as plt

# 读取并处理CSV数据
all_data = []
with open("serial_data.csv", "r") as file:
    # 跳过前2行(假设前2行是表头或无关数据)
    for _ in range(2):
        next(file)
    # 读取后续所有行
    for line in file:
        # 去除行尾的换行符、逗号和多余空格
        cleaned_line = line.strip().rstrip(',')
        # 按逗号分割成单个数值字符串,转成float
        row = [float(num.strip()) for num in cleaned_line.split(',')]
        all_data.append(row)

# 转换为numpy数组,确保每行是32个数值
all_array = np.array(all_data)
# 按每组24行拆分,得到15组24×32的数组
groups = np.array_split(all_array, 15)

# 为每组绘制热图
for idx, group in enumerate(groups, 1):
    plt.figure(figsize=(10, 6))
    # 绘制热图,添加颜色条
    im = plt.imshow(group, cmap='inferno', aspect='auto')
    plt.colorbar(im, label='温度值')
    plt.title(f"第{idx}组传感器热图")
    plt.xlabel("列(32个传感器)")
    plt.ylabel("行(24个传感器)")
    # 可以选择保存图片,或者显示
    plt.savefig(f"heatmap_group_{idx}.png", dpi=100)
    plt.show()

代码说明

  • strip()和rstrip(','):清理每行末尾的多余逗号和空白,避免分割出空字符串
  • np.array_split(all_array, 15):自动将总数据拆分为15个等份(总数据行数应为15×24=360行)
  • cmap='inferno':选择适合热图的颜色映射,你也可以换成'viridis'、'plasma'等其他配色
  • 保存图片的代码可以根据需要开启,避免手动截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:13:27