pythonmatplotlibseabornlegend

How to put the legend outside the plot


I have a series of 20 plots (not subplots) to be made in a single figure. I want the legend to be outside of the box. At the same time, I do not want to change the axes, as the size of the figure gets reduced.

  1. I want to keep the legend box outside the plot area (I want the legend to be outside at the right side of the plot area).
  2. Is there a way to reduce the font size of the text inside the legend box, so that the size of the legend box will be small?

Solution

  • import matplotlib.pyplot as plt
    from matplotlib.font_manager import FontProperties
    
    fontP = FontProperties()
    fontP.set_size('xx-small')
    
    p1, = plt.plot([1, 2, 3], label='Line 1')
    p2, = plt.plot([3, 2, 1], label='Line 2')
    plt.legend(handles=[p1, p2], title='title', bbox_to_anchor=(1.05, 1), loc='upper left', prop=fontP)
    

    Enter image description here

    plt.legend(handles=[p1, p2], title='title', bbox_to_anchor=(1.05, 1), loc='upper left', fontsize='xx-small')