seaborn.JointGrid#

class seaborn.JointGrid(data=None, *, x=None, y=None, hue=None, height=6, ratio=5, space=0.2, palette=None, hue_order=None, hue_norm=None, dropna=False, xlim=None, ylim=None, marginal_ticks=False)#

用于绘制具有边际单变量图的双变量图的网格。

可以使用图形级接口 jointplot() 绘制许多图。当您需要更多灵活性时,直接使用此类。

__init__(data=None, *, x=None, y=None, hue=None, height=6, ratio=5, space=0.2, palette=None, hue_order=None, hue_norm=None, dropna=False, xlim=None, ylim=None, marginal_ticks=False)#

设置子图网格并存储内部数据,以便轻松绘图。

参数:
datapandas.DataFrame, numpy.ndarray, 映射或序列

输入数据结构。可以分配给命名变量的长格式向量集合或将被内部重塑的宽格式数据集。

x, y向量或 data 中的键

指定 x 轴和 y 轴位置的变量。

height数字

图中每个边的尺寸,以英寸为单位(它将是正方形)。

ratio数字

联合轴高度与边际轴高度的比率。

space数字

联合轴和边际轴之间的空间

dropna布尔值

如果为 True,则在绘图之前删除缺失的观察值。

{x, y}lim数字对

在绘图之前将轴限制设置为这些值。

marginal_ticks布尔值

如果为 False,则在边际图的计数/密度轴上抑制刻度。

hue向量或 data 中的键

语义变量,映射到它以确定绘图元素的颜色。注意:与 FacetGridPairGrid 不同,轴级函数必须支持 hue 才能在 JointGrid 中使用它。

palette字符串、列表、字典或 matplotlib.colors.Colormap

选择在映射 hue 语义时使用的颜色的方法。字符串值传递给 color_palette()。列表或字典值意味着分类映射,而颜色映射对象意味着数值映射。

hue_order字符串向量

指定处理和绘制 hue 语义的分类级别的顺序。

hue_norm元组或 matplotlib.colors.Normalize

一对值,以数据单位设置归一化范围,或者一个对象,将数据单位映射到 [0, 1] 区间。使用意味着数值映射。

另请参阅

jointplot

绘制具有单变量边际分布的双变量图。

PairGrid

设置一个图形,其中包含多个变量的联合视图和边际视图。

jointplot

绘制具有单变量边际分布的多个双变量图。

示例

调用构造函数将初始化图形,但不会绘制任何内容

penguins = sns.load_dataset("penguins")
sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
../_images/JointGrid_1_0.png

最简单的绘图方法,JointGrid.plot() 接受一对函数(一个用于联合轴,一个用于两个边缘轴)

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
g.plot(sns.scatterplot, sns.histplot)
../_images/JointGrid_3_0.png

JointGrid.plot() 函数也接受额外的关键字参数,但它将它们传递给这两个函数

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
g.plot(sns.scatterplot, sns.histplot, alpha=.7, edgecolor=".2", linewidth=.5)
../_images/JointGrid_5_0.png

如果你需要将不同的关键字参数传递给每个函数,你将不得不调用 JointGrid.plot_joint()JointGrid.plot_marginals()

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
g.plot_joint(sns.scatterplot, s=100, alpha=.5)
g.plot_marginals(sns.histplot, kde=True)
../_images/JointGrid_7_0.png

你也可以在不分配任何数据的情况下设置网格

g = sns.JointGrid()
../_images/JointGrid_9_0.png

然后你可以通过访问 ax_jointax_marg_xax_marg_y 属性来绘图,这些属性是 matplotlib.axes.Axes 对象

g = sns.JointGrid()
x, y = penguins["bill_length_mm"], penguins["bill_depth_mm"]
sns.scatterplot(x=x, y=y, ec="b", fc="none", s=100, linewidth=1.5, ax=g.ax_joint)
sns.histplot(x=x, fill=False, linewidth=2, ax=g.ax_marg_x)
sns.kdeplot(y=y, linewidth=2, ax=g.ax_marg_y)
../_images/JointGrid_11_0.png

绘图方法可以使用任何接受 xy 变量的 seaborn 函数

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
g.plot(sns.regplot, sns.boxplot)
../_images/JointGrid_13_0.png

如果这些函数接受一个 hue 变量,你可以在调用构造函数时将其分配给 hue

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm", hue="species")
g.plot(sns.scatterplot, sns.histplot)
../_images/JointGrid_15_0.png

可以使用 :meth:JointGrid.refline 将水平和/或垂直参考线添加到联合和/或边缘轴

g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
g.plot(sns.scatterplot, sns.histplot)
g.refline(x=45, y=16)
../_images/JointGrid_17_0.png

该图形始终为正方形(除非你在 matplotlib 层中调整其大小),但其整体大小和布局是可配置的。大小由 height 参数控制。联合和边缘轴之间的相对比例由 ratio 控制,绘图之间的空间量由 space 控制

sns.JointGrid(height=4, ratio=2, space=.05)
../_images/JointGrid_19_0.png

默认情况下,边缘图的密度轴上的刻度被关闭,但这是可以配置的

sns.JointGrid(marginal_ticks=True)
../_images/JointGrid_21_0.png

在设置图形时,也可以定义两个数据轴(在所有绘图中共享)上的限制

sns.JointGrid(xlim=(-2, 5), ylim=(0, 10))
../_images/JointGrid_23_0.png

方法

__init__([data, x, y, hue, height, ratio, ...])

设置子图网格并存储内部数据,以便轻松绘图。

apply(func, *args, **kwargs)

将网格传递给用户提供的函数并返回 self。

pipe(func, *args, **kwargs)

将网格传递给用户提供的函数并返回其值。

plot(joint_func, marginal_func, **kwargs)

通过传递联合和边缘轴的函数来绘制图形。

plot_joint(func, **kwargs)

在网格的联合轴上绘制双变量图。

plot_marginals(func, **kwargs)

在每个边缘轴上绘制单变量图。

refline(*[, x, y, joint, marginal, color, ...])

向联合和/或边缘轴添加参考线。

savefig(*args, **kwargs)

保存图形的图像。

set(**kwargs)

设置每个子图 Axes 上的属性。

set_axis_labels([xlabel, ylabel])

在双变量轴上设置轴标签。

属性

fig

已弃用:首选 figure 属性。

figure

访问 matplotlib.figure.Figure 对象,该对象位于网格之下。