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 提取文件的小程序
Jul 29 Python
详解Python中的文本处理
Apr 11 Python
使用Python脚本将绝对url替换为相对url的教程
Apr 24 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
python圣诞树编写实例详解
Feb 13 Python
python输出pdf文档的实例
Feb 13 Python
python开发前景如何
Jun 11 Python
详解python程序中的多任务
Sep 16 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python字典简介以及用法详解
2016/11/15 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python的垃圾回收机制详解
2019/08/28 Python
python序列化与数据持久化实例详解
2019/12/20 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
python切割图片的示例
2020/11/12 Python
美国购车网站:TrueCar
2016/10/19 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
应届生保险求职信
2013/11/11 职场文书
英语专业推荐信
2013/11/16 职场文书
宣传活动总结范文
2014/07/01 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
预备党员个人总结
2015/02/14 职场文书
奔腾年代观后感
2015/06/09 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js