好的matplotlib爱好者,我们知道如何绘制donut chart,但是有什么比甜甜圈图更好的呢?双圆环图。具体来说:我们有一组元素属于第一类的不相交的类别和子类别。甜甜圈图应具有外圈类别的切片和内圈子类别的切片,显然与外切片对齐。

是否有提供此功能的库,还是我们需要在此处解决?

python - matplotlib中的双甜甜圈图-LMLPHP

最佳答案

要获得双甜甜圈图,您可以在同一图中绘制任意数量的饼图。因此,外部饼图的楔形将设置width,内部饼图的半径将小于或等于1-width

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.axis('equal')
width = 0.3

cm = plt.get_cmap("tab20c")
cout = cm(np.arange(3)*4)
pie, _ = ax.pie([120,77,39], radius=1, labels=list("ABC"), colors=cout)
plt.setp( pie, width=width, edgecolor='white')

cin = cm(np.array([1,2,5,6,9,10]))
labels = list(map("".join, zip(list("aabbcc"),map(str, [1,2]*3))))
pie2, _ = ax.pie([60,60,37,40,29,10], radius=1-width, labels=labels,
                                      labeldistance=0.7, colors=cin)
plt.setp( pie2, width=width, edgecolor='white')
plt.show()

python - matplotlib中的双甜甜圈图-LMLPHP

注意:我还在matplotlib画廊中以nested pie example的形式提供了此代码。

10-06 07:03