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 相关文章推荐
python连接mysql并提交mysql事务示例
Mar 05 Python
Python构造函数及解构函数介绍
Feb 26 Python
在Python下利用OpenCV来旋转图像的教程
Apr 16 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python去掉行尾的换行符方法
Jan 04 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
详解Python with/as使用说明
Dec 13 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python调用C语言的实现
Jul 26 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
Django路由层URLconf作用及原理解析
Sep 24 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
Php+SqlServer实现分页显示
2006/10/09 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
PHP创建XML接口示例
2019/07/04 PHP
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
js实现烟花特效
2020/03/02 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python+PIL实现支付宝AR红包
2018/02/09 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
opencv 阈值分割的具体使用
2020/07/08 Python
使用python实现学生信息管理系统
2021/02/25 Python
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
小学教师暑期培训方案
2014/08/28 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
求职自我推荐信
2015/03/24 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android