Hide legend from seaborn pairplot

57,651

Solution 1

You need to return the Seabron Pairgrid object when you use pairplot and then you can access the legend of the Pairgrid using ._legend. Then simply call remove():

import seaborn as sns

test = pd.DataFrame({
    'id': ['1','2','1','2','2','6','7','7','6','6'],
    'x': [123,22,356,412,54,634,72,812,129,110],
    'y':[120,12,35,41,45,63,17,91,112,151]})

g = sns.pairplot(x_vars='x', y_vars="y", data=test, hue = 'id', height = 3)
g._legend.remove()

enter image description here

Solution 2

Since _legend.remove() method won't work on some other seaborn plots, what about:

plt.legend([],[], frameon=False)

Solution 3

If you want to remove legends on all subplots, you can use the following code.

fig, axes = plt.subplots(2,5)

# ...

for ax in axes:
    ax.legend([],[], frameon=False)
Share:
57,651
aviss
Author by

aviss

Updated on January 13, 2021

Comments

  • aviss
    aviss over 3 years

    I would like to hide the Seaborn pairplot legend. The official docs don't mention a keyword legend. Everything I tried using plt.legend didn't work. Please suggest the best way forward. Thanks!

    import matplotlib.pyplot as plt
    import seaborn as sns
    %matplotlib inline
    
    test = pd.DataFrame({
        'id': ['1','2','1','2','2','6','7','7','6','6'],
        'x': [123,22,356,412,54,634,72,812,129,110],
        'y':[120,12,35,41,45,63,17,91,112,151]})
    sns.pairplot(x_vars='x', y_vars="y", 
                     data=test,
                     hue = 'id', 
                     height = 3)