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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:13:16