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
详解Python中的装饰器、闭包和functools的教程
Apr 02 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python3安装pip工具的详细步骤
Oct 14 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python 批量下载阴阳师网站壁纸
May 19 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+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php 字符串替换的方法
2012/01/10 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
joomla组件开发入门教程
2016/05/04 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python实现的简单万年历例子分享
2014/04/25 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python集合类型用法分析
2015/04/08 Python
浅谈python数据类型及类型转换
2017/12/18 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python遍历numpy数组的实例
2018/04/04 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
服装店营销方案
2014/03/10 职场文书
合伙经营协议书
2014/04/18 职场文书
安全生产计划书
2014/05/04 职场文书
秦兵马俑导游词
2015/02/02 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
队列队形口号
2015/12/25 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS