'Matplotlib pie chart: Show both value and percentage
Here's my current code
values = pd.Series([False, False, True, True])
v_counts = values.value_counts()
fig = plt.figure()
plt.pie(v_counts, labels=v_counts.index, autopct='%.4f', shadow=True);
Currently, it shows only the percentage (using autopct)
I'd like to present both the percentage and the actual value (I don't mind about the position)
How to do it?
Thanks
Solution 1:[1]
Create your own formatting function. Note that you have to recalculate the actual value from the percentage in that function somehow
def my_fmt(x):
print(x)
return '{:.4f}%\n({:.0f})'.format(x, total*x/100)
values = pd.Series([False, False, True, True, True, True])
v_counts = values.value_counts()
total = len(values)
fig = plt.figure()
plt.pie(v_counts, labels=v_counts.index, autopct=my_fmt, shadow=True);
Solution 2:[2]
Theed Diziet' s code didn't work for me, instead you can use:
def autopct_format(values):
def my_format(pct):
total = sum(values)
val = int(round(pct*total/100.0))
return '{:.1f}%\n({v:d})'.format(pct, v=val)
return my_format
plt.pie(mydata,labels = mylabels, autopct=autopct_format(mydata))
And here is my output:
Note: if you want more decimals, just change the number in the return of my_format(pct)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Diziet Asahi |
| Solution 2 | Santiago DomÃnguez Collado |


