求助:使用Matplotlib将CSV时序数据与Excel泄漏日期同图绘制
解决方案
1. 先装必要依赖(未安装的话)
执行命令安装所需库:
pip install pandas matplotlib openpyxl
2. 完整实现代码
import pandas as pd import matplotlib.pyplot as plt # 1. 加载并预处理数据 # 读取CSV传感器时序数据,替换成你的文件名,确保日期列名正确 df_sensor = pd.read_csv('传感器数据.csv', parse_dates=['日期'], index_col='日期') # 读取Excel泄漏日期数据,替换成你的文件名,日期列名对应调整 df_leak = pd.read_excel('泄漏日期记录.xlsx', parse_dates=['泄漏日期']) leak_dates = df_leak['泄漏日期'].tolist() # 2. 绘制图表 fig, ax = plt.subplots(figsize=(12, 6)) # 画传感器时序折线图 df_sensor.plot(ax=ax, rot=45, title='传感器数据与泄漏点标记') # 逐个标记泄漏日期:红色虚线+顶部标注 for date in leak_dates: ax.axvline(x=date, color='red', linestyle='--', alpha=0.7) ax.text(date, ax.get_ylim()[1], '泄漏', ha='center', va='top', color='red', fontsize=10) # 设置轴标签 ax.set_xlabel('日期') ax.set_ylabel('传感器数值') # 自动调整布局,避免日期标签挤在一起 plt.tight_layout() plt.show()
关键注意点
- 日期解析必须正确:CSV和Excel里的日期列一定要用
parse_dates参数解析成datetime类型,否则时间轴对不上,标记会错位。如果你的日期列名不是日期/泄漏日期,要对应修改代码里的列名。 - 时间精度对齐:如果传感器数据带时分秒,而泄漏日期只有日期,就把两者都转成日期格式:
# 传感器索引转成日期 df_sensor.index = df_sensor.index.date # 泄漏日期转成日期 df_leak['泄漏日期'] = df_leak['泄漏日期'].dt.date leak_dates = df_leak['泄漏日期'].tolist() - 样式自定义:可以改虚线颜色(比如
color='orange')、线型(比如linestyle=':'),或者把标注放在其他位置,根据你的需求调整。
内容的提问来源于stack exchange,提问作者SSM
相关产品推荐
相关产品推荐

