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列表推导式的使用方法
Nov 21 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
使用python实现画AR模型时序图
Nov 20 Python
python求绝对值的三种方法小结
Dec 04 Python
Python字典底层实现原理详解
Dec 18 Python
python全局变量引用与修改过程解析
Jan 07 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
call在Python中改进数列的实例讲解
Dec 09 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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文件的实现方法
2007/03/19 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
vue cli 全面解析
2018/02/28 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
Python绘制的二项分布概率图示例
2018/08/22 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
美国翻新电子产品商店:The Store
2019/10/08 全球购物
2014年秋季开学演讲稿
2014/05/24 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers