Seaborn PairGrid:显示每个子图的坐标轴标签

7
有没有一种简单的方法可以在Seaborn对图进行配对时轻松添加每个子图的坐标轴标签?这与此问题有关,但我想添加的是坐标轴标签,因为我拥有的pairplot是9*9的,我不想每次都向下滚动以检查列名。
我希望它会像以下内容一样容易:
for ax in g.axes.flat:
    _ = plt.setp(ax.get_ylabels(), visible=True)
    _ = plt.setp(ax.get_xlabels(), visible=True)

如果您能够提供一个完整的可工作示例会更好。但是这对您是否有效?对于g.axes.flat中的每个ax:ax.set_xlabel('myLabel') - DanHickstein
1个回答

13

您需要首先从坐标轴获取所有标签(例如ax.xaxis.get_label_text()),然后设置标签文本(ax.xaxis.set_label_text())。

我在这里使用了for循环和ij索引。可能有更清晰的向量化方法来完成此操作,但至少它可以工作。

使用seaborn中的iris示例数据集:

import pandas as pd
import numpy as np    
import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

g = sns.PairGrid(iris)
g = g.map(plt.scatter)

xlabels,ylabels = [],[]

for ax in g.axes[-1,:]:
    xlabel = ax.xaxis.get_label_text()
    xlabels.append(xlabel)
for ax in g.axes[:,0]:
    ylabel = ax.yaxis.get_label_text()
    ylabels.append(ylabel)

for i in range(len(xlabels)):
    for j in range(len(ylabels)):
        g.axes[j,i].xaxis.set_label_text(xlabels[i])
        g.axes[j,i].yaxis.set_label_text(ylabels[j])

plt.show()

这里输入图片描述


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