如何在Matplotlib绘制的时序图中标记指定已知日期?
在Matplotlib时序图中标记特定日期
两种实现方案
1. 竖线标记单个日期
用竖线标注单个目标日期,直接调用plt.axvline(),传入目标datetime对象即可,还能自定义样式。
2. 高亮日期区间
如果要实现高亮X轴范围的效果,用plt.axvspan()传入区间的起始和结束日期,设置半透明背景来突出区间。
修改后的完整代码
假设你要标记的单个日期是2023-05-01,同时高亮2023-06-01到2023-06-15的区间,把以下代码整合到你的绘图逻辑中即可:
import matplotlib.pyplot as plt import numpy as np from datetime import datetime # 你的原有绘图代码 plt.figure() plt.title(station[k]+' phase') plt.plot(time_vector_datetime, phase1, '--',label='CW1') plt.plot(time_vector_datetime, phase2, '-.',label='CW2') plt.grid() plt.xlabel('Time ') plt.ylabel('Phase [rad]') plt.legend() plt.gca().xaxis.set_major_formatter(myFmt) plt.annotate('Max: {:.2f}\nMin: {:.2f}'.format(phase1_max, phase1_min), xy=(0.05, 0.95), xycoords='axes fraction', ha='left', va='top') plt.axhline(y=phase1_max, color='r', linestyle='--', linewidth=0.5) plt.axhline(y=phase1_min, color='r', linestyle='--', linewidth=0.5) plt.plot(time_vector_datetime[1:], np.diff(phase1), color='g', linewidth=0.5) # 添加日期标记和高亮 # 单个日期标记:红色实线 target_date = datetime(2023, 5, 1) plt.axvline(x=target_date, color='red', linewidth=1.0, linestyle='-', label='Target Date') # 日期区间高亮:淡蓝色半透明背景 start_range = datetime(2023, 6, 1) end_range = datetime(2023, 6, 15) plt.axvspan(start_range, end_range, color='lightblue', alpha=0.3, label='Highlighted Period') # 更新图例 plt.legend() plt.show()
关键提示
- 确保你传入的日期是
datetime类型,和你的time_vector_datetime格式一致,否则会出现坐标不匹配的问题。 - 可以调整
color、alpha(透明度)、linestyle、linewidth等参数,自定义标记样式,适配你的图表风格。
内容的提问来源于stack exchange,提问作者Minetendo
相关产品推荐
相关产品推荐

