Position Legends in Seaborn

14 October 2020

import pandas as pd
import seaborn as sns

DATA_PATH = '../input/iris/Iris.csv'

df = pd.read_csv(DATA_PATH)

df.head(1)
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa

When working with Python and Seaborn (sns) it's common to have plots in which the legend overlaps the plot content, we can see this issue in the below code output:

g = sns.scatterplot(x = 'SepalWidthCm', y = 'SepalLengthCm', hue = 'Species', data = df)
<Figure size 432x288 with 1 Axes>

Using the g.legend function of a graph we are able to move the legend to a more suitable location

g = sns.scatterplot(x = 'SepalWidthCm', y = 'SepalLengthCm', hue = 'Species', data = df)
g.legend(loc = 'center left', bbox_to_anchor = (1, 0.5), ncol = 1)
<matplotlib.legend.Legend at 0x7fc2034acb10>
<Figure size 432x288 with 1 Axes>

You can find out more about how the legend function works in the Matplotlib Docs, and you can find an interactive version of this notebook on Kaggle