目录
什么是直方图
直方图(英语:Histogram)是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量,以长条图(bar)的形式具体表现。
直方图与条形图的区别:
- 条形图是用条形的长度表示各类别频数的多少,而宽度(表示类别)是固定的,没有实际的数值意义。
- 直方图是用面积表示各组频数的多少,条形的长度表示每一组的频数或频率,条形的宽度表示各组的组距,所以直方图中条形的长度和宽度都是有实际的数值意义的。
- 条形图描述分类变量,直方图描述数值变量。
- 由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列的
直方图:
条形图:
直方图hist()函数
plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, hold=None, data=None, **kwargs)
x参数:必填参数,数组或者数组序列
bins参数:将数据分成几组,它接收的参数可以是整数,也可以是序列,还可以是字符串,常用的是整数和序列。默认为生成10个间隔。
- 如果是整数n,则表示要将所有数据平均分成n组进行绘图。
- 如果是序列,则是指定每一组的临界值
range参数:指定全局间隔的下限与上限值 (min,max),元组类型,默认值为 None。
density参数:如果为 True,返回概率密度直方图;默认为 False,返回相应区间元素的个数的直方图。
weights参数:与x形状相同的权重数组;将x中的每个元素乘以对应权重值再计数;如果density取值为True,则会对权重进行归一化处理。
cumulative参数:如果为 True,返回累积直方图;默认为 False,返回累计直方图。
histtype参数:要绘制的直方图类型,默认值为“bar”,可选值有 barstacked(堆叠条形图)、step(未填充的阶梯图)、stepfilled(已填充的阶梯图)。
facecolor:设置长条形颜色关键字。
edgecolor:设置边框的颜色关键字。
bins:设置长条形数目,默认为10。
alpha:设置透明度,默认为0,取值范围为0~1。
直方图hist()函数的应用
bins参数:
import numpy as np
import matplotlib.pyplot as plt
# bins为默认值10。(图一)
fig=plt.figure(figsize=(9,4)) # 画布 #figsize=(9,4):设置画布的大小。
ax=plt.axes() # axes对象,在这子图中画图。
x=np.random.randint(0,10,100)
plt.hist(x)
plt.show()
# bins为指定值4。(图二)
fig=plt.figure(figsize=(9,4)) # 画布 #figsize=(9,4):设置画布的大小。
ax=plt.axes() # axes对象,在这子图中画图。
x=np.random.randint(0,10,100)
plt.hist(x,bins=4) #将数据分成四组
plt.show()
图一:
图二:
range参数:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
plt.hist(x,bins=4,range=(0,6))
plt.show()
range参数的默认值效果图如图二。
图三:
density参数:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
plt.hist(x,bins=4,range=(0,6),density=True)
plt.show()
density参数的默认值如图三。
图四:
weights参数:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1)
plt.show()
weights参数的默认值如图四。
图五:
cumulative参数:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True)
plt.show()
cumulative参数的默认值如图五。
图六:
histtype参数:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True,histtype="barstacked")
plt.show()
histtype参数的默认值如图六。
图七:histtype="barstacked"(堆叠条形图)
图八:histtype="step"(未填充的阶梯图)
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True,histtype="step")
plt.show()
图八:histtype="stepfilled"(已填充的阶梯图)
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True,histtype="stepfilled")
plt.show()
facecolor:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True,
histtype="barstacked",facecolor="red")
plt.show()
facecolor的默认值如图七。
图九:
edgecolor:
fig=plt.figure(figsize=(9,4))
ax=plt.axes()
x =np.random.randint(0,10,100)
ratio=1/sum(x)
x1=x*ratio
plt.hist(x,bins=4,range=(0,6),density=True,weights=x1,cumulative=True,
histtype="barstacked",facecolor="red",edgecolor="b")
plt.show()
edgecolor的默认值如图九。
图十: