有没有办法可以轻松地为 Seaborn 对图中的每个子图添加轴标签?这与这个 question 相关,但我想添加轴标签而不是添加刻度标签,因为我拥有的配对图是 9*9 并且我不想每次都向下滚动以检查列名。

我希望这会是一些简单的事情

for ax in g.axes.flat:
    _ = plt.setp(ax.get_ylabels(), visible=True)
    _ = plt.setp(ax.get_xlabels(), visible=True)

最佳答案

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

我在这里使用了for循环和ij索引。可能有一种更简洁的矢量化方法来执行此操作,但至少它能起作用。

使用来自 irisseaborn 样本数据集:

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()

python - Seaborn PairGrid : show axes labels for each subplot-LMLPHP

关于python - Seaborn PairGrid : show axes labels for each subplot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33377243/

10-14 00:58