python3对折线图进行平滑处理【matplotlib】【插值法】

Background

  • Matplotlib 是Python中类似 MATLAB 的绘图工具,画图非常方便。
  • 平滑滤波是光谱分析中常用的预处理方法之一,处理的方法有很多,这里我们使用make_interp_spline插值法对折线图进行平滑处理。
  • 官方帮助文档:scipy.interpolate.make_interp_spline

处理前的图

在这里插入图片描述

处理后的图

在这里插入图片描述

源码示例

import numpy as np
from matplotlib import pyplot as plt
from scipy.interpolate import make_interp_spline


def smooth_xy(lx, ly):
    """数据平滑处理

    :param lx: x轴数据,数组
    :param ly: y轴数据,数组
    :return: 平滑后的x、y轴数据,数组 [slx, sly]
    """
    x = np.array(lx)
    y = np.array(ly)
    x_smooth = np.linspace(x.min(), x.max(), 300)
    y_smooth = make_interp_spline(x, y)(x_smooth)
    return [x_smooth, y_smooth]


if __name__ == '__main__':
    x_raw = [6, 7, 8, 9, 10, 11, 12]
    y_raw = [1.53, 5.92, 2.04, 7.24, 2.72, 1.10, 4.70]
    xy_s = smooth_xy(x_raw, y_raw)

    # 原始折线图
    plt.plot(x_raw, y_raw)
    plt.show()

    # 处理后的平滑曲线
    plt.plot(xy_s[0], xy_s[1])
    plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WaiSaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值