直方图的两个概念:
- 组数:在统计数据时,数据被分成的组的个数
- 组距:每一组两个端点的差
直方图与柱状图的对比:
- 直方图展示数据的分布,柱状图比较数据的大小
- 直方图x轴为定量数据,柱状图x轴为分类数据
- 直方图柱子间无间隔,柱状图有间隔
- 直方图柱子宽度可以不同,柱状图柱子宽度必须相同
直方图的绘制:
plt.hist(x, bins=None, density=None, **kwargs)
- x:要画图的数据
- bins:组数
- density:是否显示频率
# 需求:电影时长的分布状况
import random
import matplotlib.pyplot as plt
# 1.准备数据
time = [random.randint(100, 160) for i in range(200)]
# 2.创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3.绘制图像
distance = 2 #组距
group_number = (max(time) - min(time)) // distance #//代表地板除,只返回商的整数部分,相当于强制取整
plt.hist(time, bins=group_number, density=True)
# 修改x轴刻度
plt.xticks(range(min(time), max(time) + 2, distance))
# 添加网格线
plt.grid(linestyle='--', alpha=0.5)
# 添加坐标轴描述
plt.xlabel('电影播放时长/s')
plt.ylabel('电影的数据量')
# 添加标题
plt.title('电影播放时长分布')
# 4.显示图像
plt.show()
显示效果:
直方图的注意点:
- 注意组距,得到满意的展示效果
- 注意y轴所代表的变量是频数还是频率
直方图的应用场景:
- 用于表示分布情况
- 通过直方图还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处