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 28 Python
Python构建XML树结构的方法示例
Jun 30 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python编程嵌套函数实例代码
Feb 11 Python
python素数筛选法浅析
Mar 19 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
pandas 数据实现行间计算的方法
Jun 08 Python
详解Python3注释知识点
Feb 19 Python
python Django中models进行模糊查询的示例
Jul 18 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python3实现无权最短路径的方法
May 12 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/06/23 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
Ext 今日学习总结
2010/09/19 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
Python grpc超时机制代码示例
2020/09/14 Python
Python requests上传文件实现步骤
2020/09/15 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
美国社交购物市场:MassGenie
2019/02/18 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
四好少年事迹材料
2014/01/12 职场文书
满月酒答谢词
2014/01/14 职场文书
化工操作工岗位职责
2014/04/29 职场文书
员工保密协议书
2014/09/27 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
邀请函模板
2015/02/02 职场文书
民事调解协议书
2016/03/21 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Django框架中模型的用法
2022/06/10 Python