【问题标题】:How to show all categories in legend in pie chart with matplotlib python如何使用matplotlib python在饼图中显示图例中的所有类别
【发布时间】:2020-08-23 18:26:58
【问题描述】:

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

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)。我尝试了上面的代码,但它现在可以工作了。想知道哪里出错了?

【问题讨论】:

    标签: python matplotlib pie-chart


    【解决方案1】:

    来自 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')
    

    【讨论】:

    • 您好,谢谢。我通过 '''age_count = df.iloc[:,3].replace(0,' ')''' 尝试了这个。我给了我ValueError:无法将字符串转换为浮点数。此外,我正在查看显示百分比值,如果它不为零,有没有办法做到这一点?
    • 如果您可以分享作为您的一部分质疑最小可重现代码,它将更容易帮助您。这意味着产生问题的数据(假设是 5 行 Datafeame 而不是整个事情)
    • 您好。我已经编辑了我的问题以使其清楚。谢谢
    • 欢迎,如果我的回答有用,我将不胜感激您会接受并投票。
    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2012-10-29
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多