【问题标题】:Seaborn PairGrid: show axes labels for each subplotSeaborn PairGrid:显示每个子图的轴标签
【发布时间】:2015-10-29 19:22:15
【问题描述】:

有没有一种方法可以轻松地为 Seaborn 配对图中的每个子图添加轴标签?这与question 有关,但我不想添加刻度标签,而是添加轴标签,因为我拥有的 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')

标签: python matplotlib seaborn


【解决方案1】:

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

我在这里使用了 for 循环和 ij 索引。它可能有一种更清洁的矢量化方式来做到这一点,但至少它有效。

使用来自seaborniris 样本数据集:

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

【讨论】:

    猜你喜欢
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多