Seaborn是一个基于Python的数据可视化库,它建立在matplotlib库之上,提供了一个高级接口,使得数据可视化变得更加简单直观。本文将详细介绍Seaborn库的使用方法,包括FacetGrid与AxesSubplot的区别、计数图、关系图、散点图、折线图以及分类图等。
Seaborn库是基于matplotlib的高级数据可视化工具,它专门用于数据分析任务中的数据可视化和信息推断。以下是Seaborn库的链接,其中包含了各种用例、简单的用户指南以及详细的教程,强烈推荐大家查阅。
Seaborn创建了两种不同类型的对象:FacetGrid和AxesSubplot。FacetGrid是一个能够生成多图网格以展示条件关系的Seaborn类,可以轻松地使用其对象创建子图。例如,可以使用seaborn.relplot()
和seaborn.catplot()
等函数。而AxesSubplot则是属于matplotlib的Axes类的对象,它在图形中创建轴并返回该Axes对象,仅创建单个图表。例如,可以使用seaborn.scatterplot()
、seaborn.boxplot()
和seaborn.countplot()
等函数。
计数图属于分类估计图的范畴,用于展示数据中不同唯一类别的出现次数。以下是使用Seaborn库创建计数图的代码示例。首先,初始化一个图形对象,并设置图形大小比例为14:8。然后,可以为FacetGrid对象或AxesSubplot对象设置标题。以下是如何使用Seaborn库创建计数图的示例代码:
plt.figure(figsize=(14,8))
g = sns.countplot(x="year", data=data)
g.set_title("特定年份的数据条目计数")
上述代码展示了数据中属于不同年份的数据点数量。x轴显示排序后的年份,y轴显示它们的出现次数。
关系图用于展示两个不同特征(数据的列)或二元数据之间的关系。在Seaborn中,如果要将它们作为FacetGrid对象绘制,可以使用seaborn.relplot()
。否则,如果要创建AxesSubplot,可以使用seaborn.scatterplot()
或seaborn.lineplot()
等函数。
散点图是一种关系图,因为它在图表上创建的数据点是两个特征(x轴上的变量和y轴上的变量)的函数。单个数据点持有这两个特征之间的关系。它被称为散点图,因为每个数据点都是单独绘制的,因此看起来数据在图表上四处分散。以下是如何创建散点图的示例代码:
plt.figure(figsize=(14,8))
g = sns.scatterplot(x="distance", y="mass", data=data)
g.set_title("行星质量和距离之间的关系")
从图表中可以清楚地看到数据点的分布。可以直接推断出,数据集中的大多数数据属于更接近的较小行星,因为在图表的左下角似乎有一个密集的数据点群。
折线图与散点图在性质上非常相似,但它们各自在不同的用例中具有重要的价值。通过用线连接散点图中的数据点,得到了折线图。折线图用于测量数据点之间的趋势(路径)或任何其他与方向相关的数据特性。
g = sns.relplot(x="distance", y="mass", data=data, kind="line", height=8, aspect=1.5)
g.fig.suptitle("行星质量和距离之间的关系")
从图表中可以清楚地看到,有很多复杂的信息,这使得从这个单一图表中解释变得相当困难。可能这不是展示这些特征之间关系的最好选择。
分类图是处理数据中离散类别的图表。在Seaborn中,如果要将它们作为FacetGrid对象绘制,可以使用seaborn.catplot()
。否则,如果要创建AxesSubplot对象,可以简单地通过它们的个别名称调用图表。
箱线图属于“分类分布图”的范畴。这种图表让困惑了很长一段时间,所以将尝试帮助避免这个问题。箱线图是分类图,意味着它们使用离散的分类值(通常在x轴上)。它们显示定量数据(具有连续值的特征)(通常在y轴上)的分布,以便于比较x轴上不同唯一类别。
g = sns.catplot(x="number", y="mass", data=data, kind="box", height=8, aspect=1.5)
g.fig.suptitle("每个行星的数据分布")
关于箱线图的上述所有要点,然后一切都会结合起来。
条形图是显示分类特征和单变量定量数据之间关系的最简单的表示之一。早先看计数图时,它实际上就是使用某些类别的出现次数作为单变量定量数据(y轴上的连续值)的条形图。
g = sns.catplot(x="number", y="mass", data=data, kind="bar", height=8, aspect=1.5)
g.fig.suptitle("每个行星的质量")