seaborn.PairGrid#
- class seaborn.PairGrid(data, *, hue=None, vars=None, x_vars=None, y_vars=None, hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True, height=2.5, aspect=1, layout_pad=0.5, despine=True, dropna=False)#
用于绘制数据集中的成对关系的子图网格。
此对象将数据集中每个变量映射到多个轴网格中的一列和一行。可以使用不同的轴级绘图函数在上下三角形中绘制双变量图,并且可以将每个变量的边缘分布显示在对角线上。
使用
pairplot()
,在一行中生成几种不同的常用图。当您需要更多灵活性时,请使用PairGrid
。有关更多信息,请参见教程。
- __init__(data, *, hue=None, vars=None, x_vars=None, y_vars=None, hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True, height=2.5, aspect=1, layout_pad=0.5, despine=True, dropna=False)#
初始化绘图图形和 PairGrid 对象。
- 参数:
- dataDataFrame
整洁(长格式)数据帧,其中每一列都是一个变量,每一行都是一个观察值。
- hue字符串(变量名称)
data
中的变量,用于将绘图方面映射到不同的颜色。此变量将从默认的 x 和 y 变量中排除。- vars变量名称列表
data
中要使用的变量,否则使用所有具有数字数据类型的列。- {x, y}_vars变量名称列表
data
中要分别用于图形行和列的变量;即,创建非方形图。- hue_order字符串列表
调色板中色调变量级别的顺序
- palette字典或 seaborn 调色板
用于映射
hue
变量的颜色集。如果为字典,则键应为hue
变量中的值。- hue_kwsparam -> 值列表映射的字典
其他关键字参数,插入到绘图调用中,以便让其他绘图属性在色调变量的各个级别上变化(例如,散点图中的标记)。
- corner布尔值
如果为 True,则不会将轴添加到网格的上(非对角线)三角形中,使其成为“角”图。
- height标量
每个面的高度(以英寸为单位)。
- aspect标量
宽高比 * 高度给出每个面的宽度(以英寸为单位)。
- layout_pad标量
轴之间的填充;传递给
fig.tight_layout
。- despine布尔值
从绘图中移除顶部和右侧的脊柱。
- dropna布尔值
在绘制之前从数据中删除缺失值。
示例
调用构造函数将设置一个空白的子图网格,其中每一行和一列对应于数据集中一个数值变量
penguins = sns.load_dataset("penguins") g = sns.PairGrid(penguins)
将双变量函数传递给
PairGrid.map()
将在每个轴上绘制双变量图g = sns.PairGrid(penguins) g.map(sns.scatterplot)
将单独的函数传递给
PairGrid.map_diag()
和PairGrid.map_offdiag()
将在对角线上显示每个变量的边缘分布。g = sns.PairGrid(penguins) g.map_diag(sns.histplot) g.map_offdiag(sns.scatterplot)
也可以在图的上三角和下三角使用不同的函数(否则会冗余)。
g = sns.PairGrid(penguins, diag_sharey=False) g.map_upper(sns.scatterplot) g.map_lower(sns.kdeplot) g.map_diag(sns.kdeplot)
或者完全避免冗余。
g = sns.PairGrid(penguins, diag_sharey=False, corner=True) g.map_lower(sns.scatterplot) g.map_diag(sns.kdeplot)
PairGrid
构造函数接受一个hue
变量。此变量直接传递给理解它的函数。g = sns.PairGrid(penguins, hue="species") g.map_diag(sns.histplot) g.map_offdiag(sns.scatterplot) g.add_legend()
但你也可以传递 matplotlib 函数,在这种情况下,内部会执行 groupby 并为每个级别绘制一个单独的图。
g = sns.PairGrid(penguins, hue="species") g.map_diag(plt.hist) g.map_offdiag(plt.scatter) g.add_legend()
通过在映射函数时直接传递数据向量,可以分配其他语义变量。
g = sns.PairGrid(penguins, hue="species") g.map_diag(sns.histplot) g.map_offdiag(sns.scatterplot, size=penguins["sex"]) g.add_legend(title="", adjust_subtitles=True)
当使用可以实现数值色调映射的 seaborn 函数时,你将需要禁用对角轴上变量的映射。请注意,
hue
变量被排除在默认显示的变量列表之外。g = sns.PairGrid(penguins, hue="body_mass_g") g.map_diag(sns.histplot, hue=None, color=".3") g.map_offdiag(sns.scatterplot) g.add_legend()
vars
参数可用于精确控制使用哪些变量。variables = ["body_mass_g", "bill_length_mm", "flipper_length_mm"] g = sns.PairGrid(penguins, hue="body_mass_g", vars=variables) g.map_diag(sns.histplot, hue=None, color=".3") g.map_offdiag(sns.scatterplot) g.add_legend()
绘图不必是正方形:可以使用单独的变量来定义行和列。
x_vars = ["body_mass_g", "bill_length_mm", "bill_depth_mm", "flipper_length_mm"] y_vars = ["body_mass_g"] g = sns.PairGrid(penguins, hue="species", x_vars=x_vars, y_vars=y_vars) g.map_diag(sns.histplot, color=".3") g.map_offdiag(sns.scatterplot) g.add_legend()
探索对角线轴上多个分布的不同解决方法可能很有用。
g = sns.PairGrid(penguins, hue="species") g.map_diag(sns.histplot, multiple="stack", element="step") g.map_offdiag(sns.scatterplot) g.add_legend()
方法
__init__
(data, *[, hue, vars, x_vars, ...])初始化绘图图形和 PairGrid 对象。
add_legend
([legend_data, title, ...])绘制图例,可能将其放置在轴外部并调整图形大小。
apply
(func, *args, **kwargs)将网格传递给用户提供的函数并返回自身。
map
(func, **kwargs)在每个子图中使用相同的函数绘制图形。
map_diag
(func, **kwargs)在每个对角线子图上使用单变量函数绘制图形。
map_lower
(func, **kwargs)在下对角线子图上使用双变量函数绘制图形。
map_offdiag
(func, **kwargs)在非对角线子图上使用双变量函数绘制图形。
map_upper
(func, **kwargs)在上对角线子图上使用双变量函数绘制图形。
pipe
(func, *args, **kwargs)将网格传递给用户提供的函数并返回其值。
savefig
(*args, **kwargs)保存绘图的图像。
set
(**kwargs)在每个子图 Axes 上设置属性。
tick_params
([axis])修改刻度、刻度标签和网格线。
tight_layout
(*args, **kwargs)在排除图例的矩形内调用 fig.tight_layout。
属性
fig
已弃用:首选
figure
属性。figure
访问网格底层的
matplotlib.figure.Figure
对象。legend
如果存在,则为
matplotlib.legend.Legend
对象。