iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何对折线进行平滑曲线处理?
  • 789
分享到

Python如何对折线进行平滑曲线处理?

折线平滑曲线 2023-01-31 02:01:18 789人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在用python绘图的时候,经常由于数据的原因导致画出来的图折线分界过于明显,因此需要对原数据绘制的折线进行平滑处理,本文介绍利用插值法进行平滑曲线处理: 实现所需的库 numpy、scipy、matplotlib 插值法实现

在用python绘图的时候,经常由于数据的原因导致画出来的图折线分界过于明显,因此需要对原数据绘制的折线进行平滑处理,本文介绍利用插值法进行平滑曲线处理:

实现所需的库

numpy、scipy、matplotlib

插值法实现

nearest:最邻近插值法 zero:阶梯插值 slinear:线性插值 quadratic、cubic:2、3阶B样条曲线插值

拟合和插值的区别

插值:简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点。

拟合:拟合是通过原有数据,调整曲线系数,使得曲线与已知点集的差别(最小二乘)最小,最后生成的曲线不一定经过原有点。

代码实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
 
#设置距离
x =np.array([0, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 70, 8, 9,10])
 
#设置相似度
y =np.array([0.8579087793827057, 0.8079087793827057, 0.7679087793827057, 0.679087793827057,
    0.5579087793827057, 0.4579087793827057, 0.3079087793827057, 0.3009087793827057,
    0.2579087793827057, 0.2009087793827057, 0.1999087793827057, 0.1579087793827057,
    0.0099087793827057, 0.0079087793827057, 0.0069087793827057, 0.0019087793827057,
    0.0000087793827057])
 
#插值法之后的x轴值,表示从010间距为0.5200个数
xnew =np.arange(0,10,0.1)
 
#实现函数
func = interpolate.interp1d(x,y,kind='cubic')
 
#利用xnew和func函数生成ynew,xnew数量等于ynew数量
ynew = func(xnew)
 
# 原始折线
plt.plot(x, y, "r", linewidth=1)
 
#平滑处理后曲线
plt.plot(xnew,ynew)
#设置x,y轴代表意思
plt.xlabel("The distance between POI  and user(km)")
plt.ylabel("probability")
#设置标题
plt.title("The content similarity of different distance")
#设置x,y轴的坐标范围
plt.xlim(0,10,8)
plt.ylim(0,1)
 
plt.show()

绘制后的曲线,红色是未进行平滑处理的折线,蓝色是进行平滑处理之后的曲线 cpc30

注意事项

x, y为原来的数据(少量) xnew为一个数组,条件:x??xnew

如:x的最小值为-2.931,最大值为10.312;则xnew的左边界要小于-2.931,右边界要大于10.312。当然也最好注意一下间距,最好小于x中的精度 func为函数,里面的参数x、y、kind,x,y就是原数据的x,y,kind为需要指定的方法 ynew需要通过xnew数组和func函数来生成,理论上xnew数组内的值越多,生成的曲线越平滑

--结束END--

本文标题: Python如何对折线进行平滑曲线处理?

本文链接: https://www.lsjlt.com/news/186628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何对折线进行平滑曲线处理?
    在用python绘图的时候,经常由于数据的原因导致画出来的图折线分界过于明显,因此需要对原数据绘制的折线进行平滑处理,本文介绍利用插值法进行平滑曲线处理: 实现所需的库 numpy、scipy、matplotlib 插值法实现 ...
    99+
    2023-01-31
    折线 平滑 曲线
  • 基于canvas如何使用贝塞尔曲线平滑拟合折线段
    小编给大家分享一下基于canvas如何使用贝塞尔曲线平滑拟合折线段,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!为什么要平滑拟合折线段先来看下Echarts下折线图的渲染效果: 一开始我没注意到其实这个折线段是曲...
    99+
    2023-06-09
  • python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解
    文章目录 1 基于Numpy.convolve实现滑动平均滤波1.1 滑动平均概念1.2 滑动平均的数学原理1.3 语法1.4 滑动平均滤波示例 2 曲线平滑处理——Savitzky-Go...
    99+
    2023-09-18
    Numpy.convolve convolve滑动平均滤波 曲线平滑滤波 numpy python
  • 如何利用Javascript生成平滑曲线详解
    目录前言贝塞尔曲线简介二次贝塞尔曲线三次贝塞尔曲线贝塞尔曲线计算函数拟合算法附录:Vector2D相关的代码总结前言 平滑曲线生成是一个很实用的技术 很多时候,我们都需要通过绘制一...
    99+
    2024-04-02
  • python 曲线平滑处理——方法总结(Savitzky-Golay 滤波器、make_interp_spline插值法和convolve滑动平均滤波)
    文章目录 1 插值法对曲线平滑处理1.1 插值法的常见实现方法1.2 拟合和插值的区别1.3 代码实例 2 Savitzky-Golay 滤波器实现曲线平滑2.1 问题描述2.2 Savi...
    99+
    2023-09-10
    matplotlib 曲线平滑处理 Savitzky-Golay 插值法 convolve滑动平均滤波
  • 批处理BAT如何实现正弦曲线和抛物线
    这篇文章主要为大家展示了“批处理BAT如何实现正弦曲线和抛物线”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理BAT如何实现正弦曲线和抛物线”这篇文章吧。先奉上正弦曲线的:@echo&nbs...
    99+
    2023-06-08
  • OpenGL 实践中如何进行贝塞尔曲线绘制
    这篇文章给大家介绍OpenGL 实践中如何进行贝塞尔曲线绘制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图...
    99+
    2023-06-04
  • 如何进行Python线程的多线程展示
    如何进行Python线程的多线程展示,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么多线程?多线程,就是多个独立的运行单位,同时执行同样的事情。想想一下,文章发布后同时被...
    99+
    2023-06-22
  • 如何在Oracle中使用like查询对下划线进行处理
    如何在Oracle中使用like查询对下划线进行处理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原因分析下划线“_”在oracle中不是单纯的表示下划线的意思,而是表示匹...
    99+
    2023-06-14
  • Node.js如何使用worker_threads多线程进行并行处理
    这篇文章给大家分享的是有关Node.js如何使用worker_threads多线程进行并行处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。很多人似乎都无法理解单线程 NodeJ...
    99+
    2024-04-02
  • python中如何对信号进行处理
    这篇文章主要介绍了python中如何对信号进行处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是信号信号(signal)-- 进程间通讯的一种方式,也可作为一种软件中断...
    99+
    2023-06-20
  • 怎么对java多线程数据进行分页处理
    怎么对java多线程数据进行分页处理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是...
    99+
    2023-06-14
  • 在Java子线程中怎么对异常进行处理
    这篇文章给大家介绍在Java子线程中怎么对异常进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。常见错误也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的。...
    99+
    2023-05-31
    java 子线程 ava
  • python如何对日期时间进行处理
    这篇文章给大家分享的是有关python如何对日期时间进行处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发中常用的日期操作有哪些?获取当前时间获取系统秒数(从纪元时间开始)日期跟秒数之间转换获取日历等日期格式...
    99+
    2023-06-22
  • 如何理解Python进程、线程、协程
    本篇内容介绍了“如何理解Python进程、线程、协程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是进...
    99+
    2024-04-02
  • webpack如何对样式进行处理
    这篇文章主要介绍了webpack如何对样式进行处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:我们可以在js中引入样式文件req...
    99+
    2024-04-02
  • 如何进行处理Python对象参数的解析
    这期内容当中小编将会给大家带来有关如何进行处理Python对象参数的解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Python对象中使用C语言编写的扩展模块,必须将其编译成动态链接库的形式,通常使用...
    99+
    2023-06-17
  • 如何通过实现ThreadFactory来对线程进行命名
    这篇文章主要介绍如何通过实现ThreadFactory来对线程进行命名,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文记录@Async的基本使用以及通过实现ThreadFactory来实现对线程的命名。@Async...
    99+
    2023-06-15
  • 如何进行Python列表处理
    如何进行Python列表处理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。0、切片操作。同字符串切片操作,这里不多做解释获取列表长度:len实例:list=[&...
    99+
    2023-06-02
  • 如何在java中对json进行处理
    这篇文章主要介绍了如何在java中对json进行处理,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,...
    99+
    2023-05-30
    java json
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作