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

2024-09-30 14:21:48 发布

您现在位置: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)。我尝试了上面的代码,但它现在正在工作。想知道哪里出了问题吗


Tags: 代码agelabelscountplt类别belowsizes
1条回答
网友
1楼 · 发布于 2024-09-30 14:21:48

从matplotlib.pyplot.pie文档:

“自动ct None或str或callable,默认值:None

如果不是“无”,则是一个字符串或函数,用于用楔块的数值标记楔块。标签将放置在楔块内部。如果是格式字符串,标签将为fmt%pct。如果是函数,则将调用它。”

通过向AutoCT传递函数,可以指定特定的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')

enter image description here

相关问题 更多 >