1、直方图plt.hist

直方图,又称质量分布图,它是条形图的一种,由一系列高度不等的纵向线段来表示数据分布的情况,直方图的横轴表示数据类型,纵轴表示分布情况

柱状图与直方图不同:

直方图用于概率分布,它显示一组数值序列在给定的数值范围内出现的频率

柱状图则用于展示各个类别的频数

柱状图                                            直方图
柱状图一般用于描述离散型分类数据的对比直方图一般用于描述连续型数据的分布关系
每根柱子宽度固定,柱子之间有间距每根柱子宽度可以不一样,且一般没有间距
横轴变量可以任意排序横轴变量有一定顺序规则

 

 

 

 

将统计值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值,

直方图也可以归一化以显示“相对”频率,然后,它显示了属于几个类别中的每个类别的占比,其高度总和等于1。

plt.hist(x,bins=None,range=None....bottom=None,.......)

  • x:作直方图要用的数据,必须是一维数组
  • bins:直方图的柱子数,即要分的组数,默认为10 

#临时设置
plt.rcParams['font.sans-serif']=["SimHei"]
#中文符号
plt.rcParams['axes.unicode_minus']=False
#设置分辨率为100
plt.rcParams['figure.dpi']=100

#设置画布大小
plt.rcParams['figure.figsize']=(5,3)



#使用numpy随机生成300个随机数据
x_value=np.random.randint(140,180,300)

#绘制直方图,第一个参数是数据,第二个参数是柱子数,第三个是边框为白色可以区分开
plt.hist(x_value,bins=10,edgecolor='white')
plt.title("数据统计")
plt.xlabel("身高")
plt.ylabel("比率")

  2、添加折线直方图

在直方图中,我们可以加一个折线图,辅助我们查看数据变化情况

  • 首先通过pylot.subplots()创建Axes对象
  • 通过Axes对象调用hist()方法绘制直方图,返回折线图所需要的x、y数据
  • 然后Axes对象调用plot()绘制折线图
#创建一个画布
fig,ax=plt.subplots()

#绘制直方图
##绘制直方图(num,bins_limit,patches均是直方图的返回值,num是每个柱子的高,bins_limit是每个柱子的宽度范围,patches返回每个bin里面包含的数据,是一个list)
num,bins_limit,patches=ax.hist(x_value,bins=10,edgecolor='white')

#注意num返回的个数是10,bins_limit返回的个数为11,需要截取
print(bins_limit[:10])#切片,x轴
#曲线图
ax.plot(bins_limit[:10],num,'--',marker='o')
#           x轴          y轴

 3、饼状图

#定义饼的标签
labels=['娱乐','育儿','饮食','房贷','交通','其他']

#每个标签所占的数量
x=[200,500,1200,7000,200,900]

plt.title("饼状图--家庭支出")

#%.2f%%显示百分比,保留2位小数
plt.pie(x,labels=labels,autopct='%.2f%%')

 饼状图的分离

 

 设置饼状图百分比和文本距离中心距离:

  • pctdistance:设置百分比标签与圆心的距离
  • labeldistance:设置各扇形标签(图例)与圆心的距离

 

 

Logo

鸿蒙生态一站式服务平台。

更多推荐