圆环图 python
Donut chart python
所以我使用这段代码创建了一个带 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
所以,我做错了什么?
来自文档字符串:
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]
所以我使用这段代码创建了一个带 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
所以,我做错了什么?
来自文档字符串:
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]