seaborn.move_legend#
- seaborn.move_legend(obj, loc, **kwargs)#
将图例重新创建到新的位置。
该函数的名字有点误导性。Matplotlib 图例不公开其位置参数的控制方式。因此,此函数会创建一个新的图例,将数据从原始对象复制过来,然后删除原始对象。
- 参数:
- obj包含图的物体
此参数可以是 seaborn 或 matplotlib 对象
- locstr 或 int
位置参数,与
matplotlib.axes.Axes.legend()
中的一样。- kwargs
其他关键字参数将传递给
matplotlib.axes.Axes.legend()
。
示例
对于轴级函数,请传递
matplotlib.axes.Axes
对象并提供一个新的位置。ax = sns.histplot(penguins, x="bill_length_mm", hue="species") sns.move_legend(ax, "center right")
使用
bbox_to_anchor
参数进行更精细的控制,包括将图例移到轴的外部ax = sns.histplot(penguins, x="bill_length_mm", hue="species") sns.move_legend(ax, "upper left", bbox_to_anchor=(1, 1))
传递额外的
matplotlib.axes.Axes.legend()
参数来更新其他属性ax = sns.histplot(penguins, x="bill_length_mm", hue="species") sns.move_legend( ax, "lower center", bbox_to_anchor=(.5, 1), ncol=3, title=None, frameon=False, )
还可以移动由图级函数创建的图例。但是,当微调位置时,必须牢记,该图形在右侧将有额外的空白。
g = sns.displot( penguins, x="bill_length_mm", hue="species", col="island", col_wrap=2, height=3, ) sns.move_legend(g, "upper left", bbox_to_anchor=(.55, .45))
避免这种情况的一种方法是在
FacetGrid
上设置legend_out=False
g = sns.displot( penguins, x="bill_length_mm", hue="species", col="island", col_wrap=2, height=3, facet_kws=dict(legend_out=False), ) sns.move_legend(g, "upper left", bbox_to_anchor=(.55, .45), frameon=False)