Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set the labels size on a pie chart in python

I want to have labels with small size on a piechart in python to improve visibility here is the code

import matplotlib.pyplot as plt  frac=[1.40 , 10.86 , 19.31 , 4.02 , 1.43 , 2.66 , 4.70 , 0.70 , 0.13 , 1.48, 32.96 , 1.11 , 13.30 , 5.86] labels=['HO0900344', 'HO0900331', 'HO0900332', 'HO0900354',  'HO0900358', 'HO0900374', 'HO0900372', 'HO0900373',  'HO0900371', 'HO0900370', 'HO0900369', 'HO0900356',  'HO0900353', 'HO0900343']  fig = plt.figure(1, figsize=(6,6)) ax = fig.add_subplot(111) ax.axis('equal') colors=('b', 'g', 'r', 'c', 'm', 'y', 'burlywood', 'w') ax.pie(frac,colors=colors ,labels=labels, autopct='%1.1f%%') plt.show() 

Thanks and cheers

like image 525
Piccolo Avatar asked Aug 16 '11 17:08

Piccolo


People also ask

How do you change the size of a pie chart in Python?

To increase the size of the pie chart, we pass figsize parameter to the figure() method of pyplot.

How do you change the font size of labels in a pie chart?

To change the text font for any chart element, such as a title or axis, right–click the element, and then click Font.


2 Answers

The simplest way to change the font size on a pie chart is directly via the textprops argument in the pie() function. Using the code above add it like so:

ax.pie(frac, colors=colors ,labels=labels,         autopct='%1.1f%%', textprops={'fontsize': 14}) 

That way you can just pass in a dictionary with your desired fontsize (e.g., 14). No messing around with rcParams or return values from the function call.

like image 164
TheMuellenator Avatar answered Sep 23 '22 05:09

TheMuellenator


There are a couple of ways you can change the font size of the labels.

You can dynamically changet the rc settings. Add the following at the top of your script:

import matplotlib as mpl mpl.rcParams['font.size'] = 9.0 

Or you can modify the labels after they have been created. When you call ax.pie it returns a tuple of (patches, texts, autotexts). As an example, modify your final few lines of code as follows:

patches, texts, autotexts = ax.pie(frac, colors=colors, labels=labels, autopct='%1.1f%%') texts[0].set_fontsize(4) plt.show() 
like image 37
Gary Kerr Avatar answered Sep 23 '22 05:09

Gary Kerr