如何用Matplotlib将DataFrame的LOC列作为标注添加到时间序列图?
实现带LOC文本标注的时间序列图
以下是具体实现步骤和代码示例:
1. 数据预处理
首先需要将DATE列转换为Pandas的datetime类型,确保Matplotlib能正确识别时间轴:
import pandas as pd import matplotlib.pyplot as plt # 构造示例数据(已有DataFrame可直接使用) data = { 'DATE': ['2018-02-24', '2020-06-01', '2021-07-25', '2022-09-16', '2023-11-08'], 'LOC': ['ANA#1', 'ANH#2', 'ANO#1', 'ANS#2', 'ANM#1'], 'Y_DATA': [12, 25, 18, 30, 22] # 模拟Y轴数据,替换为你的实际数据 } df = pd.DataFrame(data) # 转换DATE列为datetime类型 df['DATE'] = pd.to_datetime(df['DATE'])
2. 绘制基础时间序列图
以DATE为X轴,目标数据为Y轴绘制折线图:
plt.figure(figsize=(10, 6)) plt.plot(df['DATE'], df['Y_DATA'], marker='o', linestyle='-', color='b') plt.xlabel('日期') plt.ylabel('Y轴数据') plt.title('带LOC标注的时间序列图') plt.grid(True)
3. 添加LOC文本标注
遍历DataFrame的每一行,用plt.annotate()将LOC内容标注到对应日期和Y值的位置:
# 遍历添加标注 for idx, row in df.iterrows(): # xy指定标注坐标,xytext设置文本偏移避免遮挡数据点 plt.annotate( row['LOC'], xy=(row['DATE'], row['Y_DATA']), xytext=(5, 5), # 文本相对于数据点的偏移(右5,上5) textcoords='offset points', fontsize=10, color='darkred' ) # 自动调整X轴日期标签格式,避免重叠 plt.gcf().autofmt_xdate() plt.show()
关键说明
xytext参数可根据实际情况调整偏移量,防止标注和数据点、其他标注重叠;- 若Y轴数据范围较大,也可将标注固定在Y轴最大值上方,只需修改
xy的Y值即可; autofmt_xdate()用于自动旋转X轴日期标签,提升可读性。
内容的提问来源于stack exchange,提问作者Brom
相关产品推荐
相关产品推荐

