如何使用matplotlib在饼图中显示图例中的所有类别python

How to show all categories in legend in pie chart with matplotlib python

您好,我正在尝试绘制图表,但在显示图例时遇到了一些困难。下面是我的代码:

age = ['below 20', '20-30', '30-40', '40-50']


age_count = [23,0,35,0]


labels = age
sizes = age_count

fig1, ax1 = plt.subplots()

ax1.pie(sizes, autopct='%1.1f%%',
        shadow=True, startangle=90)

ax1.legend(labels,bbox_to_anchor=(1, 0),loc='lower left')

我不想在饼图中显示计数为零的类别。我仍然想在图例中显示所有类别名称(即 20-30,40-50)。我尝试了上面的代码,但它现在可以工作了。想知道哪里出错了?

来自 matplotlib.pyplot.pie 文档:

"autopct None or str or callable, default: None

如果不是 None,则为字符串或函数,用于用数值标记楔形。标签将放置在楔形内。如果它是格式字符串,标签将是 fmt % pct。如果是函数,就会调用。"

您可以通过将函数传递给 autopct 来指定特定的 bihavier,如下所示:

import matplotlib.pyplot as plt
age = ['below 20', '20-30', '30-40', '40-50']
age_count = [23,0,35,0]

def f(cpt):
    if cpt == 0:
        return ''
    else:
        return  '%.2f' %cpt

fig1, ax1 = plt.subplots()
ax1.pie(age_count, autopct=f,
        shadow=True, startangle=90)
ax1.legend(age,bbox_to_anchor=(1, 0),loc='lower left')