Seaborn PairGrid: show axes labels for each subplot

痞子三分冷 提交于 2021-02-18 07:00:28

问题


Is there a way that I can easily add the axes labels for each of the subplots in Seaborn pair plot? This is related to this question but instead of adding the tick labels I want to add the axes labels as the pairplot I am having is 9*9 and I dont want to scroll down every time to check the column name.

I was hoping that it would be some thing easy like

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

回答1:


You first need to get all the labels from the axes (e.g. ax.xaxis.get_label_text()) and the set the label text (ax.xaxis.set_label_text()).

I've used a for loop and i, j indexing here. Its possible there's a cleaner vectorised way to do this, but at least it works.

Using the iris sample dataset from seaborn:

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



来源:https://stackoverflow.com/questions/33377243/seaborn-pairgrid-show-axes-labels-for-each-subplot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!