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 11 Python
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
django模板语法学习之include示例详解
Dec 17 Python
python负载均衡的简单实现方法
Feb 04 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python调试神器PySnooper的使用
Jul 03 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 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
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python中的引用知识点总结
2019/05/20 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
化妆品店促销方案
2014/02/24 职场文书
投标授权委托书范文
2014/08/02 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
股份转让协议书范本
2015/01/27 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
python 中的@运算符使用
2021/05/26 Python
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
教你一步步实现一个简易promise
2021/11/02 Javascript