2015-06-19 26 views
9

g.map_lower veya g.map_upper ile kullanabileceğim bir matplotlib veya denizanası arsası, aşağıda gösterildiği gibi her iki değişkenli arsa için gösterilen korelasyon katsayısını elde etmek için var mı? plt.text, sıkıcı bir süreç olan aşağıdaki örneği elde etmek için elle eşleştirildi. , 1), "geçerli" eksenler üzerine çizmek gerekir 2) konumsal argümanlar olarak iki vektör almalıdır:Seaborn Korelasyon Katsayısı PairGrid

enter image description here

cevap

18

Sen yeter ki bir kaç kuralı şöyle map_* yöntemlere herhangi bir işlev iletebilirsiniz ve 3) color anahtar kelime bağımsız değişkenini kabul etmelidir (isteğe bağlı olarak, hue seçeneğiyle uyumlu olmak istiyorsanız).

Yani sizin durumda sadece biraz corrfunc işlevi tanımlayın ve sonra açıklamalı gelmiş istediğiniz eksenleri boyunca eşlemek gerekir: mükemmel çalıştı

import numpy as np 
from scipy import stats 
import pandas as pd 
import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="white") 

mean = np.zeros(3) 
cov = np.random.uniform(.2, .4, (3, 3)) 
cov += cov.T 
cov[np.diag_indices(3)] = 1 
data = np.random.multivariate_normal(mean, cov, 100) 
df = pd.DataFrame(data, columns=["X", "Y", "Z"]) 

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

g = sns.PairGrid(df, palette=["red"]) 
g.map_upper(plt.scatter, s=10) 
g.map_diag(sns.distplot, kde=False) 
g.map_lower(sns.kdeplot, cmap="Blues_d") 
g.map_lower(corrfunc) 

enter image description here

+0

teşekkür ederim! – wblack

İlgili konular