Python之matplotlib基础3--直方图

直方图是一种统计报告图,可以直观的统计出一组数据的分布情况。

如果有100部电影的时长数组,通过直方图绘制出这些电影时长的分布状态,比如时长是100-120分钟的电影有多少部?

注意:直方图只能绘制出数据是没有被统计过的,如果已被分类统计,则还是用曲线图或其它绘制

#如果有100部电影的时长数组,通过直方图绘制出这些电影时长的分布状态,比如时长是100-120分钟的电影有多少部?

from matplotlib import pyplot as plt
import matplotlib

#100部电影的时长,单位:分钟
a=[80,65,130,210,136,158,148,201,78,123,
180,161,120,110,145,118,108,121,157,113,
170,162,150,115,115,136,118,140,167,193,
90,135,120,220,126,128,128,138,178,153,
80,65,130,210,136,158,148,201,78,123,
180,161,120,110,145,118,108,121,157,113,
170,162,150,115,115,146,118,151,167,193,
90,135,120,220,126,128,128,141,145,153,
170,162,150,115,115,146,118,161,167,193,
90,135,120,220,126,128,128,180,148,153]

#设置可以正常显示中文
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '10'
        }
matplotlib.rc('font', **font)
# #设置图片大小
plt.figure(figsize=(20,12),dpi=80)

#计算组数,每5分钟为1组
#num_bins应该是整数才最理想,否则网格和柱状图会不对齐
#如果num_bins不是整数,可以在数组里增加一个最大值让其最大值减最小值除以5是整数
d=5
num_bins=(max(a)-min(a))//d
print (min(a),max(a),num_bins)

#用plt.hist画直方图,分别传入数组以及需要分多少组
plt.hist(a,num_bins)

#设置X轴的刻度
#plt.xticks只传入一个参数代表每个刻度的列表,传入多个参数需要刻度和对应显示的字符一一对应
_xtick_lable=["{}分钟".format(i) for i in range(min(a),max(a)+d,d)]
plt.xticks(range(min(a),max(a)+d,d),_xtick_lable,rotation=45)

#增加网格
plt.grid()

#保存到本地,指定文件名,如果为svg格式,可以保存为矢量图
plt.savefig("./sig_size_10.png")

plt.show()

从直方图可以看出中间的一段,也就是110~165分钟的比较集中,说明电影时长在这段时间的电影比较多。

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页