8

I'm trying to change the font size of the title of an existing legend on a rose, or 'polar', plot. Most of the code was written by somebody else, who is away. I've added:-

ax.legend(title=legend_title)
setp(l.get_title(), fontsize=8)

to add the title 'legend_title', which is a variable that the user enters a string for in a a different function that uses this code. The second line of this doesn't return an error but doesn't appear to do anything either. The complete code is below. 'Rose' and 'RoseAxes' are modules/functions written by somebody. Does anyone know of a way to change the legend title font size? I've found some examples for normal plots but can't find any for rose/polar plots.

from Rose.RoseAxes import RoseAxes
from pylab import figure, title, setp, close, clf
from PlotGeneration import color_map_xml

fig = figure(1)
rect = [0.02, 0.1, 0.8, 0.8]
ax = RoseAxes(fig, rect, axisbg='w')
fig.add_axes(ax)
if cmap == None:
    (XMLcmap,colors) = color_map_xml.get_cmap('D:/HRW/VET/HrwPyLibs/ColorMapLibrary/paired.xml',255)
else:
    XMLcmap = cmap

bqs = kwargs.pop('CTfigname', None)
ax.box(Dir, U, bins = rose_binX, units = unit, nsector = nsector, cmap = XMLcmap, lw = 0, **kwargs )

l = ax.legend()
ax.legend(title=legend_title)
setp(l.get_texts(), fontsize=8)
setp(l.get_title(), fontsize=8)

Thanks for any help

LaurieW
  • 171
  • 1
  • 2
  • 6
  • 2
    For anyone interested, here's what we changed it to to make it work:l= ax.legend(title=legend_title) setp(l.get_texts(), fontsize=12) setp(l.get_title(), fontsize=12) – LaurieW Jun 15 '12 at 13:52

3 Answers3

11

quick way to adjust font sizes in legend and legend title:

import numpy as np
import pylab as plt

f,ax = plt.subplots()
x = np.arange(10)
y = np.sin(x)
ax.plot(x,y, label = 'sin')

leg = ax.legend(fontsize = 'large')
leg.set_title("title", prop = {'size':'x-large'})

f.show()
Hagne
  • 8,470
  • 2
  • 18
  • 17
4

There's a similar question here: How to set font size of Matplotlib axis Legend?

I manage to change the title's font size of the title using the second answer, which I found to be the simplest one. You can also change the color title and other properties. I got the following code:

leg=legend((x3, x4,),shadow=False, loc=loca,title=labelE,prop={'size':8})
leg.draw_frame(False)
ax111.get_legend().get_title().set_fontsize('36')
ax111.yaxis.set_tick_params(labelsize=10)

My guess is that it is possible be to change any title property replacing the set_fontsize('#') to other parameter as listed here:

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.legend

Community
  • 1
  • 1
Hugo
  • 1,366
  • 1
  • 9
  • 8
4

The pyplot api accepts a title_fontsize parameter for pyplot.legend().

songololo
  • 4,724
  • 5
  • 35
  • 49