/ / Seaborn Correlation Coefficient na PairGrid - python, morské plody

Koeficient korelácie na morskom dne v PairGrid - python, morský dážď

Môžem použiť matplotlib alebo morský plods g.map_lower alebo g.map_upper získať korelačný koeficient zobrazený pre každý bivariate graf, ako je uvedené nižšie? plt.text bol manuálne mapovaný, aby sa dosiahol príklad uvedený nižšie, ktorý je zdĺhavý proces.

tu zadajte popis obrázku

odpovede:

27 pre odpoveď č. 1

Môžete odovzdať akúkoľvek funkciu map_* metódy, pokiaľ sa riadi niekoľkými pravidlami: 1) mal by sa kresliť na "aktuálnych" osiach, 2) mal by mať dva vektory ako pozičné argumenty a 3) mal by akceptovať color kľúčového slova (voliteľne ho použijete, ak chcete byť kompatibilný s hue voľba).

Takže vo vašom prípade stačí trochu definovať corrfunc funkciu a potom ju namapujte naprieč osami, ktoré chcete označiť:

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)

tu zadajte popis obrázku