Seaborn Pairplot:如何移动图例和设置样式

Seaborn Pariplot: how to move legend and set style

我正在尝试使用 seaborn 获取我的数据的配对图。我想将图例设置在坐标轴之外,因为我的其他绘图可能有多达 9 个特征,这使得绘图过于拥挤。

我的代码是:

import seaborn as sns

my_data = data  
# a 80x4 dataframe. The last column key is label, and two different labels are in that column.

ax = sns.pairplot(my_data, hue="label")

输出有两个问题:

  1. 图例与我的散点图重叠;
  2. label 这个词是不需要的。

我已尝试根据文档 here 使用 move_legend。我应该可以使用 bbox_to_anchor 来设置我的图例的确切位置,所以我添加了以下代码:

sns.move_legend(ax, "lower center", bbox_to_anchor=(0.5, -0.1))  
# I want to place the legend in lower center and outside of the axes

但不知何故,我的传奇就这样消失了。

当我使用matplotlib进行类似操作时,图形大小会自动调整,但使用seaborn的pairplot根本没有改变,这可能是原因。但是我不知道怎么解决。

更新: 我使用的数据已上传到 Google 驱动器,可以通过此 link.

访问

pairplot 已经在绘图矩阵外添加了图例。我不知道你怎么能把它放在情节区域内。可能有一些与情节图大小有关的东西。我需要有关您的代码的更多信息来检测问题。

我使用了测试数据来显示图例位置的一些示例。

# pip install matplotlib
# pip install seaborn

import seaborn as sns
import matplotlib.pyplot as plt

penguins = sns.load_dataset("penguins")

g = sns.pairplot(penguins, hue="species")

handles = g._legend_data.values()
labels = g._legend_data.keys()
g.fig.legend(handles=handles, labels=labels, loc='upper center', ncol=1)
g.fig.legend(handles=handles, labels=labels, loc='lower center', ncol=3)
g.fig.legend(handles=handles, labels=labels, loc='upper left', ncol=3)
g.fig.subplots_adjust(top=0.92, bottom=0.08)

plt.show()

原来是Pycharm的问题。将图形保存到文件后,我的代码中的图例

sns.move_legend(g, "lower center", bbox_to_anchor=(0.5, -0.1))

和@gremur 的代码

g = sns.pairplot(penguins, hue="species")

handles = g._legend_data.values()
labels = g._legend_data.keys()
g.fig.legend(handles=handles, labels=labels, loc='upper center', ncol=1)
g.fig.legend(handles=handles, labels=labels, loc='lower center', ncol=3)
g.fig.legend(handles=handles, labels=labels, loc='upper left', ncol=3)
g.fig.subplots_adjust(top=0.92, bottom=0.08)

按预期工作。