autopct
使您能够使用Python字符串格式显示百分比值。例如,如果为autopct='%.2f'
,则对于每个饼形楔,格式字符串为'%.2f'
,并且该楔的数值百分比值为pct
,因此楔形标签设置为字符串'%.2f'%pct
。
import matplotlib.pyplot as plt
plt.figure()
values = [3, 12, 5, 8]
labels = ['a', 'b', 'c', 'd']
plt.pie(values, labels=labels, autopct='%.2f')
plt.show()
产生
可以通过提供一个可以调用到autopct
做票友的事情。同时显示百分比值和原始值,你可以这样做:
import matplotlib.pyplot as plt
# make the pie circular by setting the aspect ratio to 1
plt.figure(figsize=plt.figaspect(1))
values = [3, 12, 5, 8]
labels = ['a', 'b', 'c', 'd']
def make_autopct(values):
def my_autopct(pct):
total = sum(values)
val = int(round(pct*total/100.0))
return '{p:.2f}% ({v:d})'.format(p=pct,v=val)
return my_autopct
plt.pie(values, labels=labels, autopct=make_autopct(values))
plt.show()
同样,每个馅饼楔形,matplotlib提供的百分比值pct
作为参数,不过这一次却是作为参数发送给函数my_autopct
。楔形标签设置为my_autopct(pct)
。
太好了。现在已经很清楚了。非常感谢你的回答。 – Kim 2011-05-29 21:11:05
如何为定制autopct函数提供参数?即,如果您想将变量'values'发送到'my_autopct'。 – cosmosa 2015-07-13 22:40:10
@ cosmos1990:'plt.pie'预计'autopct'函数是一个 变量的函数,百分比值'pct'。但是,您可以[关闭](http://effbot.org/zone/closure.htm) - “可以引用不再活动的环境的函数”。我已经编辑了上面的帖子来展示如何。现在'values'被传递给'make_autopct','make_autopct(values)'返回闭包*'my_autopct'。当调用my_autopct时,它会在'make_autopct'的[封闭范围](http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules)中查找'values'。 – unutbu 2015-07-13 23:45:57