本期,我们来学习Seaborn中的FacetGrid。FacetGrid是Seaborn库中的一个功能,它允许你以网格状布局创建数据的多个子集。你可以创建一个图表网格,其中每个图表代表一个类别。这些子集由FacetGrid()的'col'和'row'属性中指定的列名决定。网格内的各个图表可以是seaborn支持的任何类型的图表,如散点图、折线图、条形图或直方图。同样,我们还是用一个exercise数据集来具体说一下FacetGrid的用法。一、exercise数据集exercise数据集包含了运动者的一些运动数据,包括:脉搏、饮食、运动时间等等。具体为:
其中,
id:运动者编号
diet:饮食(low fat 低脂、no fat 无脂)
pulse:脉搏
time:运动的时间
kind:运动的种类
具体数据获取如下:
通过百度网盘分享的文件:exercise.csv链接:https://pan.baidu.com/s/1BNjSBcyRP9ghtlJlWkrS7Q提取码:6666
二、exercise数据集的Facetgrid图
我们用Facetgrid画一下不同运动状态下的脉搏率图。
# 用FacetGrid创建运动种类子图g = sns.FacetGrid(df, col='kind', palette='Paired') #画一下每个运动类型的脉搏图g.map(sns.boxplot, 'pulse')g.set_titles(col_template="{col_name}状态下的脉搏率 ")
从Facetgrid图中,我们可以看到随着活动强度的增加,脉搏率范围的扩大(休息<走路<跑步)。
下面,我们再回到penguins数据集里,看看不同岛屿企鹅形态的变化。
# 创建子图g = sns.FacetGrid(df1, col='island',hue='sex', palette='Paired') # 画一下不同岛屿上企鹅脚蹼长度和重量之间的关系图g.map(sns.scatterplot, 'flipper_length_mm', 'body_mass_g')g.set_titles(template="Penguins of {col_name} Island")g.add_legend();
从上图中,我们可以看到:
- 在Biscoe(比斯科岛)的企鹅中,其脚蹼长度范围为180毫米至240毫米,比其他两个岛屿的范围更宽。
- 在Biscoe(比斯科岛)上可以观察到两种不同的企鹅群体(可能是不同的物种)。
- 雌性企鹅的脚蹼长度似乎比雄性企鹅短。
三、一些参数设置
facetgrid参数主要包括以下几个:
- data: DataFrame格式,包含了你想要可视化的数据。
- row和col: 字符串或字符串列表,指定用于创建网格的DataFrame中的列名。这些列的唯一值将决定网格的行或列。
- hue: 可选参数,用于在子图中进一步区分数据点的颜色。它通常用于表示另一个分类变量。
- map和map_async: 这些方法用于将绘图函数映射到FacetGrid的每个子图上。map_async是异步版本,可以加快绘图速度。
- FacetGrid.map_dataframe: 特别用于将绘图函数映射到 FacetGrid 的每个子图上,并确保数据以正确的格式传递给绘图函数。
- figsize: 用于设置整个FacetGrid图形的大小。
- despine: 用于去除子图周围的边框。
- set和set_axis_labels: 用于设置整个FacetGrid的轴标签。
- set_titles: 用于设置子图的标题。
- add_legend: 用于在FacetGrid中添加图例。
下面,我们给企鹅图中加一个回归线,并设置一下X轴、y轴。
# 创建子图g = sns.FacetGrid(df1, col='island',hue='sex', palette='Paired') # 画一下不同岛屿上企鹅脚蹼长度和重量之间的关系图g.map(sns.scatterplot, 'flipper_length_mm', 'body_mass_g')g.set_titles(template="{col_name}岛上的企鹅")g.set_axis_labels("企鹅脚蹼的长度mm", "企鹅的重量g")g.set(xlim=(150, 250), ylim=(2000, 7000), xticks=[150, 200, 250], yticks=[2000, 5000, 7000])g.refline(y=df1["body_mass_g"].median())g.add_legend();
四、结语FacetGrid是一个功能强大的工具,它非常适合于比较和分析数据集中的不同组或类别,同时,可以无缝创建子图用于数据展示,让你轻松地创建复杂且信息丰富的多维数据可视化图形。当然,想要了解更多关于Facetgrid的功能,请参考官方文档:https://seaborn.pydata.org/generated/seaborn.FacetGrid.html自己动手试试吧?