matlab 频率分布直方图_matplotlib库:直方图

1.直方图简介

直方图和柱状图虽然外形非常相似,但是实际意义差别非常大。直方图是用来描述数据分布的统计报告图,体现了数据分布在某个区间或者取得某个值的频数或频率,如果在统计数据时将区间划分的足够小,则频率分布图直方图就会变成一条平滑曲线,即为密度图,事实上,我们常常提及的正态分布,就是一种密度图,因此直方图常常与密度图结合在一起,而柱状图是用来描述各个类别的大小。

2.核心函数及核心参数介绍

hist(x,bins,density,histtype,rwidth,color)

常用参数意义介绍

x--要绘制的数据;

bins--数据划分为区间的数量或者给定区间范围,若给定一个整数,则表示将数据划分为区间的个数,若给定一个序列例如[1,2,3,4],则表示将数据分布划分为[1,2),[2,3),[3,4]三个区间;

density--默认为False,即显示各区间的数据频数,若设置为True,则显示密度,即频率/区间长度;

histtype--直方图的形状,可取值为'bar','barstacked','step','stepfilled';

rwidth--直方图中柱子的宽度;

color--直方图颜色;

备注:上述参数必须给定参数x,其余参数均可缺省。

3.简单直方图实例展示

import numpy as npimport matplotlib.pyplot as plt# 生成数据np.random.seed(0)x = 10+np.random.randn(1000)*2plt.rc('font', family='STSong')plt.title('直方图')plt.hist(x, bins=10)plt.ylabel('频数', fontsize=15)plt.show()
57f373ebc44351d66ff0c49a452987ef.png

上述代码结果图

# 仅修改hist函数中density参数取值plt.hist(x, bins=10, density=True)
ec01fa664ec13828c2b100448522d95f.png

设定density为True后结果图

注意:上述密度是频率除区间长度,而并非频率。

4.直方图密度图实例展示

import numpy as npimport matplotlib.pyplot as pltimport matplotlib.mlab as mal# 生成数据np.random.seed(0)x = 10+np.random.randn(1000)*2plt.rc('font', family='STSong')plt.title('直方图')plt.hist(x, bins=10, density=True, color='pink')k=mal.GaussianKDE(x)x=np.linspace(x.min(), x.max(), 1000)plt.plot(x, k(x))plt.ylabel('密度', fontsize=15)plt.show()
d2274b7e867b38439cdb70c6486b1912.png

上述代码结果图

事实上,对于密度图而言,利用seaborn库可以非常简单地进行绘制,seaborn库是基于matplotlib库的高级封装,可以更加简单、快速绘制各种图形,后续将更新seaborn库绘制各种图形。


参考资料

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist

https://matplotlib.org/gallery/pyplots/pyplot_text.html#sphx-glr-gallery-pyplots-pyplot-text-py