如何格式化数据以绘制按SerialNumber分组的带标记折线散点图
解决方案
1. 数据结构要求
你的原始数据需要整理为长表结构,仅保留3个核心字段即可:
- StartTime:建议转成datetime时间类型,避免X轴排序错乱
- AvgValue:数值类型,对应Y轴取值
- SerialNumber:分组标签,用于区分不同折线和图例项
参考结构化数据样例:
| StartTime | AvgValue | SerialNumber |
|---|---|---|
| 2024-01-01 08:00:00 | 12.3 | SN001 |
| 2024-01-01 09:00:00 | 15.6 | SN001 |
| 2024-01-01 08:00:00 | 9.2 | SN002 |
2. 代码实现(Python+pandas+seaborn)
首先安装所需依赖:pip install pandas matplotlib seaborn
参考运行代码:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取数据,替换为你自己的数据源路径,支持csv/xlsx等格式 df = pd.read_excel("你的数据文件路径.xlsx") # 转换StartTime为时间类型 df["StartTime"] = pd.to_datetime(df["StartTime"]) # 设置画布尺寸 plt.figure(figsize=(12, 6)) # 绘制带标记的分组折线图 sns.lineplot( data=df, x="StartTime", y="AvgValue", hue="SerialNumber", # 按SerialNumber分组分配不同颜色 marker="o", # 散点标记样式 linewidth=2, markersize=6 ) # 图表格式优化 plt.xticks(rotation=45) # X轴标签旋转避免重叠 plt.xlabel("开始时间") plt.ylabel("平均值") plt.title("各序列号对应平均值随时间变化趋势") plt.legend(title="序列号") plt.tight_layout() # 调整布局避免标签截断 plt.show()
3. Excel无代码实现方案
如果不想编写代码,用Excel也可以直接生成目标图表:
- 选中整理好的三列数据(StartTime、AvgValue、SerialNumber)
- 点击「插入」选项卡,选择「带数据标记的折线图」
- 右键图表选择「选择数据」,在「图例项(系列)」中点击「添加」,每个系列对应一个SerialNumber的所有AvgValue,水平轴标签选择对应的StartTime列即可
- 可手动调整每个系列的颜色、标记样式,自动生成对应图例
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

