📜  使用 Seaborn 在Python中绘制网格图

📅  最后修改于: 2022-05-13 01:55:16.353000             🧑  作者: Mango

使用 Seaborn 在Python中绘制网格图

网格是绘图的一般类型,允许您将绘图类型映射到网格行和列,这有助于您创建类似的字符分隔绘图。在本文中,我们将使用两个不同的数据集(Iris 和 Tips)来演示网格图

使用虹膜数据集

我们将使用 Iris 数据集,这是一个非常著名的数据集,可用作内置数据集。它包含一组不同的鸢尾花(花)的测量值。该数据集包括四个度量:萼片距离、萼片重量、花瓣长度和花瓣宽度。我们将为下面使用的所有示例使用以下代码片段。

代码片段:

Python3
import seaborn as sns
import matplotlib.pyplot as plt
  
  
iris = sns.load_dataset("iris")
iris.head()
  
# YOUR CODE HERE


Python3
import seaborn as sns
import matplotlib.pyplot as plt
  
  
tips = sns.load_dataset("tips")
tips.head()
  
# YOUR CODE HERE


输出:

注意:将以下代码片段放在您的代码处。

配对图

Pair Plot 就像整个数据集的自动联合图。在示例中,配对图映射了配对伙伴关系。 pairplot()方法生成一个 Axes 映射,以便每个数据向量分布在 y 轴上的单行和 x 轴上的单列上。这会生成如下所示的图。

sns.pairplot(data = iris)

我们使用“色调”来可视化图中每种“物种”的独立颜色。调色板用于自定义绘图的颜色,如下所示。

sns.pairplot(iris, hue="species", palette="rainbow")

对网格

我们可以使用 seaborn 的 PairGrid 机制自定义pair plot。 PairGrid 获取所有数字列并将它们网格化,形成子图,如下所示。

sns.PairGrid(data = iris)

我们可以通过调用'.map'来映射到网格。在这里,我们将散点图称为“.scatter”。现在所有的网格都是散点图类型的。我们可以使用“.map”在网格中定义我们想要的绘图类型。

g = sns.PairGrid(iris)
g.map(plt.scatter) #All the grids plot scatter plot

为了映射到上网格、下网格和对角网格,我们从 PairGrid 中调用“.map_upper”、“.map_lower”、“.map_diag”。在这里我们可以看到对角线是'hist'类型的图,上面的网格是'scatter'类型的图,下面的网格是'kde'类型的图。

g = sns.PairGrid(iris)
g.map_diag(plt.hist)
g.map_upper(plt.scatter)
g.map_lower(sns.kdeplot)

使用提示数据集

我们将使用另一个内置数据集。该数据集包含七个特征:总账单、小费、性别、吸烟者、日期、时间、大小。我们将为下面使用的所有示例使用以下代码片段。

代码片段:

Python3

import seaborn as sns
import matplotlib.pyplot as plt
  
  
tips = sns.load_dataset("tips")
tips.head()
  
# YOUR CODE HERE

输出:

注意:将以下代码片段放在您的代码处。

分面网格

FacetGrid 是一种基于函数创建绘图网格的通用方法。它的对象使用数据框作为输入,以及形成网格的行、列或颜色维度的变量的名称。

在这里我们可以看到,因为吸烟者列中有两种类型的值,即吸烟者 = 否和吸烟者 = 是,因此这会在网格中创建两行,一个为吸烟者 = 是,另一个为吸烟者 = 否。对于列,如时间列中有两种类型的值,即时间 = 午餐和时间 = 晚餐,因此这会在网格中创建两列,一列用于时间 = 午餐,另一列用于时间 = 晚餐。

g = sns.FacetGrid(tips, col="time", row="smoker")

总账单在我们使用“地图”创建的网格中绘制为历史记录。

g = sns.FacetGrid(tips, col="time",  row="smoker")
g = g.map(plt.hist, "total_bill")

在这里,我们将色调定义为性别,并绘制了一个散点图,其中 X 轴是 total_bill,Y 轴是 yip..

g = sns.FacetGrid(tips, col="time",  row="smoker", hue='sex')
g = g.map(plt.scatter, "total_bill", "tip").add_legend()

联合网格

JointGrid 是jointplot()网格类型的通用版本。 Seaborn 的联合图显示了 2 个变量(双变量)和 1D 轮廓(单变量)之间的边际关系。该图是一个包含 JointGrid 的产品表单。

g = sns.JointGrid(x="total_bill", y="tip", data=tips)

g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot(sns.regplot, sns.distplot)