Seaborn.FacetGrid() 方法

当您想要可视化数据集子集中变量的分布或多个变量之间的关系时,Seaborn.FacetGrid() 方法很有用。 Row、Col 和 Hue 是可用于绘制 FacetGrid 的三种可能的维度。 前两个显然对应于生成的轴阵列。

通过以不同颜色描绘多个数据子集的 hue 参数,它还可以表示第三个变量的级别。 与接收色调的轴级函数相反,这只是在彼此之上绘制子集,并且不会为特定显示器定制色调参数。 它使用颜色来解析三维上的组件。

语法

以下是 seaborn.FacetGrid() 方法的语法 −

class seaborn.FacetGrid(**kwargs)
Multi-plot grid for plotting conditional relationships.
__init__(self, data, *, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=False, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None, size=None)

参数

下面讨论了 seaborn.FacetGrid() 方法的一些参数。

S.No 名称和描述
1 Data

采用数据框,其中每一列都是一个变量,每一行都是一个观察值。

2 Row,col,hue

指定将显示在特定网格面上的数据部分的变量。 要调节此变量的级别顺序,请参阅 var order 参数。

3 Col_wrap

将 int 作为输入并使列面跨越多行,将列变量"wrap"在此宽度。

4 Share{x,y}

将布尔值或列、行作为值,如果为 true,则构面将跨列共享 y 轴和/或跨行共享 x 轴。

5 Height

采用标量值并确定刻面的高度。

6 Aspect

获取每个刻面的标量值和纵横比,因此纵横比 * 高度给出每个刻面的宽度(以英寸为单位)。

7 Despine

采用布尔值并从绘图中移除顶部和右侧的脊线。

8 {row,col,hue}_order

将列表作为输入,分面变量级别的顺序由此顺序确定。

让我们在继续开发绘图之前加载 seaborn 库和数据集。


载入seaborn 库

要加载或导入 seaborn 库,可以使用以下代码行。

Import seaborn as sns

加载数据集

在本文中,我们将使用 seaborn 库中内置的 Titanic 数据集。 以下命令用于加载数据集。

titanic=sns.load_dataset("titanic")

下面提到的命令用于查看数据集中的前 5 行。 这使我们能够了解哪些变量可用于绘制图形。

titanic.head()

以下是上面这段代码的输出。

index,survived,pclass,sex,age,sibsp,parch,fare,embarked,class,who,adult_male,deck,embark_town,alive,alone
0,0,3,male,22.0,1,0,7.25,S,Third,man,true,NaN,Southampton,no,false
1,1,1,female,38.0,1,0,71.2833,C,First,woman,false,C,Cherbourg,yes,false
2,1,3,female,26.0,0,0,7.925,S,Third,woman,false,NaN,Southampton,yes,true

现在我们已经加载了数据集,我们将探索几个示例。

示例 1

在此示例中,我们将了解如何通过将数据集以及 col 和 row 参数传递给 FacetGrid() 方法来生成简单的分面网格。

import seaborn as sns
import matplotlib.pyplot as plt
titanic=sns.load_dataset("titanic")
titanic.head()
sns.FacetGrid(titanic, col="sex", row="class")
plt.show()

输出

得到的输出如下 −

Seaborn FacetGrid 方法

示例 2

为了在每个面上绘制一个图,将一个函数和数据框中一个或多个列的名称传递给 FacetGrid.map()。 在这个例子中,我们将做同样的事情。 我们正在使用 titanic 数据集,我们将在所有方面绘制散点图。

import seaborn as sns
import matplotlib.pyplot as plt
titanic=sns.load_dataset("titanic")
titanic.head()
grid = sns.FacetGrid(titanic, col="sex", row="class")
grid.map(sns.scatterplot, "age", "fare")
plt.show()

以上代码行可用于实现所解释的场景,获得的输出如下所示。

输出

Seaborn FacetGrid

示例 3

现在我们将在所有方面使用 hsitplot() 方法绘制直方图,并将 add_legend 用于所有图例的显示图。 这可以使用下面的代码行来完成。 首先,我们将绘制构面并在这些构面中绘制histplot。 然后我们将图例添加到构面。 为此,facetgrid 将存储在名为 grid 的变量中。

import seaborn as sns
import matplotlib.pyplot as plt
titanic=sns.load_dataset("titanic")
titanic.head()
grid = sns.FacetGrid(titanic, col="class", hue="sex")
grid.map_dataframe(sns.histplot, x="age", y="fare")
grid.add_legend()
plt.show()

输出

得到的输出如下 −

FacetGrid

示例 4

我们将了解python中savefig()方法的使用。 这可用于将获得的任何绘图保存为图像供您个人使用。 您的绘图必须像上面的示例一样保存在诸如 grid 之类的变量中,然后我们将对其应用 savefig() 方法并获取图像。 savefig() 方法接受一个参数,该参数是要将绘图保存为的文件的名称。 在下面的代码中,绘图被保存为"facetplot.png"。

import seaborn as sns
import matplotlib.pyplot as plt
titanic=sns.load_dataset("titanic")
titanic.head()
grid.savefig("facetplot.png")
plt.show()

❮Seaborn 多图网格简介