当我将 Seaborn 图的图例从其默认位置移动到图的顶部时,我希望变量(色调)名称与可能的变量值位于同一行。
从这个情节开始:
import seaborn as sns
penguins = sns.load_dataset("penguins")
ax = sns.relplot(penguins, x="bill_length_mm",y="flipper_length_mm" , hue="species")
我想将图例移到图的顶部(例如像这样):
ax = sns.relplot(penguins, x="bill_length_mm",y="flipper_length_mm" , hue="species")
sns.move_legend(ax, "lower center", bbox_to_anchor=(.5, 1), ncol=4)
但我希望变量名称(示例中的物种)位于其值的左侧,而不是位于它们的顶部。当还设置样式参数时,这效果很好(忽略本示例中的图例太宽):
ax = sns.relplot(penguins, x="bill_length_mm",y="flipper_length_mm" , hue="species", style="sex")
sns.move_legend(ax, "lower center", bbox_to_anchor=(.5, 1), ncol=7)
您可以检索图例,获取其 bbox 并将标题向下/向左移动。这里我使用了左侧 bbox 宽度的一半以及固定的额外左侧和向下:
import seaborn as sns
penguins = sns.load_dataset('penguins')
g = sns.relplot(penguins, x='bill_length_mm', y='flipper_length_mm', hue='species')
sns.move_legend(g, 'lower center', bbox_to_anchor=(0.5, 1), ncol=7)
bbox = g.legend.get_window_extent()
g.legend.get_title().set_position((-bbox.width/2-20, -20))