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

如何在基于matplotlib的pandas时间序列图上绘制部分趋势线

解决方法

你只需要保证趋势线和原时间序列图共享同一个绘图Axes对象,且趋势线的x轴使用和原图一致的日期索引即可,具体实现步骤如下:

1. 前置依赖导入(若已导入可跳过)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

2. 先绘制原始时间序列图,保留绘图Axes对象

# 假设你的xdf是索引为datetime格式的pandas Series
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制原时间序列,和你之前的绘图逻辑保持一致即可
xdf.plot(ax=ax, label='原始数据')

3. 按你已经实现的逻辑计算线性回归参数

y = xdf.values
x = np.arange(len(y))
z = np.polyfit(x, y, 1)
p = np.poly1d(z)

4. 自定义趋势线展示区间,叠加绘制到原图上

# 自定义趋势线展示的起止位置(索引从0开始,可按需调整)
start_pos = 5
end_pos = len(xdf) - 1

# 生成对应区间的趋势线数值
trend_x_idx = np.arange(start_pos, end_pos + 1)
trend_y = p(trend_x_idx)
# 取对应区间的日期索引作为趋势线的x轴,保证和原图对齐
trend_x_date = xdf.index[start_pos:end_pos + 1]

# 叠加绘制趋势线
ax.plot(trend_x_date, trend_y, color='red', linestyle='--', label='趋势线')

# 添加图例展示
ax.legend()
plt.show()

原理说明

同一个matplotlib的Axes对象支持叠加绘制多组数据,只要两组数据的x轴坐标格式一致即可自动对齐。你之前单独绘制趋势线时使用的是序列序号作为x轴,和原时间序列的日期x轴格式不匹配,统一为日期格式后即可正常叠加。调整start_pos和end_pos的数值即可修改趋势线的展示范围。


内容的提问来源于stack exchange,提问作者yunfei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:27:03