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

在Jupyter Notebook中,如何高亮matplotlib图中特定x值范围的子序列?

高亮Matplotlib时间序列中特定X范围的子序列方法

嗨,这个需求在时间序列可视化里太常用啦!结合你用numpy数组和Jupyter Notebook的场景,我给你分享两种实用的方法,直接就能上手:

方法1:用背景高亮标记范围(最简单)

如果只是想突出某个X区间的背景,用ax.axvspan()就够了,它能快速画出一个垂直的矩形区域,不会影响原曲线的显示。

完整代码示例

%matplotlib inline  # Jupyter Notebook里加这个让图表直接显示
import numpy as np
import matplotlib.pyplot as plt

# 生成模拟的时间序列数据(替换成你的numpy数组即可)
x = np.arange(0, 10, 0.1)  # X轴数据,比如时间戳
y = np.sin(x) + np.random.randn(len(x))*0.1  # Y轴数据

# 绘制原始时间序列
fig, ax = plt.subplots(figsize=(10, 4))
ax.plot(x, y, label='原始序列')

# 高亮X范围:比如x=3到x=7的区域
start_x = 3
end_x = 7
ax.axvspan(start_x, end_x, facecolor='yellow', alpha=0.3, label='高亮区间')

# 添加图例和标签
ax.set_xlabel('时间')
ax.set_ylabel('数值')
ax.legend()
plt.show()

参数说明

  • start_x/end_x:你要高亮的X范围的起始和结束值
  • facecolor:高亮区域的颜色,可替换为'red'、'green'等任意颜色值
  • alpha:透明度,0是完全透明,1是完全不透明,建议设为0.2-0.4之间,避免遮挡原曲线

方法2:单独绘制高亮的子序列(突出曲线本身)

如果想让这段子序列的曲线样式和原曲线不一样(比如更粗、颜色更鲜艳),可以先提取X范围内的子数组,再单独绘制。

完整代码示例

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# 同样用模拟数据(替换成你的真实数据)
x = np.arange(0, 10, 0.1)
y = np.sin(x) + np.random.randn(len(x))*0.1

# 绘制原始序列,可适当降低透明度突出高亮部分
fig, ax = plt.subplots(figsize=(10, 4))
ax.plot(x, y, label='原始序列', color='blue', alpha=0.6)

# 定义要高亮的X范围,提取对应的子序列
start_x = 3
end_x = 7
# 用布尔索引筛选出X范围内的数据点
mask = (x >= start_x) & (x <= end_x)
x_highlight = x[mask]
y_highlight = y[mask]

# 绘制高亮的子序列,设置差异化样式
ax.plot(x_highlight, y_highlight, label='高亮子序列', color='red', linewidth=3)

# 添加图例和标签
ax.set_xlabel('时间')
ax.set_ylabel('数值')
ax.legend()
plt.show()

自定义技巧

  • 可以给高亮曲线加标记点:比如加上marker='o'参数,让这段的数值点更显眼
  • 同时结合两种方法:既用axvspan高亮背景,又单独绘制加粗的曲线,视觉效果会更突出

内容的提问来源于stack exchange,提问作者Tín Tr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:05:57