直方图主要是应用在定量数据的可视化场景中,后者用来进行连续型数据的可视化展示。比如公共英语考试分数的区间分布、抽样调查中的人均寿命的分布特征以及居民可支配收入的分布特征。
1.绘制原理
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
# set test scores
scoresT = np.random.randint(0,100,100)
x = scoresT
# plot histogram
bins = range(0,101,10)
plt.hist(x,bins=bins,
color="#377eb8",
histtype="bar",
rwidth=1.0,
edgecolor="#000000")
# set x,y-axis label
plt.xlabel("测试成绩")
plt.ylabel("学生人数")
plt.show()
plt.hist(x,bins=bins,
color="#377eb8",
histtype="bar",
rwidth=1.0,
edgecolor="#000000")
x:连续型数据输入值
bins:用于确定柱体的个数或是柱体边缘范围
color:柱体颜色
histype:柱体类型
label:图例内容
rwidth:柱体的相对宽度,取值范围是[0.0,1.0]
2.柱状图和直方图的关系
一、直方图描述的是连续型数据的分布,柱状图描述的是离散型数据的分布,也可以说一个是描述定量数据,一个是描述定性数据。
二、从展示效果来看,柱状图的柱体之间有空隙,直方图的柱体之间没有空隙。
3.堆积直方图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
# set test scores
scoresT1 = np.random.randint(0,100,100)
scoresT2 = np.random.randint(0,100,100)
x = [scoresT1,scoresT2]
colors = ["#8dd3c7","#bebada"]
labels = ["班级A","班级B"]
# plot histogram
bins = range(0,101,10)
plt.hist(x,bins=bins,
color=colors,
histtype="bar",
rwidth=1.0,
stacked=True,
label=labels,
edgecolor="#000000")
# set x,y-axis label
plt.xlabel("测试成绩")
plt.ylabel("学生人数")
plt.title("不同班级的测试成绩的直方图")
plt.legend(loc="upper left")
plt.show()
通过向函数hist()传递关键字参数stacked来实现堆积直方图的绘制任务。通过绘制堆积直方图,就可以直观的观察两个班级学生在测试中考试成绩分布特点和知识掌握情况的差异。如果不绘制堆积直方图,可以通过绘制并排放置的直方图,即“stacked=False”。
```python
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
# set test scores
scoresT1 = np.random.randint(0,100,100)
scoresT2 = np.random.randint(0,100,100)
x = [scoresT1,scoresT2]
colors = ["#8dd3c7","#bebada"]
labels = ["班级A","班级B"]
# plot histogram
bins = range(0,101,10)
plt.hist(x,bins=bins,
color=colors,
histtype="bar",
rwidth=0.8,
stacked=False,
label=labels,
edgecolor="#000000")
# set x,y-axis label
plt.xlabel("测试成绩")
plt.ylabel("学生人数")
plt.title("不同班级的测试成绩的直方图")
plt.legend(loc="upper left")
plt.show()

# 4.直方图的不同形状——堆积阶梯型直方图
```python
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
# set test scores
scoresT1 = np.random.randint(0,100,100)
scoresT2 = np.random.randint(0,100,100)
x = [scoresT1,scoresT2]
colors = ["#8dd3c7","#bebada"]
labels = ["班级A","班级B"]
# plot histogram
bins = range(0,101,10)
plt.hist(x,bins=bins,
color=colors,
histtype="stepfilled",
rwidth=0.8,
stacked=True,
label=labels,)
# set x,y-axis label
plt.xlabel("测试成绩")
plt.ylabel("学生人数")
plt.title("不同班级的测试成绩的直方图")
plt.legend()
plt.show()