隐藏seaborn pairplot的传说

Posted

技术标签:

【中文标题】隐藏seaborn pairplot的传说【英文标题】:Hide legend from seaborn pairplot 【发布时间】:2019-07-13 20:12:27 【问题描述】:

我想隐藏 Seaborn 配对图例。官方文档没有提到关键字图例。我尝试使用plt.legend 的一切都不起作用。请建议最好的前进方式。谢谢!

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)

【问题讨论】:

您忘记在开头添加“import pandas as pd”以使您的代码正常工作。 【参考方案1】:

由于_legend.remove() 方法不适用于其他一些seaborn地块,那么:

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

【讨论】:

谢谢! 'g._legend.remove()' 不适用于 sns.boxplot【参考方案2】:

使用pairplot时需要返回Seabron Pairgrid对象,然后可以使用._legend访问Pairgrid的图例。然后直接拨打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()

【讨论】:

使用._legend 对我不起作用并抛出AttributeError。但是,使用 .legend_ 可以像 in this answer 一样工作。 @DavidG。由于我看到对于大多数人来说 Mihai Chelaru 的答案都有效,您能否更新您的答案,将 _legend 更改为 legend_?谢谢! 没有。对我来说,使用pairplot 我的答案有效。链接的答案使用stripplot,它返回一个axes 对象,而不是pairplot 返回的PairGrid 对象,因此答案将不一样。【参考方案3】:

如果要删除所有子图上的图例,可以使用以下代码。

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

# ...

for ax in axes:
    ax.legend([],[], frameon=False)

【讨论】:

以上是关于隐藏seaborn pairplot的传说的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn pairplot 图例 - 如何控制位置

如何更改 seaborn pairplot 中仅 x 或 y 标签的字体大小?

机器学习——可视化绘图matplotlib和seaborn

斯科特是谁? - Seaborn pairplot 中的 ValueError:无法将字符串转换为浮点数:'scott'

Python使用matplotlib可视化分组多变量两两关系图使用seaborn中的pairplot函数可视化分组多变量两两关系图对角线为分组密度图其它图像为分组两两散点图

Seaborn