我有以下代碼給出的餅圖
import matplotlib.pyplot as plt
colorPalette=["#61412B","#DCC57D","#D57838","#FFCE33"]
fig, (ax1,ax2)=plt.subplots(1,2,figsize=(10,10))
labels=["Small","Mid","Large"]
values=[.258,.284,.458]
ax1.pie(values,labels=labels,explode=[0.01,0.01,0.01],colors=colorPalette,autopct='%1.1f%%')
labels=["Market Peg","Primary Peg (Passive)","Limit","MidPoint Peg"]
values=[.027,.09,.35,.534]
ax2.pie(values,labels=labels,explode=[0.01,0.01,0.01,0.01],colors=colorPalette,autopct='%1.1f%%')

我注意到我在第二個圖上的輸入值 53.4% 被推到了 53.3%。有沒有辦法覆寫它并仍然顯示 53.4,即使它增加了超過 100%?
uj5u.com熱心網友回復:
您實際上可以將標簽重新定義為您想要的任何內容:
import matplotlib.pyplot as plt
colorPalette=["#61412B","#DCC57D","#D57838","#FFCE33"]
fig, (ax1,ax2)=plt.subplots(1,2,figsize=(10,10))
labels=["Small","Mid","Large"]
values=[.258,.284,.458]
ax1.pie(values,labels=labels,explode=[0.01,0.01,0.01],colors=colorPalette,autopct='%1.1f%%')
labels=["Market Peg","Primary Peg (Passive)","Limit","MidPoint Peg"]
values=[.027,.09,.35,.534]
l = ax2.pie(values,labels=labels,explode=[0.01,0.01,0.01,0.01],colors=colorPalette,autopct='%1.1f%%')
# get the Text object and change the text
l[2][-1].set_text('95.3%')
輸出:

這個怎么運作
pie 回傳一個包含圖的一些元素的串列:楔形、外部標簽和內部標簽(我們想要的標簽)。
>>> l
([<matplotlib.patches.Wedge at 0x7f709a12e130>,
<matplotlib.patches.Wedge at 0x7f709a12e850>,
<matplotlib.patches.Wedge at 0x7f709a12eee0>,
<matplotlib.patches.Wedge at 0x7f709a13a5b0>],
[Text(1.1060171651625381, 0.09394695506413589, 'Market Peg'),
Text(0.9985589871945, 0.4847473043690852, 'Primary Peg (Passive)'),
Text(-0.2875697258635596, 1.0721024450894407, 'Limit'),
Text(-0.11648807636083792, -1.1038707026032315, 'MidPoint Peg')],
[Text(0.6078112349091426, 0.051628506837047644, '2.7%'),
Text(0.5487576416113918, 0.2663926627613891, '9.0%'),
Text(-0.1580338133124066, 0.5891734157698728, '35.0%'),
Text(-0.064015969891992, -0.6066316473765505, '53.4%')])
uj5u.com熱心網友回復:
作為一個很好的做法,餅圖數字加起來應該是100%。餅圖旨在顯示整體的一部分,因此任何低于或高于 100% 的總和都不代表整個圖片。
實際上,您可以通過在 autopct 中傳遞函式來添加百分比旁邊的實際值。這樣就不需要操縱百分比。
如果你真的想改變百分比,你可以create_autopct通過改變pct值來修改函式來做同樣的事情
import matplotlib.pyplot as plt
def autopct(values):
def create_autopct(pct):
total = sum(values)
val = pct*total/100.0
# pct = 50.0 -> calculate and update your value
# return f'{pct:.1f}%)'
return f'{pct:.1f}% ({val:g})'
return create_autopct
colorPalette=["#61412B","#DCC57D","#D57838","#FFCE33"]
fig, (ax1,ax2)=plt.subplots(1,2,figsize=(10,10))
labels=["Small","Mid","Large"]
values=[.258,.284,.458]
ax1.pie(values,labels=labels,explode=[0.01,0.01,0.01],colors=colorPalette,autopct='%1.1f%%')
labels=["Market Peg","Primary Peg (Passive)","Limit","MidPoint Peg"]
values=[.027,.09,.35,.534]
ax2.pie(values,labels=labels,explode=[0.01,0.01,0.01,0.01],colors=colorPalette,autopct=autopct(values))
輸出圖表
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364273.html
標籤:Python matplotlib 饼形图
上一篇:向散點圖添加注釋-不起作用
