# Place Legend Outside the Plot in Matplotlib

Legend could be placed outside the plot in the Matplotlib by using `bbox_to_anchor`. `bbox` means `bounding box` that accommodates the legend. `bbox_to_anchor` specifies the legend box’s location.

``````plt.legend(bbox_to_anchor=(1.05, 1))
``````

It places the legend at location `(1.05, 1)` in the axes coordinate. `(0, 0)` is the lower-left corner, and `(1.0, 1.0)` is the upper right corner of the axes coordinate.

The actual size and location of the legend bounding box are defined with the 4-tuple parameter of `bbox_to_anchor` and `loc` in the `plt.legend`.

``````plt.legend(bbox_to_anchor=(x0, y0, width, height), loc=)
``````

`width` and `height` are the width and the height of the legend box, and `(x0, y0)` is the coordinate of the `loc` of the bounding box.

The value of `loc` could be a number or string that has the relationship as below,

Loc Number Loc String
0 `best`
1 `upper right`
2 `upper left`
3 `lower left`
4 `lower right`
5 `right`
6 `center left`
7 `center right`
8 `lower center`
9 `upper center`
10 `center`
``````plt.legend(bbox_to_anchor=(1.05, 1.0, 0.3, 0.2), loc='upper left')
``````

The above code means the legend box is positioned at the axes coordinate `(1.05, 1.0)` that has the width of `0.3` and the height of `0.2`, where `(1.05, 1.0)` is the coordinate of the upper left corner of the legend bounding box.

## `bbox_to_anchor` Example

``````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()
`````` `plt.tight_layout()` makes subplots nicely fit in the figure.

The legend box would be cropped if `tight_layout()` is not called. ## `bbox_extra_artists` and `bbox_inches` to Prevent Legend Box From Being Cropped

``````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)")

lg = plt.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left')

plt.savefig('example.png',
dpi=300,
format='png',
bbox_extra_artists=(lg,),
bbox_inches='tight')
``````

`bbox_extra_artists` specifies the list of `Artist` that will be taken into consideration when it calculates the tight bbox.

If the `bbox_inches` is set to be `tight`, it will figure out the tight bbox of the figure.

Contribute
DelftStack is a collective effort contributed by software geeks like you. If you like the article and would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

## Related Article - Matplotlib Legend

• Matplotlib Legend Title