mike mike - 2 months ago 66
Python Question

How to change legend size with matplotlib.pyplot

Simple question here: I'm just trying to get the size of my legend using matplotlib.pyplot to be smaller (ie, the text to be smaller). The code I'm using goes something like this:

plot.figure()
plot.scatter(k,sum_cf, color = 'black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0], color = 'b', label = 'Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1], color = 'r', label = 'Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2], color = 'g', label = 'Dis 3: cf = .1, var = .01')
plot.legend(loc=2)

Answer

You can set an individual font size for the legend by adjusting the 'prop' keyword.

plot.legend(loc=2,prop={'size':6})

This takes a dictionary of keywords corresponding to matplotlib.font_manager.FontProperties properties. See the documentation for legend:

Keyword arguments:

prop: [ None | FontProperties | dict ]
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use
    rc settings.

It is also possible, as of version 1.2.1, to use the keyword fontsize.