Seaborn 绘图中的图例

Manav Narula 2022年12月21日 2021年4月29日
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,表示左上角的位置。

Author: 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