Seaborn 绘图中的图例

Manav Narula 2022年12月21日
Seaborn 绘图中的图例

图例通常是一个小盒子,它出现在图形的某个角上,用于说明绘图的不同元素。并且,如果图中有多个数据,那么它将告诉哪个组件代表哪个数据。

在本教程中,我们将学习如何为简单的 Seaborn 图添加或自定义图例。

默认情况下,seaborn 自动将图例添加到图形中。

例如,

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)

seaborn 图例 1

请注意,图例位于右上角。

如果要显式添加图例,则可以使用 matplotlib 库中的 legend() 函数。这样,我们可以显式添加我们自己的标签。

例如,

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)
plt.legend(labels=["Legend_Day1", "Legend_Day2"])

seaborn 图例 2

请注意,seaborn 库基于并使用 matplotlib 模块创建其图。因此,我们也可以对 Seaborn 图使用 legend() 函数。

我们还可以对图例进行小的定制。例如,我们可以使用 legend() 函数中的 title 参数为图例添加标题,如下所示。

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)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], title="Title_Legend")

seaborn 图例 3

fontsizetitle_fontsize 是分别用于更改图例及其标题中内容字体的两个参数。

请参见下面的代码。

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)
plt.legend(
    labels=["Legend_Day1", "Legend_Day2"],
    title="Title_Legend",
    fontsize="large",
    title_fontsize="10",
)

seaborn 图例 4

请注意,每个版本的 matplotlib 中都不存在 title_fontsize,因此请在使用前检查你的版本。

我们可以使用 locbbox_to_anchor 参数指定图例框的大小和位置。

loc 用于指定图例的位置。不同的数字指定不同的位置。默认情况下,其值为 0,这意味着它将搜索最佳位置以将图例放置在发生最小重叠的位置。

bbox_to_anchor 相对于 loc 参数中指定的位置指定图例的位置。如果我们用 2 个元素元组设置 bbox_to_anchor 参数,则它将其值视为沿指定 loc 定位的 x 和 y 值。

例如,

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)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], loc=2, bbox_to_anchor=(1, 1))

seaborn 图例 5

请注意,loc 参数的值为 2,表示左上角的位置。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

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

相关文章 - Seaborn Legend