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 21 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
python实现猜拳游戏
Mar 04 Python
学python最电脑配置有要求么
Jul 05 Python
python爬虫筛选工作实例讲解
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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP闭包函数详解
2016/02/13 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
python使用any判断一个对象是否为空的方法
2014/11/19 Python
python实现RSA加密(解密)算法
2016/02/17 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
学生拾金不昧表扬信
2014/01/21 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
教师节活动主持词
2014/04/02 职场文书
个人务虚会发言材料
2014/10/20 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers