In this article, we will see how to put the legend outside the plot.
Let’s discuss some concepts :
- Matplotlib: Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack. It was introduced by John Hunter in the year 2002.
- Legend: A legend is an area describing the elements of the graph. In the Matplotlib library, there’s a function called legend() which is used to Place a legend on the axes. The attribute Loc in legend() is used to specify the location of the legend. The default value of loc is loc= “best” (upper left).
Put the legend outside the plot
As, we can see that the above figure legends overlapped on the graph i.e; incomplete information. To solve this problem we need to place the legend outside the plot.
The syntax to set the legend outside is as given below:
matplotlib.pyplot.legend(bbox_to_anchor=(x,y))
Example 1:
Matplotlib set legend upper-left outside the plot.
Python3
import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) plt.plot(x, np.sin(x), label = "sin(x)" ) plt.plot(x, np.cos(x), label = "cos(x)" ) plt.legend(bbox_to_anchor = ( 1.05 , 1.0 ), loc = 'upper left' ) plt.tight_layout() plt.show() |
Output :
Example 2:
Matplotlib set legend center-left outside the plot.
Python3
import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) plt.plot(x, np.sin(x), label = "sin(x)" ) plt.plot(x, np.cos(x), label = "cos(x)" ) plt.legend(bbox_to_anchor = ( 1.25 , 0.6 ), loc = 'center right' ) plt.tight_layout() plt.show() |
Output:
Example 3:
Matplotlib set legend lower-right outside the plot.
Python3
import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) plt.plot(x, np.sin(x), label = "sin(x)" ) plt.plot(x, np.cos(x), label = "cos(x)" ) plt.legend(bbox_to_anchor = ( 1.44 , - 0.10 ), loc = 'lower right' ) plt.tight_layout() plt.show() |
Output:
Example 4:
Matplotlib set legend upper-center outside the plot.
Python3
import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) plt.plot(x, np.sin(x), label = "sin(x)" ) plt.plot(x, np.cos(x), label = "cos(x)" ) plt.legend(bbox_to_anchor = ( 0.5 , 1.2 ), loc = 'upper center' ) plt.tight_layout() plt.show() |
Output :
Example 5:
Matplotlib set legend lower-center outside the plot
Python3
import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) plt.plot(x, np.sin(x), label = "sin(x)" ) plt.plot(x, np.cos(x), label = "cos(x)" ) plt.legend(bbox_to_anchor = ( 0.5 , - 0.27 ), loc = 'lower center' ) plt.tight_layout() plt.show() |
Example 6:
Place with subplots Legend Outside of the Plot
Python3
# importing packages import numpy as np import matplotlib.pyplot as plt # create data x = np.linspace( - 5 , 5 , 1000 ) colors = [[ 'c' , 'g' ], [ 'y' , 'r' ]] # make subplot and plots the graphs fig, ax = plt.subplots( 2 , 2 ) for i in range ( 2 ): ax[ 0 ][i].plot(x, np.sin(x + i), color = colors[ 0 ][i], label = "y=sin(x+{})" . format (i)) ax[ 1 ][i].plot(x, np.sin(x + i), color = colors[ 1 ][i], label = "y=sin(x+{})" . format (i)) # set legend position fig.legend(bbox_to_anchor = ( 1.3 , 0.6 )) # set spacing to subplots fig.tight_layout() plt.show() |
Output :