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

Python:如何在同一时间戳下绘制多传感器多指标对比图

传感器数据并列柱状图绘制修正方案

问题背景

现有传感器数据CSV包含时间戳、传感器ID(2、3)、指标类型(Con、Temp、hum)及对应数值,需求为在同一时间戳下,为两个传感器的3类指标共6个数据绘制不同颜色的并列柱状图,但当前代码无法实现该效果。

数据示例

29-03-2023 18:08,2,Con,0
29-03-2023 18:08,2,Temp,27.2
29-03-2023 18:08,2,hum,44.4
29-03-2023 18:08,2,Con,0
29-03-2023 18:08,2,Temp,27.2
29-03-2023 18:08,2,hum,44.3
29-03-2023 18:08,2,Con,0
29-03-2023 18:08,2,Temp,27.2
29-03-2023 18:08,2,hum,44.4
29-03-2023 18:09,2,Con,0
29-03-2023 18:09,2,Temp,27.2
29-03-2023 18:09,2,hum,44.4
29-03-2023 18:09,3,Con,0
29-03-2023 18:09,3,Temp,27.2
29-03-2023 18:09,3,hum,44.4

当前代码问题分析

  • 分组逻辑冗余,多次重复分组和去重导致数据处理混乱
  • pivot用法错误,未将传感器ID与指标类型组合作为列标识,无法区分同一时间戳下不同传感器的相同指标
  • 错误启用stacked=True,不符合并列柱状图的需求
  • X轴标签设置错误,会导致时间戳重复显示

修正后代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据并设置列名
df = pd.read_csv('sensor_data_1.csv', header=None, names=['timestamp', 'sensor_id', 'metric', 'value'])
# 去重:保留每个时间戳-传感器ID-指标的唯一数据
dfe = df.drop_duplicates(subset=['timestamp', 'sensor_id', 'metric'])

# 合并传感器ID和指标类型,生成唯一的系列名称
dfe['series_name'] = dfe.apply(lambda row: f"Sensor {row['sensor_id']}-{row['metric']}", axis=1)

# 转换数据格式:时间戳为索引,系列名称为列,数值为值
df_plot = dfe.pivot(index='timestamp', columns='series_name', values='value')

# 绘制并列柱状图
ax = df_plot.plot(kind='bar', stacked=False, figsize=(10, 6))
# 设置X轴标签旋转角度,避免重叠
ax.set_xticklabels(df_plot.index, rotation=45, ha='right')
# 添加标题和轴标签
ax.set_title('Sensor Metrics by Timestamp')
ax.set_xlabel('Timestamp')
ax.set_ylabel('Metric Value')
# 显示图例
plt.legend(title='Sensor-Metric', bbox_to_anchor=(1.05, 1), loc='upper left')
# 调整布局防止标签被截断
plt.tight_layout()
plt.show()

核心修正点

  1. 规范列命名:为DataFrame设置明确列名,避免用索引操作带来的混乱
  2. 精准去重:基于时间戳、传感器ID、指标类型三个维度去重,保留有效数据
  3. 唯一系列标识:将传感器ID和指标类型合并为新列,确保每个数据系列唯一可区分
  4. 正确数据透视:使用pivot将数据转换为"时间戳为行,系列为列"的格式,适配柱状图绘制
  5. 图表样式优化:关闭堆叠模式,调整X轴标签角度、图例位置,优化图表可读性

内容的提问来源于stack exchange,提问作者Sukumar.M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:53:28