【问题标题】:Donut chart python甜甜圈图python
【发布时间】:2016-03-30 07:04:28
【问题描述】:

所以我使用这段代码用python创建了一个甜甜圈图(灵感来自这个甜甜圈图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'])

导致:

我的问题是现在我想要相应的百分比。为此,我只是添加了参数:

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

那么,我做错了什么?

【问题讨论】:

    标签: python matplotlib pie-chart


    【解决方案1】:

    来自文档字符串:

    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 个值:

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

    或者,如果不拆包,它可能会更健壮,因此无论有没有autopct,它都可以工作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多