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爬虫实战之最简单的网页爬虫教程
Aug 13 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
python实现基于SVM手写数字识别功能
May 27 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Pandas中resample方法详解
Jul 02 Python
Django MEDIA的配置及用法详解
Jul 25 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
Python中使用gflags实例及原理解析
Dec 13 Python
Python实现生成bmp图像的方法
Jun 13 Python
python解析json数据
Apr 29 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
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
python实现复制整个目录的方法
2015/05/12 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python list转矩阵的实例讲解
2018/08/04 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
如何在django中实现分页功能
2020/04/22 Python
构建高效的python requests长连接池详解
2020/05/02 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
小学毕业感言100字
2015/07/30 职场文书
朋友离别感言
2015/08/04 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
HTML常用标签超详细整理
2022/03/19 HTML / CSS
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL