一、功能介绍

输入:实测x、y数据

输出:必选:x、y散点图

必选:x、y线性拟合直线

可选:相关性、显著性分析结果显示1-1

1-2

二、代码2-1

import random

from scipy import stats

import matplotlib.pyplot as plt

import seaborn as sns

import pandas as pd

import numpy as np

class Linearfitplot:

def __init__(self, x, y, legends=None, labels=None, fsize=(8, 8), show_info=1):

"""

:param x: 数据x列表

:param y: 数据y列表

:param legends: 图例名,默认为 "线性拟合结果", "实测值"

:param labels:坐标轴标题名,默认为 "数据x", "数据y"

:param show_info:是否显示拟合结果信息

"""

if legends is None:

legends = ["线性拟合结果", "实测值"]

if labels is None:

labels = ["数据x", "数据y"]

self.x = x

self.y = y

self.fsize = fsize

self.legends = legends

self.labels = labels

self.show_info = show_info

def change_legend(self, new_legends):

self.legends = new_legends

def change_label(self, new_labels):

self.labels = new_labels

def rsquared(self, show_info_or_not=0):

"""

:param show_info_or_not: 布尔类型,当其为真时显示信息

:param x:x数据序列

:param y:y数据序列

:return:

r: 相关系数

p:显著性

slope:曲线斜率

intercept:截距

"""

ws = 3  # 各参数保留的小数位数

check_p = "不显著"

slope, intercept, *useless = stats.linregress(self.x, self.y)

r, p = stats.pearsonr(self.x, self.y)

if p <= 0.01:

check_p = "非常显著**"

elif p <= 0.05:

check_p = "显著*"

slope, intercept, r, p = round(slope, ws), round(intercept, ws), round(r, ws), round(p, ws)

info = "y = {0}x + {1} r-square = {2} p:{3};{4}".format(slope, intercept, round(r**2, ws), p, check_p)

if show_info_or_not:

return info

else:

return slope, intercept, r, p

def draw_plot(self, *args):

"""

绘制图像,包含散点图和拟合线

:param args:

:return:

"""

# 设置画布大小

plt.figure(figsize=self.fsize)

# 生成df

x_name, y_name = "x", "y"

dict_data = {"x": self.x,

"y": self.y

}

df = pd.DataFrame(dict_data)

# 计算并绘制拟合曲线

z1 = np.polyfit(x_data, y_data, 1)

p1 = np.poly1d(z1)  # 将系数代入方程,得到函式p1

yvals_data = p1(df[x_name])

# 绘制曲线

sns.set_style("darkgrid")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文

sns.set_context("talk", font_scale=1)

sns.lineplot(x_data, yvals_data, color="r", lw=1, label=self.legends[0])

sns.scatterplot(x=x_name, y=y_name, data=df, *args, label=self.legends[1])

plt.xlabel(self.labels[0])

plt.ylabel(self.labels[1])

info_show = self.rsquared(self.show_info)

plt.text(self.fsize[0] * 0.6, self.fsize[0] * 0.1, info_show, size=self.fsize[0] * 1.8)

plt.tight_layout()

plt.show()

if __name__ == "__main__":

len_data = 10  # 测试数据序列的长度

x_data = list(range(len_data))  # x轴数据序列

y_data = [i*2+1+random.uniform(0, 1) for i in x_data]

plot1 = Linearfitplot(x_data, y_data, fsize=(10, 6.18))

plot1.draw_plot()

python散点图拟合曲线-【python常用图件绘制#01】线性拟合结果图相关推荐

  1. python散点图拟合曲线-Python解决最小二乘法拟合并绘制散点图

    问题背景 最近物理老师让用Excel弄一个最小二乘法拟合然后弄出方程来求玻尔兹曼常数.无奈发现Linux上的WPS没有绘图功能无语啊O__O"-,据说绘图功能是用delphi写的,不好做跨平 ...

  2. python散点图拟合曲线-python散点图拟合

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 下面是我在文本文件中绘制数据散点图的代码. 我打开的文件包含两列. 左列为x坐标 ...

  3. python散点图拟合曲线-python散点图:如何添加拟合线并显示拟合方程与R方?

    原标题:python散点图:如何添加拟合线并显示拟合方程与R方? polyfit()函数可以使用最小二乘法将一些点拟合成一条曲线. numpy.polyfit(x, y, deg, rcond=Non ...

  4. python散点图拟合曲线-python 绘制拟合曲线并加指定点标识的实现

    python 绘制拟合曲线并加指定点标识 import os import numpy as np from scipy import log from scipy.optimize import c ...

  5. python散点图拟合曲线-python 拟合曲线并求参

    需要对数据进行函数拟合,首先画一下二维散点图,目测一下大概的分布, 所谓正态分布,就是高斯分布,正态曲线是一种特殊的高斯曲线. python的scipy.optimize包里的curve_fit函数来 ...

  6. python散点图拟合曲线-python中的多元(多项式)最佳拟合曲线?

    Tyson 对this question的公认回答 提供了 您只需将x和y点的数组以及所需的拟合度(顺序)传递到multipolyfit.这将返回系数,然后可以使用numpy的polyval绘制. 注 ...

  7. python散点图拟合曲线-python – 将曲线拟合到散点图的边界

    我发现问题真的很有趣,所以我决定尝试一下.我不知道pythonic或natural,但我认为我已经找到了一种更准确的方法,可以在使用每个点的信息时将边缘拟合到像您这样的数据集. 首先,让我们生成一个看 ...

  8. python散点图拟合曲线-python曲线拟合

    http://blog.sina.com.cn/s/blog_aed5bd1d0102vid7.html 1.多项式拟合范例: import matplotlib.pyplot as plt impo ...

  9. python 画频率分布直方图_[python常用图件绘制#03]Gamma分布拟合图

    〇.Gamma分布主要参数说明 对于一组连续的随机变量x来说,若它的概率密度分布函数f(x|α,β)符合下式时: 0-1 则将这个概率密度函数称为伽码(Г,Gamma)分布,记作 X ~Г(α,β), ...

最新文章

  1. 学习Angular前了解下TypeScript
  2. linux unshare 命令,Linux ip netns 命令
  3. 【NOIP2016PJ】【Luogu2058】海港
  4. 数据结构与算法常见笔试题 .
  5. 匿名内部类与Lambda表达式习题
  6. 基于mx27ads 的yaffs 文件系统释疑
  7. python深度学习之TensorFlow
  8. 《代码大全》个人总结
  9. 杰瑞·卡普兰:人工智能并不可怕 未来将带来两大影响
  10. 布丰投针实验(如何将Geogebra动态文件嵌入博客中)
  11. 浏览器-解决火狐浏览器总是提示Adobe Flash更新的问题
  12. Bean初始化错误:Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
  13. JavaScript-161:表格全行变色
  14. 酪氨酸激酶、自噬等抗肿瘤抑制剂
  15. 山东境内的自驾游景点一览表
  16. Centos 安装docker后 deamo 无法启动的问题 解决
  17. 游戏项目管理经验方法
  18. 毕业设计—图书馆预约系统
  19. 鼠标不听使唤,在屏幕上乱窜乱动怎么办?
  20. 上门预约程序公众号模块 完美版

热门文章

  1. vue编写messageBox,使用函数调用
  2. BZOJ1217: [HNOI2003]消防局的设立
  3. VirtualBox Ubuntu虚拟机串口编程
  4. 【c# 学习笔记】类实例化
  5. 尼姆博奕 (Nimm Game) 异或运算;
  6. Response.Redirect() 跳转中的ThreadAbortException
  7. 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问。(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))...
  8. python实现希尔排序
  9. 《全栈性能Jmeter》-4JMeter脚本开发
  10. Unity之Update与FixedUpdate区别