I have created a pie chart using matplotlib below:
import matplotlib.pyplot as plt
labels = ['dogs','cats','birds','fish']
sizes = [34, 24,18,13]
pie = plt.pie(sizes,autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.legend( loc = 'right', labels=labels)
plt.show()
Instead of having the percentages on the pie slices, is there a way to put these percentages within the legend so that the legend reads:
dogs, 34%
cats, 24%
birds, 18%
fish, 13%
I know I can just change the "labels" to read the above as the fastest and most elegant way, but what if you do not know "sizes" until after the code is ran?
I assume by the time you draw the legend, you should know sizes
. Something like this would do it:
# use a list comprehension to update the labels
labels = [f'{l}, {s:0.1f}%' for l, s in zip(labels, sizes)]
plt.legend(bbox_to_anchor=(0.85, 1), loc='upper left', labels=labels)
labels = ['%s, %1.1f %%' % (l, s) for l, s in zip(labels, sizes)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With