提交 ceb0e9a1 编写于 作者: K ke

Update 7.md

上级 77a89db2
......@@ -5,7 +5,7 @@
要使用网格图功能,数据必须在Pandas DataFrame中,并且必须采用 Hadley Whickam所谓的 [“整洁”数据](https://vita.had.co.nz/papers/tidy-data.pdf)的形式。简言之,用来画图的数据框应该构造成每列一个变量,每一行一个观察的形式。
至于高级用法,可以直接使用本教程中讨论的对象,以提供最大的灵活性。一些seaborn函数(例如`lmplot()``catplot()``pairplot()`)也在后台使用它们。与其他在没有操纵图形的情况下绘制到特定的(可能已经存在的)matplotlib `Axes`上的“Axes-level” seaborn函数不同,这些更高级别的函数在调用时会创建一个图形,并且通常对图形的设置方式更加严格。在某些情况下,这些函数或它们所依赖的类构造函数的参数将提供不同的接口属性,如`lmplot()`中的图形大小,您可以设置每个子图的高和宽高比。但是,使用这些对象的函数在绘图后都会返回它,并且这些对象大多都有方便简单的方法来改变图的绘制方式。
至于高级用法,可以直接使用本教程中讨论的对象,以提供最大的灵活性。一些seaborn函数(例如`lmplot()``catplot()``pairplot()`)也在后台使用它们。与其他在没有操纵图形的情况下绘制到特定的(可能已经存在的)matplotlib `Axes`上的“Axes-level” seaborn函数不同,这些更高级别的函数在调用时会创建一个图形,并且通常对图形的设置方式更加严格。在某些情况下,这些函数或它们所依赖的类构造函数的参数将提供不同的接口属性,如`lmplot()`中的图形大小,你可以设置每个子图的高和宽高比。但是,使用这些对象的函数在绘图后都会返回它,并且这些对象大多都有方便简单的方法来改变图的绘制方式。
```py
import seaborn as sns
import matplotlib.pyplot as plt
......@@ -21,11 +21,11 @@ sns.set(style="ticks")
Additionally, each of [`relplot()`](../generated/seaborn.relplot.html#seaborn.relplot "seaborn.relplot"), [`catplot()`](../generated/seaborn.catplot.html#seaborn.catplot "seaborn.catplot"), and [`lmplot()`](../generated/seaborn.lmplot.html#seaborn.lmplot "seaborn.lmplot") use this object internally, and they return the object when they are finished so that it can be used for further tweaking.
想在数据集的不同子集中分别可视化变量分布或多个变量之间的关系时,[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")类非常有用。 `FacetGrid`最多有三个维:`row``col``hue`。前两个与轴(axes)阵列有明显的对应关系;将色调变量`hue`视为沿深度轴的第三个维度,不同的级别用不同的颜色绘制。
想在数据集的不同子集中分别可视化变量分布或多个变量之间的关系时,[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")类非常有用。 `FacetGrid`最多有三个维:`row``col``hue`。前两个与轴(axes)阵列有明显的对应关系;将色调变量`hue`视为沿深度轴的第三个维度,不同的级别用不同的颜色绘制。
首先,使用数据框初始化`FacetGrid`对象并指定将形成网格的行,列或色调维度的变量名称。这些变量应是离散的,然后对应于变量的不同取值的数据将用于沿该轴的不同小平面的绘制。例如,假设我们想要在`tips`数据集中检查午餐和晚餐小费分布的差异。
此外,`relplot()``catplot()``lmplot()`都在内部使用此对象,并且它们在完成时返回该对象,以便进一步调整。
此外,`relplot()``catplot()``lmplot()`都在内部使用此对象,并且它们在完成时返回该对象,以便进一步调整。
```py
tips = sns.load_dataset("tips")
......@@ -40,7 +40,7 @@ g = sns.FacetGrid(tips, col="time")
如上初始化网格会设置matplotlib图形和轴,但不会在其上绘制任何内容。
在网格上可视化数据的主要方法是FacetGrid.map()。为此方法提供绘图函数以及要绘制的数据框变量名作为参数。我们使用直方图绘制每个子集中小费金额的分布。
在网格上可视化数据的主要方法是FacetGrid.map()。为此方法提供绘图函数以及要绘制的数据框变量名作为参数。我们使用直方图绘制每个子集中小费金额的分布。
```py
g = sns.FacetGrid(tips, col="time")
g.map(plt.hist, "tip");
......@@ -134,7 +134,7 @@ g.map(sns.pointplot, "solutions", "score", color=".3", ci=None);
![http://seaborn.pydata.org/_images/axis_grids_23_1.png](img/5291ce95bb602839ea9bb9b4e3e7d128.jpg)
使用[`FacetGrid.map()`](../generated/seaborn.FacetGrid.map.html#seaborn.FacetGrid.map "seaborn.FacetGrid.map") (可以多次调用)绘图后,您可以调整绘图的外观。 `FacetGrid`对象有许多方法可以在更高的抽象层次上操作图形。最一般的是`FacetGrid.set()`,还有其他更专业的方法,如`FacetGrid.set_axis_labels()`,它们都遵循内部构面没有轴标签的约定。例如:
使用[`FacetGrid.map()`](../generated/seaborn.FacetGrid.map.html#seaborn.FacetGrid.map "seaborn.FacetGrid.map") (可以多次调用)绘图后,你可以调整绘图的外观。 `FacetGrid`对象有许多方法可以在更高的抽象层次上操作图形。最一般的是`FacetGrid.set()`,还有其他更专业的方法,如`FacetGrid.set_axis_labels()`,它们都遵循内部构面没有轴标签的约定。例如:
```py
with sns.axes_style("white"):
g = sns.FacetGrid(tips, row="sex", col="smoker", margin_titles=True, height=2.5)
......@@ -147,7 +147,7 @@ g.fig.subplots_adjust(wspace=.02, hspace=.02);
![http://seaborn.pydata.org/_images/axis_grids_25_0.png](img/9127880f623ed92358326c68893d22b4.jpg)
对于需要更多自定义的情形,您可以直接使用底层matplotlib图形`Figure`和轴`Axes`对象,它们分别作为成员属性存储在`Figure`和轴`Axes`(一个二维数组)中。在制作没有行或列刻面的图形时,您还可以使用`ax`属性直接访问单个轴。
对于需要更多自定义的情形,你可以直接使用底层matplotlib图形`Figure`和轴`Axes`对象,它们分别作为成员属性存储在`Figure`和轴`Axes`(一个二维数组)中。在制作没有行或列刻面的图形时,你还可以使用`ax`属性直接访问单个轴。
```py
g = sns.FacetGrid(tips, col="smoker", margin_titles=True, height=4)
......@@ -162,7 +162,7 @@ g.set(xlim=(0, 60), ylim=(0, 14));
## 使用自定义函数
使用[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")时,除了可以使用现有的matplotlib和seaborn函数,还可以使用自定义函数。但是,这些函数必须遵循一些规则:
使用[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")时,除了可以使用现有的matplotlib和seaborn函数,还可以使用自定义函数。但是,这些函数必须遵循一些规则:
1. 它必须绘制到“当前活动的”matplotlib轴`Axes`上。 `matplotlib.pyplot`命名空间中的函数就是如此。如果要直接使用当前轴的方法,可以调用`plt.gca`来获取对当前`Axes`的引用。
2. 它必须接受它在位置参数中绘制的数据。在内部,[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")将为传递给[`FacetGrid.map()`](../generated/seaborn.FacetGrid.map.html#seaborn.FacetGrid.map "seaborn.FacetGrid.map")的每个命名位置参数传递一`Series`数据。
......@@ -217,7 +217,7 @@ g.add_legend();
![http://seaborn.pydata.org/_images/axis_grids_35_0.png](img/894a1105419e7147b562c1576471c410.jpg)
有时候,您需要使用`color``label`关键字参数映射不能按预期方式工作的函数。在这种情况下,您需要显式捕获它们并在自定义函数的逻辑中处理它们。例如,这种方法可用于映射`plt.hexbin`,使它与[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid") API匹配:
有时候,你需要使用`color``label`关键字参数映射不能按预期方式工作的函数。在这种情况下,你需要显式捕获它们并在自定义函数的逻辑中处理它们。例如,这种方法可用于映射`plt.hexbin`,使它与[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid") API匹配:
```py
def hexbin(x, y, color, **kwargs):
cmap = sns.light_palette(color, as_cmap=True)
......@@ -233,9 +233,9 @@ g.map(hexbin, "total_bill", "tip", extent=[0, 50, 0, 10]);
## 绘制成对数据关系
[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")允许使用相同的绘图类型快速绘制小子图的网格。在[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")中,每个行和列都分配给一个不同的变量,结果图显示数据集中的每个对变量的关系。这种图有时被称为“散点图矩阵”,这是显示成对关系的最常见方式,但是[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")不仅限于散点图。
[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")允许使用相同的绘图类型快速绘制小子图的网格。在[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")中,每个行和列都分配给一个不同的变量,结果图显示数据集中的每个对变量的关系。这种图有时被称为“散点图矩阵”,这是显示成对关系的最常见方式,但是[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")不仅限于散点图。
了解[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")之间的差异非常重要。前者每个构面显示以不同级别的变量为条件的相同关系。后者显示不同的关系(尽管上三角和下三角组成镜像图)。使用[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")可为提供数据集中有趣关系的快速,高级的摘要。
了解[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")之间的差异非常重要。前者每个构面显示以不同级别的变量为条件的相同关系。后者显示不同的关系(尽管上三角和下三角组成镜像图)。使用[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")可为提供数据集中有趣关系的快速,高级的摘要。
该类的基本用法与[`FacetGrid`](../generated/seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid")非常相似。首先初始化网格,然后将绘图函数传递给`map`方法,并在每个子图上调用它。还有一个伴侣函数, [`pairplot()`](../generated/seaborn.pairplot.html#seaborn.pairplot "seaborn.pairplot") ,可以更快的绘图。
......@@ -258,7 +258,7 @@ g.map_offdiag(plt.scatter);
![http://seaborn.pydata.org/_images/axis_grids_41_0.png](img/e6b76ab1dc666e53ba77d9784aa8d168.jpg)
此图的一种常见用法是通过单独的分类变量对观察结果进行着色。例如,iris数据集三种不同种类的鸢尾花都有四种测量值,因此可以看到不同花在这些取值上的差异。
此图的一种常见用法是通过单独的分类变量对观察结果进行着色。例如,iris数据集三种不同种类的鸢尾花都有四种测量值,因此可以看到不同花在这些取值上的差异。
```py
g = sns.PairGrid(iris, hue="species")
g.map_diag(plt.hist)
......@@ -269,7 +269,7 @@ g.add_legend();
![http://seaborn.pydata.org/_images/axis_grids_43_0.png](img/31d92e08bdcc758f28b32f9a6f31aff7.jpg)
默认情况下,使用数据集中的每个数值列,但如果需要,可以专注于特定列。
默认情况下,使用数据集中的每个数值列,但如果需要,可以专注于特定列。
```py
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species")
g.map(plt.scatter);
......@@ -290,7 +290,7 @@ g.map_diag(sns.kdeplot, lw=3, legend=False);
![http://seaborn.pydata.org/_images/axis_grids_47_0.png](img/05cf1fb72d609a18fa7a4fdfb8ae460f.jpg)
The square grid with identity relationships on the diagonal is actually just a special case, and you can plot with different variables in the rows and columns.
对角线上具有单位关系的方形网格实际上只是一种特殊情况,也可以在行和列中使用不同的变量进行绘图。
对角线上具有单位关系的方形网格实际上只是一种特殊情况,也可以在行和列中使用不同的变量进行绘图。
```py
g = sns.PairGrid(tips, y_vars=["tip"], x_vars=["total_bill", "size"], height=4)
g.map(sns.regplot, color=".3")
......@@ -300,7 +300,7 @@ g.set(ylim=(-1, 11), yticks=[0, 5, 10]);
![http://seaborn.pydata.org/_images/axis_grids_49_0.png](img/1519f7f68ebbc0bf3fa3072a2edb0838.jpg)
当然,美学属性是可配置的。例如,可以使用不同的调色板(例如,显示色调变量的顺序)并将关键字参数传递到绘图函数中。
当然,美学属性是可配置的。例如,可以使用不同的调色板(例如,显示色调变量的顺序)并将关键字参数传递到绘图函数中。
```py
g = sns.PairGrid(tips, hue="size", palette="GnBu_d")
g.map(plt.scatter, s=50, edgecolor="white")
......@@ -310,7 +310,7 @@ g.add_legend();
![http://seaborn.pydata.org/_images/axis_grids_51_0.png](img/472e90723a05c450ec78ccf39888e6e4.jpg)
[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")很灵活,但要快速查看数据集,使用[`pairplot()`](../generated/seaborn.pairplot.html#seaborn.pairplot "seaborn.pairplot")更容易。此函数默认使用散点图和直方图,但会添加一些其他类型(目前,还可以绘制非对角线上的回归图和对角线上的KDE)。
[`PairGrid`](../generated/seaborn.PairGrid.html#seaborn.PairGrid "seaborn.PairGrid")很灵活,但要快速查看数据集,使用[`pairplot()`](../generated/seaborn.pairplot.html#seaborn.pairplot "seaborn.pairplot")更容易。此函数默认使用散点图和直方图,但会添加一些其他类型(目前,还可以绘制非对角线上的回归图和对角线上的KDE)。
```py
sns.pairplot(iris, hue="species", height=2.5);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册