python利用插值法对折线进行平滑曲线处理


Posted in Python onDecember 25, 2018

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

实现所需的库

numpy、scipy、matplotlib

插值法实现

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

拟合和插值的区别

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

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

代码实现

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轴值,表示从0到10间距为0.5的200个数
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()

python利用插值法对折线进行平滑曲线处理

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

注意事项

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的彩票机选器实例
Jun 17 Python
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
Python变量和字符串详解
Apr 29 Python
python实现用户管理系统
Jan 10 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
python用post访问restful服务接口的方法
Dec 07 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
python爬取youtube视频的示例代码
Mar 03 Python
基于Python对数据shape的常见操作详解
Dec 25 #Python
Python正则匹配判断手机号是否合法的方法
Dec 09 #Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 #Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 #Python
Python lambda表达式用法实例分析
Dec 25 #Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 #Python
浅谈python 读excel数值为浮点型的问题
Dec 25 #Python
You might like
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
jQuery对象初始化的传参方式
2015/02/26 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
小加工厂管理制度
2014/01/21 职场文书
公务员综合考察材料
2014/02/01 职场文书
金融管理应届生求职信
2014/02/20 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
学校计划生育责任书
2015/05/09 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
诉讼和解协议书
2016/03/23 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
利用js实现简单开关灯代码
2021/11/23 Javascript
DE1107机评
2022/04/05 无线电