当我们想要弄清楚变量的统计特性时,往往想知道它是服从什么分布的,这时候就需要绘制概率分布直方图

在python中我们可以使用seaborn库来进行绘制:

Seaborn是一个基于matplotlib的Python数据可视化库。它为绘制有吸引力和信息丰富的统计图形提供了高级界面。

首先需要导入seaborn库:

import seaborn as sns

在seaborn中的distplot函数可以完成概率分布直方图和密度图的绘制

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False,
fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,
color=None, vertical=False, norm_hist=False, axlabel=None,
label=None, ax=None)

下面直接给出我绘制时用到的代码:

import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.stats import laplace

txt=[]
data=[]
path = r"E:\rtklib\rtklib-test1\stav.txt"

#mpl.rc("figure", figsize=(9, 5))
with open(path, "r") as f:
    txt.append(f.readlines())

for i in range(len(txt[0])):
    data.append(float(txt[0][i].strip().split(',')[1]))

sns.set_palette("hls")
#sns.set_style("whitegrid")
plt.figure(dpi=120)
sns.set(style='dark')
sns.set_style("dark", {"axes.facecolor": "#e9f3ea"})
g = sns.distplot(data,
                 hist=True,
                 kde=True,  # 开启核密度曲线kernel density estimate (KDE)
                 kde_kws={'linestyle': '--', 'linewidth': '1', 'color': '#c72e29',
                          # 设置外框线属性
                          },
                 fit=norm,
                 color='#098154',
                 axlabel='Standardized Residual',  # 设置x轴标题

                 )

plt.show()

其中,distplot的参数中,kde表示是否绘制核密度曲线;fit是选择拟合的分布,来分析数据究竟是符合什么分布,seaborn中提供了很多分布,可以在这里找到,使用时如上我的代码中导入的那样就可以:连续分布类型
最后的效果图如下:
在这里插入图片描述
绘制过程中没有加入太多修饰,如果想要好看一点,可以修改一些参数:
其中一个有设置背景 的风格,主要有以下几种:

sns.set_style("whitegrid")
sns.set_style("dark")
sns.set_style("darkgrid")
sns.set_style("white")
sns.set_style("ticks")
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐