一周学会Matplotlib3 Python 数据可视化-绘制自相关图

锋哥原创的Matplotlib3 Python数据可视化视频教程:

2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

课程介绍

本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。

绘制自相关图

自相关图(Autocorrelation Plot)是时间序列分析中重要的可视化工具,用于展示时间序列与其自身滞后版本之间的相关性。它有助于识别数据中的季节性、周期性和随机性模式。

自相关图基本概念

  • 自相关系数:衡量时间序列与其滞后版本之间相关性的指标

  • 滞后值 (Lag):时间序列向后移动的时间单位数

  • 置信区间:表示自相关系数是否显著区别于零的统计边界

Matplotlib3 绘制自相关图需要用到statsmodels库。

statsmodels‌ 是一个专注于统计建模与计量经济分析的Python库,提供线性回归、时间序列分析、广义线性模型、假设检验等核心功能,强调模型的统计解释性(如p值、置信区间)。

复制代码
pip install statsmodels -i https://pypi.tuna.tsinghua.edu.cn/simple

plot_acf()statsmodels 库中用于绘制时间序列**自相关函数(ACF)**的核心工具,广泛应用于时间序列分析(如ARIMA建模、白噪声检验、随机游走识别等)。以下是其参数的详细解析及示例说明:

复制代码
statsmodels.graphics.tsaplots.plot_acf(
    x, 
    ax=None, 
    lags=None, 
    alpha=0.05, 
    use_vlines=True, 
    unbiased=False, 
    fft=False, 
    title='Autocorrelation', 
    zero=True, 
    vlines_kwargs=None, 
    **kwargs
)

参数详解表

参数 类型 默认值 说明 注意事项
x array_like - 时间序列数据(一维数组) 必需参数,不支持含NaN的序列 24
lags int 或 array_like None(自动取len(x) 指定计算的滞后阶数 若为整数,生成np.arange(lags);若为数组,直接使用指定滞后点 26
alpha float 0.05 置信区间的显著性水平 设为None则不显示置信区间;alpha=0.05 表示95%置信区间 12
use_vlines bool True 是否用垂直线+标记绘制ACF 若为False,仅绘制标记(如圆点)27
unbiased bool False 自协方差计算方式 True:分母用n-k(无偏估计);False:分母用n(有偏估计)25
fft bool False 是否用FFT算法计算ACF 对长序列加速计算,但可能牺牲精度 2
title str 'Autocorrelation' 图表标题 支持自定义标题文本 27
zero bool `True`` 是否包含0阶滞后(恒为1) 通常保留,体现序列与自身的完全相关 24
ax Matplotlib Axes None 指定绘图的Axes对象 用于多子图布局,不指定则创建新画布 27
vlines_kwargs dict None 垂直线样式参数 {"color": "red", "linewidth": 0.8} 2
**kwargs - - 传递给matplotlib.plot()的样式参数 co

我们来看一个示例:

复制代码
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf

# 生成示例时间序列数据
np.random.seed(42)
n = 200  # 数据点数量

# 创建具有季节性的时间序列
seasonal = np.sin(np.linspace(0, 10 * np.pi, n))
trend = np.linspace(0, 5, n)
noise = np.random.normal(0, 0.5, n)
data = trend + seasonal + noise

# 创建图形
plt.figure(figsize=(12, 8), dpi=100)

# 绘制时间序列
plt.subplot(2, 1, 1)
plt.plot(data, color='royalblue', linewidth=2)
plt.title('原始时间序列', fontsize=14)
plt.xlabel('时间点', fontsize=12)
plt.ylabel('值', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)

# 绘制自相关图
plt.subplot(2, 1, 2)
plot_acf(data, lags=40, alpha=0.05, color='darkgreen',
         title='自相关图 (ACF)', ax=plt.gca(),
         vlines_kwargs={'colors': 'darkgreen'})
plt.xlabel('滞后阶数 (Lags)', fontsize=12)
plt.ylabel('自相关系数', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.ylim(-1.1, 1.1)

plt.tight_layout()
plt.show()
相关推荐
吧啦蹦吧2 分钟前
java.lang.Class#isAssignableFrom(Class<?> cls)
java·开发语言
海上飞猪4 分钟前
【Python基础】python判空
python
都是蠢货9 分钟前
drop delete和truncate的区别?
java·开发语言
搬砖的kk21 分钟前
Lycium++ - OpenHarmony PC C/C++ 增强编译框架
c语言·开发语言·c++
梦幻精灵_cq32 分钟前
Linux.date格式化标识“制作”极简台历 vs Python.datetime.strftime格式化“精美”日历牌(时间工具依情境选择也是一种“智慧)
linux·python
ASS-ASH1 小时前
视觉语言大模型Qwen3-VL-8B-Instruct概述
人工智能·python·llm·多模态·qwen·视觉语言模型·vlm
再__努力1点1 小时前
【77】积分图像:快速计算矩形区域和核心逻辑
开发语言·图像处理·人工智能·python·算法·计算机视觉
matlabgoodboy1 小时前
程序代做python代编程matlab代码设计plc深度学习java编写C++代写
python·深度学习·matlab
Evand J1 小时前
【2026课题推荐】基于小波/互相关/FFT的卡尔曼滤波的轨迹估计,及MATLAB例程的运行结果
开发语言·matlab·目标跟踪·轨迹跟踪
独自归家的兔1 小时前
Java Robot 详解:系统级鼠标 / 键盘模拟的核心原理与实战
java·开发语言