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()
输出
得到的输出如下 −
示例 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()
以上代码行可用于实现所解释的场景,获得的输出如下所示。
输出
示例 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()
输出
得到的输出如下 −
示例 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()