直方图介绍
直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据范围,纵轴表示分布情况
特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计)
直方图绘制
直方图通过hist()函数绘制
• plt.hist(x, bins=None) # 绘制以x为数值,bins为组数
• 组数 = 极差/组距
练习
某地区连续50年中四月份平均气温数据如下:
temp_li= [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,以下为样本值在各小区间的频数与评率。
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
temp_li= [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]
# 求bins 组数 组数=极差/组距
# 求极差
max(temp_li) # 9.7
min(temp_li) # 3.0
# print(max(temp_li))
cha = max(temp_li)-min(temp_li)
# print(cha)
b = 1
# bi = round(cha)/b # round可以四舍五入, 但是做除法之后,值是浮点数
# 转换为整数型 用整除
bi = round(cha)//b
plt.hist(temp_li,bins=bi,density=True) # 注意bins一定是整数类型 默认为10,density是频率
# 显示标签
plt.xlabel('区间')
plt.ylabel('频数/频率')
plt.title('直方图')
plt.show()
练习2
绘制班级的身高分布图形
height = [160,163,175,180,176,177,168,189,188,177,174,170,173,181]
# 绘制班级的身高分布图形
# height = [160,163,175,180,176,177,168,189,188,177,174,170,173,181]
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
height = [160,163,175,180,176,177,168,189,188,177,174,170,173,181]
cha = max(height)-min(height)
b = 1
bi = round(cha)//b
plt.hist(height,bins=bi,density=True)
plt.show()