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")
输出有两个问题:
- 图例与我的散点图重叠;
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)
按预期工作。
我正在尝试使用 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")
输出有两个问题:
- 图例与我的散点图重叠;
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)
按预期工作。