2015-10-27 40 views
3

是否有一種方法可以輕鬆地爲Seaborn對區域中的每個子區域添加軸標籤?這與此question有關,但不是添加刻度標籤,而是希望將軸標籤添加爲我所擁有的pairplot是9 * 9,而且我不想每次都向下滾動以檢查列名稱。Seaborn PairGrid:爲每個子區域顯示軸標籤

我希望,這將是一些簡單的事情像

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

它會更好,如果你能提供一個完整的工作示例。但是這對你有用嗎? for g.axes.flat中的ax:012.zip_xlabel – DanHickstein

回答

6

首先需要獲得所有從軸(例如ax.xaxis.get_label_text())和設置標籤的文本(ax.xaxis.set_label_text())的標籤。

我已經使用了for循環和i,j索引在這裏。它可能有一個更清潔的矢量化方式來做到這一點,但至少它的工作原理。

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

enter image description here