1 直方图介绍
直方图由一系列高度不等的纵向条纹或线段表示数据分布情况,一般用横轴表示数据范围,纵轴表示分布情况。
特点: 绘制连续性的数据,展示一组或者多组数据的分布情况(统计)。
2 直方图绘制
直方图通过hist()
函数绘制
• plt.hist(x, bins=None)
# 绘制以x为数值,bins为组数,组数 = 极差/组距
示例:
某地区连续50年中四月份平均气温数据如下:
temp= [6.9,4.1,6.6,5.2,6.4,7.9,8.6,3.0,4.4,6.7,7.1,4.7,9.1,6.8,8.6,5.2,5.8,7.9,5.6,8.8,8.1,5.7,8.4,4.1,6.4,6.2,5.2,6.8,5.6,5.6,6.8,8.2,6.4,4.8,6.9,7.1,9.7,6.4,7.3,6.8,7.1,4.8,5.8,6.5,5.9,7.3,5.5,7.4,6.2,7.7]
根据以上数据,推断该地区四月份平均气温的分布类型。
解析:样本中最小值a=3.0,最大值b=9.7。则分布区间[3,10]等分为7个小区间,区间长度为1,以下为样本值在各小区间的频数与评率。
区间 | 频数 | 频率 |
---|---|---|
[3,4] | 1 | 1/50 |
(4,5] | 6 | 6/50 |
(5,6] | 11 | 11/50 |
(6,7] | 15 | 15/50 |
(7,8] | 9 | 9/50 |
(8,9] | 6 | 6/50 |
(9,10] | 2 | 2/50 |
代码如下:
from matplotlib import pyplot as plt
import matplotlib
import matplotlib
font = {
'family':'SimHei',
'weight':'bold',
'size':12
}
matplotlib.rc("font", **font)
temp= [6.9,4.1,6.6,5.2,6.4,7.9,8.6,3.0,4.4,6.7,7.1,4.7,9.1,6.8,8.6,5.2,5.8,7.9,5.6,8.8,8.1,5.7,8.4,4.1,6.4,6.2,5.2,6.8,5.6,5.6,6.8,8.2,6.4,4.8,6.9,7.1,9.7,6.4,7.3,6.8,7.1,4.8,5.8,6.5,5.9,7.3,5.5,7.4,6.2,7.7]
#plt.hist(temp_li) #如果用默认的组数 会出现数值范围对不齐的情况,bins默认为10
temp_max = max(temp)
temp_min = min(temp)
# 四舍五入,组数为7,组距为1
cha = round(temp_max-temp_min)
b = 1
temp_bins = int(cha/b)
#density的类型是 bool型,指定为True,则为频率直方图,反之,频数直方图
#plt.hist(temp_li,bins=bi) #频数直方图
plt.hist(temp,bins=temp_bins,density=True) # 频率直方图
plt.xlabel("区间")
plt.ylabel("频数/频率")
plt.title("气温分布直方图")
plt.show()
效果图: