甜甜圈图python [英] Donut chart python

查看:305
本文介绍了甜甜圈图python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我使用此代码用python创建了一个甜甜圈图(此甜甜圈图启发了

So I using this code to create a donut chart with python (inspired in this Donut plot recipe):

def make_pie(sizes, text,colors,labels):
    import matplotlib.pyplot as plt
    import numpy as np

    col = [[i/255. for i in c] for c in colors]

    fig, ax = plt.subplots()
    ax.axis('equal')
    width = 0.35
    kwargs = dict(colors=col, startangle=180)
    outside, _ = ax.pie(sizes, radius=1, pctdistance=1-width/2,labels=labels,**kwargs)
    plt.setp( outside, width=width, edgecolor='white')

    kwargs = dict(size=20, fontweight='bold', va='center')
    ax.text(0, 0, text, ha='center', **kwargs)
    plt.show()

c1 = (226,33,7)
c2 = (60,121,189)

make_pie([257,90], "Gender (AR)",[c1,c2],['M','F'])

其结果是:

我的问题是,现在我想要各自的百分比.为此,我只是添加了参数:

My problem is that now I want the respective percentages. For that I was simply adding the argument:

autopct='%1.1f%%'

像这样:

kwargs = dict(colors=col, startangle=180,autopct='%1.1f%%')

但这会导致以下错误:

Traceback (most recent call last):
  File "draw.py", line 30, in <module>
    make_pie([257,90], "Gender (AR)",[c1,c2],['M','F'])
  File "draw.py", line 13, in make_pie
    outside, _ = ax.pie(sizes, radius=1, pctdistance=1-width/2,labels=labels,**kwargs)
ValueError: too many values to unpack

那么,我在做什么错了?

So, what am I doing wrong?

推荐答案

来自文档字符串:

If *autopct* is not *None*, return the tuple (*patches*,
  *texts*, *autotexts*), where *patches* and *texts* are as
  above, and *autotexts* is a list of
  :class:`~matplotlib.text.Text` instances for the numeric
  labels.

因此,如果要使用autopct解压缩pie()的结果,则需要3个值:

So if you want to unpack the result of pie() using autopct you need 3 values:

kwargs = dict(colors=col, startangle=180, autopct='%1.1f%%')
outside, _, _ = ax.pie(sizes, radius=1, pctdistance=1-width/2,
                       labels=labels,**kwargs)

或者在不打开包装的情况下,它可能会更健壮,因此无论是否使用autopct,它都可以使用:

Or maybe it will be more robust without unpacking so it works with or without autopct:

outside = ax.pie(sizes, radius=1, pctdistance=1-width/2,
                 labels=labels,**kwargs)[0]

这篇关于甜甜圈图python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆