seaborn.JointGrid.__init__#

JointGrid.__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