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操作MongoDB基础知识
Nov 01 Python
Python自动化测试工具Splinter简介和使用实例
May 13 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
Python ORM框架Peewee用法详解
Apr 29 Python
python小程序之飘落的银杏
Apr 17 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 Python
Python基于Opencv识别两张相似图片
Apr 25 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
innerText 使用示例
2014/01/23 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
webpack打包js的方法
2018/03/12 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
幼儿园教师教学反思
2014/02/06 职场文书
初中教师业务学习材料
2014/05/12 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
不同意离婚答辩状
2015/05/22 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
Pygame Event事件模块的详细示例
2021/11/17 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python