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引用模块和查找模块路径
Mar 17 Python
python实现数据写入excel表格
Mar 25 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
详解Python做一个名片管理系统
Mar 14 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
PyQT5 emit 和 connect的用法详解
Dec 13 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python如何合并多个字典或映射
Jul 24 Python
Autopep8的使用(python自动编排工具)
Mar 02 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获取linux服务器状态的代码
2014/05/27 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
document.compatMode介绍
2009/05/21 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
毕业生的自我评价
2013/12/30 职场文书
应聘英语教师求职信
2014/04/24 职场文书
销售团队口号大全
2014/06/06 职场文书
个人授权委托书样本
2014/09/13 职场文书