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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
Python中为什么要用self探讨
Apr 14 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
Pandas标记删除重复记录的方法
Apr 08 Python
WxPython建立批量录入框窗口
Feb 27 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
python如何从文件读取数据及解析
Sep 19 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
python logging.basicConfig不生效的原因及解决
Feb 20 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在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php图像处理类实例
2015/07/28 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
python re模块findall()函数实例解析
2018/01/19 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python 没有main函数的原因
2020/07/10 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
士力架广告词
2014/03/20 职场文书
学习普通话的体会
2014/11/07 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技