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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
Python实现简单的可逆加密程序实例
Mar 05 Python
判断网页编码的方法python版
Aug 12 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python super函数使用方法详解
Feb 14 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
python随机模块random的22种函数(小结)
May 15 Python
解析Tensorflow之MNIST的使用
Jun 30 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中使用模板的方法
2008/05/24 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php显示页码分页类的封装
2017/06/08 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
HTML的select控件美化
2017/03/27 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
Python计算一个文件里字数的方法
2015/06/15 Python
Python遍历pandas数据方法总结
2018/02/09 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
运动会广播稿100字
2014/01/11 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python