📅  最后修改于: 2023-12-03 15:34:53.838000             🧑  作者: Mango
Seaborn是一个基于matplotlib的Python数据可视化库,它提供了更高层次的API用于绘制漂亮和信息丰富的统计图形。其中的子图,也被称为faceting plot,在一个图形中展示数据的多个视图,帮助我们在单一图形中,深度挖掘数据特征。
本文将向大家介绍Seaborn Python中的子图功能,并展示如何创建不同类型的子图及其参数配置。
首先,我们需要导入Seaborn库并加载一个样本数据集:
import seaborn as sns
tips = sns.load_dataset("tips")
Seaborn的FacetGrid类是子图中最常用的类之一,它允许创建一系列子图,每个图都以数据集的不同子集为输入。
g = sns.FacetGrid(tips, col="time")
g.map(sns.histplot, "tip")
上述代码行创建了一个2x1的子图,其中每个子图展示不同时间(午餐和晚餐时段)下顾客付给餐厅小费的频率分布图。FacetGrid类通过col参数指定时间参数,通过map方法指定绘图函数(本例中使用了histplot函数)。
在实际的数据集中,我们通常会有更多的变量需要考虑,Seaborn提供了多种方式对其进行处理。对于有两个变量的情形,可以使用多个参数进行指定,如下所示:
g = sns.FacetGrid(tips, col="time", row="sex")
g.map(sns.histplot, "tip")
上述代码行创建了一个2x2的子图,其中每个子图展示不同时间(午餐和晚餐时段)以及不同性别下顾客付给餐厅小费的频率分布图。使用FacetGrid类时,通过指定row和col参数,可以使用更多变量进行分割,并创建更多的子图。
另一个子图的类型是PairGrid类,它是Seaborn中网格布局的一部分。该类提供了多种绘图方法,使我们可以创建多个子图,每个子图都显示数据集中不同变量的交叉关系。
g = sns.PairGrid(data=tips, vars=["total_bill", "tip", "size"], hue="smoker")
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot, fill=True)
g.map_diag(sns.histplot)
g.add_legend()
上述代码行创建了包含$3 \times 3$个子图的矩阵,每行和每列分别对应了数据集中不同的变量。图例展示了数据集中另外一个变量(吸烟者与否)的不同取值。对于该类,我们可以使用map_upper()、map_lower()和map_diag()来指明绘图函数,以及add_legend()函数进行图例的添加。
当我们需要同时绘制多个变量时,FacetGrid和PairGrid十分有用,但是还有其他更多的选项可供选择。一种常见的需求是在同一绘图中呈现多个层次分类的数据。
g = sns.catplot(data=tips, x="day", y="total_bill", hue="sex", col="time", kind="bar")
上述代码行给我们提供了一种以分面、分类和颜色为基础的子图类型。在此例中,我们特别指明,我们要绘制对于“时间”变量的“午餐”和“晚餐”子集,以及每个子集都绘制男女两种性别的柱状图,其中x轴代表“天”变量,y轴代表“总账单”。kind参数可以让我们选择不同类型的图形。
本文介绍了Seaborn Python中的子图功能,包括FacetGrid和PairGrid类和它们的参数配置,然后展示了网格布局和分面、分类和颜色的绘图类型。
Seaborn的强大功能使得能够在一张图中呈现数据的多个层面成为可能。在绘制数据可视化时,Seaborn可以成为Python程序员的得力助手。