更改 Seaborn 图中图例的位置
Manav Narula
2021年7月16日
在本教程中,我们将学习如何在 Python 中更改 seaborn 图中的图例位置。
为此,我们需要禁用默认图例。这可以通过在 plot 函数中将 legend
参数设置为 False 来完成。我们将使用 matplotlib 库中的 matplotlib.pyplot.legend()
函数显式添加图例。
要更改图例的位置,我们将使用此函数中的 loc
参数。我们可以指定图例所需的位置作为该参数的值。
例如,
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df, legend=False)
plt.legend(labels=["Day1", "Day2"], loc="upper right")
我们还可以指定不同的数字作为此参数的值。不同的数字对应不同的位置。比如 1 代表右上位置,2 代表左上位置等。参考这篇 Matplotlib 文章得到数字与位置关系表。
默认情况下,loc
参数的值为 0,这意味着它会搜索图中的位置,以便发生最小重叠。
我们还可以使用 bbox_to_anchor
参数将图例框放置在图外。bbox_to_anchor
指定图例相对于 loc
参数中指定位置的位置。如果我们使用二元元组设置 bbox_to_anchor
参数,那么它会将它们的值视为沿指定 loc
定位的 x 和 y 值。
例如,
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df, legend=False)
plt.legend(labels=["Day1", "Day2"], loc=2, bbox_to_anchor=(1, 1))
作者: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn