Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】


Posted in Python onDecember 26, 2018

本文实例讲述了Python图像处理之直线和曲线的拟合与绘制。分享给大家供大家参考,具体如下:

在数据处理和绘图中,我们通常会遇到直线或曲线的拟合问题,python中scipy模块的子模块optimize中提供了一个专门用于曲线拟合的函数curve_fit()

下面通过示例来说明一下如何使用curve_fit()进行直线和曲线的拟合与绘制。

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#直线方程函数
def f_1(x, A, B):
  return A*x + B
#二次曲线方程
def f_2(x, A, B, C):
  return A*x*x + B*x + C
#三次曲线方程
def f_3(x, A, B, C, D):
  return A*x*x*x + B*x*x + C*x + D
def plot_test():
  plt.figure()
  #拟合点
  x0 = [1, 2, 3, 4, 5]
  y0 = [1, 3, 8, 18, 36]
  #绘制散点
  plt.scatter(x0[:], y0[:], 25, "red")
  #直线拟合与绘制
  A1, B1 = optimize.curve_fit(f_1, x0, y0)[0]
  x1 = np.arange(0, 6, 0.01)
  y1 = A1*x1 + B1
  plt.plot(x1, y1, "blue")
  #二次曲线拟合与绘制
  A2, B2, C2 = optimize.curve_fit(f_2, x0, y0)[0]
  x2 = np.arange(0, 6, 0.01)
  y2 = A2*x2*x2 + B2*x2 + C2
  plt.plot(x2, y2, "green")
  #三次曲线拟合与绘制
  A3, B3, C3, D3= optimize.curve_fit(f_3, x0, y0)[0]
  x3 = np.arange(0, 6, 0.01)
  y3 = A3*x3*x3*x3 + B3*x3*x3 + C3*x3 + D3
  plt.plot(x3, y3, "purple")
  plt.title("3water.com test")
  plt.xlabel('x')
  plt.ylabel('y')
  plt.show()
  return
plot_test()

拟合和绘制解果如下:

Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】

当然,curve_fit()函数不仅可以用于直线、二次曲线、三次曲线的拟合和绘制,仿照代码中的形式,可以适用于任意形式的曲线的拟合和绘制,只要定义好合适的曲线方程即可。

如高斯曲线拟合,曲线函数形式如下:

def f_gauss(x, A, B, C, sigma):
  return A*np.exp(-(x-B)**2/(2*sigma**2)) + C
Python 相关文章推荐
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python实现带百分比的进度条
Jun 28 Python
python中执行shell的两种方法总结
Jan 10 Python
Python实现注册登录系统
Aug 08 Python
微信跳一跳自动运行python脚本
Jan 08 Python
selenium+python实现自动化登录的方法
Sep 04 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
python用700行代码实现http客户端
Jan 14 Python
python处理multipart/form-data的请求方法
Dec 26 #Python
Python实现的简单线性回归算法实例分析
Dec 26 #Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 #Python
python使用knn实现特征向量分类
Dec 26 #Python
python调用staf自动化框架的方法
Dec 26 #Python
Django unittest 设置跳过某些case的方法
Dec 26 #Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 #Python
You might like
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
vue 组件简介
2020/07/31 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python去除字符串中的换行符
2017/10/11 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
《都江堰》教学反思
2014/02/07 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
上甘岭观后感
2015/06/10 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
配置Kubernetes外网访问集群
2022/03/31 Servers
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript