如何在 Seaborn PairGrid 中对齐 y 标签

3

摘自文档

>>> import matplotlib.pyplot as plt
>>> import seaborn as sns; sns.set()
>>> iris = sns.load_dataset("iris")
>>> g = sns.PairGrid(iris)
>>> g = g.map(plt.scatter)

PairGrid

如何对齐 y 轴标签?

我尝试过:

for ax in g.axes.flat:
    ax.yaxis.labelpad = 20

然而,这只是将所有标签按指定数量移动而不是对齐它们。


对我来说,它们看起来已经足够对齐了。 - Stop harming Monica
3个回答

6

是的,那个对齐方式很糟糕。一个号称能够制作"优美的统计图形"的包居然在标签对齐方面如此糟糕?!开玩笑的,我很喜欢seaborn,至少可以从中获得灵感来改进我的绘图。

您正在寻找:

ax.get_yaxis().set_label_coords(x,y) # conveniently in axis coordinates

此外,我只会迭代显示标签的轴,但这只是我的个人偏好:
for ax in g.axes[:,0]:
    ax.get_yaxis().set_label_coords(-0.2,0.5)

0.5表示垂直居中对齐,-0.2表示略微向左偏移(试错法)。

enter image description here


哇,太好了。我找到了一种解决方案,通过迭代g.axes.flat并为每组轴分配特定的ax.yaxis.labelpad来实现。然而,这绝对比你的方法更需要试错。谢谢! :-) - Xiphias

1
如果要遍历所有轴,g.axes.flatten() 对我很有用。
for ax in g.axes.flatten():
    ax.get_yaxis().set_label_coords(-0.2,0.5)

0
简单的方法:
g.figure.align_ylabels(g.axes.flatten())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接