本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。
直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
pyplot种提供hist()函数绘制直方图。
plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’,…)
其中常见属性及说明如下
属性 | 说明 | 类型 |
---|---|---|
x | 输入数据 | 数值类型 |
bins | 条形数量 | int |
range | x轴的取值范围 | 数值元组类型(起始值,结束值) |
density | 是否以密度形式显示,默认为False,以数据个数显示 | bool |
color | 直方图的颜色 | ‘r’,‘b’,‘y’… |
bottom | y轴的起始位置 | 数值类型 |
histtype | 线条类型 | “bar”:方形,“barstacked”:柱形, “step”:“未填充线条” “stepfilled”:“填充线条” |
align | 对齐方式 | “left”:左,“mid”:中间,“right”:右 |
orientation | 直方图方向 | “horizontal”:水平,“vertical”:垂直 |
log | 单位是否以科学计术法 | bool |
alpha | 图形透明度 | float |
np.random.seed(1)
x = np.random.normal(60,20,100)
plt.hist(x,bins=10)
plt.show()
可以看到,通过np.random.normal函数生成了均值为60,方差为20,个数为100的具有正态分布的数组,将其作为hist的输入,条形个数设置为10,表示数值从最小到最大之间均分为10份,并将每一份的数据个数作为直方图的纵坐标显示。
np.random.seed(1)
x = np.random.normal(60,20,100)
plt.hist(x,bins=20,density=True,histtype='stepfilled',orientation='horizontal',color='y')
plt.show()
可以看到通过更改bins更改为20生成了20直方,增加density=True后,将每个直方图的数据以频率作为纵坐标显示,orientation将方向更改为横向,histtype更改直方图显示类型。