下面的示例演示了在Matplotlib中构建嵌套饼图的两种方法,这种图表通常被称为甜甜圈图表。
    构建饼图最直接的方法是使用 pie() 方法,在这种情况下,pie接受与组中的计数相对应的值。我们将首先生成一些伪数据,对应于三个组。在内环中,我们将把每个数字视为属于它自己的组。在外环中,我们将把它们标为原来3个组的成员。甜甜圈形状的效果是通过 wedgeprops 参数设置饼的楔形宽度来实现的。

    1. cmap = plt.get_cmap("tab20c") # matplotlib中颜色

    嵌套饼图Nested pie charts - 图1

    1. import matplotlib.pyplot as plt
    2. import numpy as np
    3. fig, ax = plt.subplots()
    4. size = 0.3 # 环厚度
    5. vals = np.array([[60., 32.], [37., 40.], [29., 10.]]) # 列表转数组
    6. # [[60., 32.], [37., 40.], [29., 10.]] 元素中的值为内层比例,元素中值的和为外层数值
    7. cmap = plt.get_cmap("tab20c")
    8. outer_colors = cmap(np.arange(3)*4)
    9. inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))
    10. # 外层的环
    11. ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
    12. wedgeprops=dict(width=size, edgecolor='w'))
    13. # 内层的环
    14. ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
    15. wedgeprops=dict(width=size, edgecolor='w'))
    16. ax.set(aspect="equal", title='Pie plot with `ax.pie`')
    17. plt.show()
    18. # edgecolor='w' 边界白色
    19. # wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
    20. # aspect="equal" 圆形

    image.png