📅  最后修改于: 2023-12-03 15:17:35.281000             🧑  作者: Mango
堆叠百分比条形图(Stacked Percentage Bar Chart)是一种常见的数据可视化方式,可以用于展示多个类别的数据在总量中的占比情况。
Matplotlib是Python中常用的数据可视化库,它提供了多种绘制堆叠百分比条形图的函数。
使用Matplotlib绘制堆叠百分比条形图,需要先准备好数据和类别。下面是一个简单的例子:
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D', 'E']
data = [[0.2, 0.3, 0.1, 0.15, 0.25],
[0.25, 0.2, 0.15, 0.1, 0.3],
[0.15, 0.25, 0.2, 0.25, 0.15]]
fig, ax = plt.subplots()
ax.bar(categories, data[0], color='r')
ax.bar(categories, data[1], bottom=data[0], color='g')
ax.bar(categories, data[2], bottom=[i + j for i, j in zip(data[0], data[1])], color='b')
plt.show()
上述代码中,categories
表示类别,data
表示类别中每个数据的占比,三个列表分别表示三个类别的数据。绘制堆叠百分比条形图的代码是通过多次调用ax.bar
函数实现的。其中,第一个ax.bar
表示绘制第一个类别的数据,第二个ax.bar
表示绘制第二个类别的数据,bottom参数表示这些数据的基准值是什么,第三个ax.bar
表示绘制第三个类别的数据,bottom参数的计算使用了zip函数和列表推导式。
运行代码,可以得到如下的结果:
在实际应用中,堆叠百分比条形图还可以结合其他的Matplotlib特性,实现更加丰富的数据可视化效果。下面是一个进阶用法的例子:
import numpy as np
import matplotlib.pyplot as plt
N = 5
F = [0.2, 0.3, 0.1, 0.15, 0.25]
M = [0.25, 0.2, 0.15, 0.1, 0.3]
ind = np.arange(N)
width = 0.35
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.bar(ind, F, width, color='r')
ax1.bar(ind, M, width, bottom=F, color='b')
ax1.set_ylabel('Female')
ax2.set_ylabel('Male')
plt.xticks(ind, ('A', 'B', 'C', 'D', 'E'))
plt.show()
上述代码中,使用了NumPy生成了一些随机数据,绘制堆叠百分比条形图的代码通过调用ax.bar
函数实现。值得注意的是,这个例子还使用了双Y轴绘图的特性,让第一个类别的数据使用左侧的Y轴绘制,第二个类别的数据使用右侧的Y轴绘制。
运行代码,可以得到如下的结果:
通过Matplotlib提供的绘制堆叠百分比条形图的函数,我们可以很方便地对数据进行可视化处理。除了基本用法,我们还可以结合其他Matplotlib的特性,实现更加丰富的数据可视化效果,方便地探索数据的内在关系。