如何为seaborn pairplot中的每个变量设置个性化图例?

时间:2016-03-10 11:01:02

标签: python seaborn

我正在使用此代码

sns.set(palette="dark")

g=sns.pairplot(PCA_atrF_df, x_vars={'CP1','CP3','ModCP2'}, hue= 'Hemis',
               y_vars={'Media','SD','DesMax', 'DesMin' })

def corrfunc(x, y, **kws):
    r, _ = stats.pearsonr(x, y)
    ax = plt.gca()
    ax.annotate("r = {:.2f}".format(r),
                xy=(.65, .03), xycoords=ax.transAxes)

g.map(corrfunc)      
sns.plt.show()

xy vars是数据框的列(PCA_atrF_df)。我也有两个类别(“Hemis”:Sur或Norte),我和r2(皮尔森)合作得到这个情节:

但我需要将x个传奇个性化为:

'CP1: 0.71'   'ModCP2: 0.17'   'CP3: 0.05'

数字来自此阵列的前3个位置:

array([ 0.71147788,  0.17629621,  0.05131766,  0.02616651,  0.01864328,
        0.00529765,  0.0043043 ,  0.00197723,  0.00146853,  0.00112802,
        0.0010507 ,  0.00087202])

此外,正如您所看到的,每个图中都存在模糊的r2(皮尔逊相关),因为我为每个“Hemis”获得了一个相关性。尽管de“Hemis”可以调整一个r2作为孔组,但是可以保留每个“hemis”的颜色吗?

1 个答案:

答案 0 :(得分:0)

我使用相关问题以不那么优雅的方式解决了个性化传奇,但至少是有效的。以防任何人需要它或可以改善它。我仍然期待解决独特的相关问题(两个类别中的一个r2)。

sns.set(palette="dark")

g=sns.pairplot(PCA_atrF_df, x_vars=['CP1','ModCP2','CP3'], hue='Hemis',
               y_vars=['DesMax', 'DesMin','SD','Media'])

def corrfunc(x, y, **kws):
    r, _ = stats.pearsonr(x, y)
    ax = plt.gca()
    ax.annotate("r = {:.2f}".format(r),
                xy=(.65, .03), xycoords=ax.transAxes)

g.map(corrfunc)  

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

        g.axes[3,i].xaxis.set_label_text(xlabels[i]+ ': '+ str(pca.fracs[i])[:4])


plt.show()

enter image description here

在这种情况下,我想添加的图例是(前3个数字):

array([  6.13922272e-01,   2.94925588e-01,   4.30136304e-02,
         2.94031518e-02,   7.90963090e-03,   4.43885165e-03,
         3.09109701e-03,   1.17998760e-03,   8.80521733e-04,
         5.21848967e-04,   4.39901495e-04,   2.73517962e-04])