〇、Gamma分布主要参数说明

对于一组连续的随机变量x来说,若它的概率密度分布函数f(x|α,β)符合下式时:

0-1

则将这个概率密度函数称为伽码(Г,Gamma)分布,记作 X ~Г(α,β),其中α称为形状参数,β称为尺度参数。通过绘图,可对比不同α,β取值下曲线的形态。

0-2

绘制此图的代码如下:

0-3

一、功能介绍

输入:某样本数据

样本分组数

输出:直方图(纵轴为频率)

Gamma分布拟合曲线

显示拟合参数及R方值

1-1

1-2

1-3

二、代码

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}\nr-square = {2}\np:{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()

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()

plt.show()

本例中α、β参数的值默认根据经验公式(不具有有普适性)确定,可用下文代码中的Gammafitplot类的change_para()方法进行修改,如下:2-2

python 画频率分布直方图_[python常用图件绘制#03]Gamma分布拟合图相关推荐

  1. python 画频率分布直方图求平均数_Python绘制频率分布直方图

    Python绘制频率分布直方图 项目中在前期经常要看下数据的分布情况,这对于探究数据规律非常有用.概率分布表示样本数据的模样,长的好不好看如果有图像展示出来就非常完美了,使用Python绘制频率分布直 ...

  2. python画资本市场线_使用matplotlib轻松绘制股票K线图

    K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价.开盘价.最高价和收盘价,一般都K线如下图所示: 度娘说:K线图源于日本德川幕府时代(1603-1867年),被当时日本米 ...

  3. python画频率直方图_【python常用图件绘制#02】频率、累计频率双纵坐标轴图

    一.功能介绍 输入:某样本数据 样本分组数 输出:必选:直方图(纵轴为某分组下样本的数目) 可选:累计频率线1-1 二.代码2-1 import numpy as np import matplotl ...

  4. 怎么样用python画一朵花_如何用程序绘制一朵花?

    首先我们看看我们最后的效果是怎样的. 根据上面的效果,我们可以看出来,其实花是由花瓣组成的,每一个花瓣又是由圆弧组成的,枝杆是由直线组成的,其实单独去绘制出每一部分,我相信都可以,这里主要是要将它们每 ...

  5. python散点图拟合曲线-【python常用图件绘制#01】线性拟合结果图

    一.功能介绍 输入:实测x.y数据 输出:必选:x.y散点图 必选:x.y线性拟合直线 可选:相关性.显著性分析结果显示1-1 1-2 二.代码2-1 import random from scipy ...

  6. 怎么用python画火柴人_如何用ai绘制火柴人的教程

    今天小编带来的是Illustrator的绘制教程,是绘制火柴人噢.下面请看步骤: 工具/原料 电脑 Illustrator软件 方法/步骤 1 首先打开空白文档 END 方法/步骤2 1 点击椭圆形工 ...

  7. origin画对数坐标_如何用Origin绘制对数坐标图、双横坐标图及插入到Word文稿

    如何用Origin绘制对数坐标图.双横坐标图及插入到Word文稿 1) 如何绘制纵坐标为log.ln对数图 答:如要绘制y轴为log.ln的对数图,选择y轴,"双击",在" ...

  8. python画棒棒糖程序_论文画图神器!25个常用Matplotlib图的Python代码,收藏收藏!...

    作者:zsx_yiyiyi 编辑:python大本营 大家好,今天要分享给大家25个Matplotlib图的汇总,在数据分析和可视化中非常有用,文章较长,可以马起来慢慢练手. # !pip insta ...

  9. matlab 频率分布直方图_小猿圈Python开发之绘制频率分布直方图示例

    现在人工智能越来越实用,甚至深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下绘制频率分布直方图示例,希望对于刚刚自学python的你有一定的帮助. 项目中在 ...

最新文章

  1. 《windows核心编程》 17章 内存映射文件
  2. 在 Kubernetes 上弹性深度学习训练利器 - Elastic Training Operator
  3. php7从基础到商业实战,TP5从基础到项目实战全套
  4. loadrunner 一个诡异问题
  5. Django之forms组件使用
  6. web前端期末大作业网课设计与实现 _简单DIV布局旅游网页——简洁的旅游酒店公寓(15页)HTML+CSS+JavaScript
  7. 单片机与嵌入式linux 比较
  8. 档案管理学 | 档案实体管理概论
  9. oracle函数translate,oracle中Translate()函数用法
  10. css里dotted,CSS中dashed和dotted的区别有哪些
  11. Android的屏幕适配
  12. OPPO Pad 2 参数 OPPOPad 2评测怎么样
  13. 神奇的口袋(动态规划)--算法学习
  14. 洛伦兹力的matlab求解,问:由安培力推导洛伦兹力的过程?
  15. 《C++ primer plus》学习笔记
  16. 阿里天池——Numpy实战
  17. 简单c语言for循环例子,C语言第三课 for循环例子.doc
  18. Nginx访问日志(access_log)配置
  19. 据说是世界上最难的逻辑题之一
  20. Dom4j修改xml文件

热门文章

  1. <秒懂男女关系秘密的第一本书>
  2. uniClound云开发创建流程
  3. 编程入门书籍(强推)
  4. 摩客串串(chinco)-UI设计师的交互演示利器
  5. 我在叽里呱啦折腾 DolphinScheduler 的日子
  6. 【工程源码】基于FPGA的XPT2046触摸控制器设计
  7. 《天龙八部》中少林寺无名老僧的真实身份大破解
  8. 生菜出现叶焦病?全是连作惹的祸!!!
  9. ios realm 文件_iOS数据持久化方案-Realm的使用
  10. 类的6个默认成员函数