Seaborn Pairgrid:如何共享所有非对角线图的所有轴(即每个图与其镜像共享轴)?

Seaborn Pairgrid: How to share all axes for all off-diagonal plots (i.e each plot shares axes with its mirror)?

我正在尝试绘制 3x3 sns.PairGrid 的地块。目前,底部三角形和上部三角形分别共享轴。换句话说,x 轴和 y 轴仅与它们各自的 columns/row 共享。因此图 (1,0) 的 x 轴与 (0,0)(2,0) 共享。

但是,我希望所有非对角线图都共享它们的轴。因此,例如,我希望 (1,0) 像以前一样与 (0,0)(2,0) 共享其 x 轴,但 也与 (0,1) 共享。

此外,如果 y 轴不与对角线上的图共享,我会更喜欢它,因为那些是一维核密度图,所以如果我共享它们的 y 轴,其中一些将不可见,因为概率密度函数的大小不同。

如果有帮助,这是我当前的代码:

我正在绘制的 3 个参数称为 'A'、'C' 和 'logsw',并包含在名为 [=20= 的 pandas.DataFrame 中]

g = sns.PairGrid(hyperparams, diag_sharey=False)
g.map_lower(sns.kdeplot)
g.map_upper(plt.scatter, marker='+')
g.map_diag(sns.kdeplot)

这是输出图的一个简单示例:

左下角的图像与右上角的图像缩放比例不同,这是我试图避免的。

目前无法在 Seaborn 中自动执行此操作。评论中建议的似乎已经解决问题的解决方法是手动为对角线子图设置轴限制。为 x 和 y 限制使用变量可确保在更新轴范围时只需要在一个地方更改它们。

高级,您可以手动设置 x 和 y 限制和刻度线。您还可以将变量设置为您想要共享的内容,然后在 3 个子图中重用该变量。

这样一来,如果您需要进行调整,只需更新变量,共享它的 3 个图现在会同时更新。

过去,我为 Pair 网格创建了代码,我在其中设置了沿 y 轴的所有子图的限制和刻度,并以此方式设置了沿 x 轴的所有图。