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