Title for matplotlib legend

I know it seems fairly redundant to have a title for a legend, but is it possible using matplotlib?

Here's a snippet of the code I have:

import matplotlib.patches as mpatches import matplotlib.pyplot as plt one = mpatches.Patch(facecolor='#f3f300', label='label1', linewidth = 0.5, edgecolor = 'black') two = mpatches.Patch(facecolor='#ff9700', label = 'label2', linewidth = 0.5, edgecolor = 'black') three = mpatches.Patch(facecolor='#ff0000', label = 'label3', linewidth = 0.5, edgecolor = 'black') legend = plt.legend(handles=[one, two, three], loc = 4, fontsize = 'small', fancybox = True) frame = legend.get_frame() #sets up for color, edge, and transparency frame.set_facecolor('#b4aeae') #color of legend frame.set_edgecolor('black') #edge color of legend frame.set_alpha(1) #deals with transparency plt.show() 

I would want the title of the legend above label1. For reference, this is the output: Showing legend

3

3 Answers

Add the title parameter to the this line:

legend = plt.legend(handles=[one, two, three], title="title", loc=4, fontsize='small', fancybox=True) 

See also the official docs for the legend constructor.

1

Just to add to the accepted answer that this also works with an Axes object.

fig, ax = plt.subplots() ax.plot([0, 1, 2], [0, 1, 4], label='some_label') # Or however the Axes was created. ax.legend(title='This is My Legend Title') 
0

In case you have an already created legend, you can modify its title with set_title(). For the first answer:

legend = plt.legend(handles=[one, two, three], loc=4, fontsize='small', fancybox=True) legend.set_title("title") # plt.gca().get_legend().set_title() if you didn't store the # legend in an object or you're loading a saved figure. 

For the second answer based on Axes:

fig, ax = plt.subplots() ax.plot([0, 1, 2], [0, 1, 4], label='some_label') # Or however the Axes was created. ax.legend() ax.get_legend().set_title("title") 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like