How to change legend size with matplotlib.pyplot
This should do
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
Then do the plot afterwards.
There are a ton of other rcParams, they can also be set in the matplotlibrc file.
Also presumably you can change it passing a matplotlib.font_manager.FontProperties
instance but this I don't know how to do. --> see Yann's 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
.
using import matplotlib.pyplot as plt
Method 1: specify the fontsize when calling legend (repetitive)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
With this method you can set the fontsize for each legend at creation (allowing you to have multiple legends with different fontsizes). However, you will have to type everything manually each time you create a legend.
(Note: @Mathias711 listed the available named fontsizes in his answer)
Method 2: specify the fontsize in rcParams (convenient)
plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size
With this method you set the default legend fontsize, and all legends will automatically use that unless you specify otherwise using method 1. This means you can set your legend fontsize at the beginning of your code, and not worry about setting it for each individual legend.
If you use a named size e.g. 'medium'
, then the legend text will scale with the global font.size
in rcParams
. To change font.size
use plt.rc(font.size='medium')