下面的示例演示了在Matplotlib中构建嵌套饼图的两种方法,这种图表通常被称为甜甜圈图表。
构建饼图最直接的方法是使用 pie() 方法,在这种情况下,pie接受与组中的计数相对应的值。我们将首先生成一些伪数据,对应于三个组。在内环中,我们将把每个数字视为属于它自己的组。在外环中,我们将把它们标为原来3个组的成员。甜甜圈形状的效果是通过 wedgeprops 参数设置饼的楔形宽度来实现的。
cmap = plt.get_cmap("tab20c") # matplotlib中颜色
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
size = 0.3 # 环厚度
vals = np.array([[60., 32.], [37., 40.], [29., 10.]]) # 列表转数组
# [[60., 32.], [37., 40.], [29., 10.]] 元素中的值为内层比例,元素中值的和为外层数值
cmap = plt.get_cmap("tab20c")
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))
# 外层的环
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
wedgeprops=dict(width=size, edgecolor='w'))
# 内层的环
ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
wedgeprops=dict(width=size, edgecolor='w'))
ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()
# edgecolor='w' 边界白色
# wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
# aspect="equal" 圆形