python 绘制拟合曲线并加指定点标识的实现


Posted in Python onJuly 10, 2019

python 绘制拟合曲线并加指定点标识

python 绘制拟合曲线并加指定点标识的实现

import os
import numpy as np
from scipy import log
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import math
from sklearn.metrics import r2_score
# 字体
plt.rcParams['font.sans-serif']=['SimHei']

# 拟合函数
def func(x, a, b):
#  y = a * log(x) + b
  y = x/(a*x+b)
  return y

# 拟合的坐标点
x0 = [2, 4, 8, 10, 24, 28, 32, 48] 
y0 = [6.66,8.35,10.81,11.55,13.63,13.68,13.69,13.67]

# 拟合,可选择不同的method
result = curve_fit(func, x0, y0,method='trf')
a, b = result[0] 

# 绘制拟合曲线用
x1 = np.arange(2, 48, 0.1) 
#y1 = a * log(x1) + b
y1 = x1/(a*x1+b)

x0 = np.array(x0)
y0 = np.array(y0)
# 计算r2
y2 = x0/(a*x0+b)
#y2 = a * log(x0) + b
r2 = r2_score(y0, y2)  

#plt.figure(figsize=(7.5, 5)) 
# 坐标字体大小
plt.tick_params(labelsize=11) 
 # 原数据散点
plt.scatter(x0,y0,s=30,marker='o')

# 横纵坐标起止
plt.xlim((0, 50))
plt.ylim((0, round(max(y0))+2))

# 拟合曲线
plt.plot(x1, y1, "blue") 
plt.title("标题",fontsize=13) 
plt.xlabel('X(h)',fontsize=12) 
plt.ylabel('Y(%)',fontsize=12) 

# 指定点,y=9时求x
p = round(9*b/(1-9*a),2)
#p = b/(math.log(9/a))
p = round(p, 2)
# 显示坐标点
plt.scatter(p,9,s=20,marker='x')
# 显示坐标点横线、竖线
plt.vlines(p, 0, 9, colors = "c", linestyles = "dashed")
plt.hlines(9, 0, p, colors = "c", linestyles = "dashed")
# 显示坐标点坐标值
plt.text(p, 9, (float('%.2f'% p),9),ha='left', va='top', fontsize=11)
# 显示公式
m = round(max(y0)/10,1)
print(m)
plt.text(48, m, 'y= x/('+str(round(a,2))+'*x+'+str(round(b,2))+')', ha='right',fontsize=12) 
plt.text(48, m, r'$R^2=$'+str(round(r2,3)), ha='right', va='top',fontsize=12) 

# True 显示网格 
# linestyle 设置线显示的类型(一共四种) 
# color 设置网格的颜色 
# linewidth 设置网格的宽度  
plt.grid(True, linestyle = "--", color = "g", linewidth = "0.5")
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python离线安装外部依赖包的实现
Feb 13 Python
基于python实现查询ip地址来源
Jun 02 Python
Python手动或自动协程操作方法解析
Jun 22 Python
超级详细实用的pycharm常用快捷键
May 12 Python
python状态机transitions库详解
Jun 02 Python
python 寻找离散序列极值点的方法
Jul 10 #Python
Python中面向对象你应该知道的一下知识
Jul 10 #Python
python实现函数极小值
Jul 10 #Python
通过PHP与Python代码对比的语法差异详解
Jul 10 #Python
python 梯度法求解函数极值的实例
Jul 10 #Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 #Python
Python 旋转打印各种矩形的方法
Jul 09 #Python
You might like
简单易用的计数器(数据库)
2006/10/09 PHP
PHP数组实例总结与说明
2011/08/23 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
微信小程序python用户认证的实现
2019/07/29 Python
tensorflow如何批量读取图片
2019/08/29 Python
Python中bisect的使用方法
2019/12/31 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
工艺员岗位职责
2014/02/11 职场文书
统计系教授推荐信
2014/02/28 职场文书
团日活动总结
2014/04/28 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
工作岗位职责范本
2015/02/15 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技