/ / Корекція коефіцієнта кореляції на кораблі на PairGrid - python, sevorn

Кореляційний коефіцієнт кореляції морів на PairGrid - python, sevorn

Чи існує маплотліб або морський сюжет, який я міг би використовуватиз g.map_lower або g.map_upper, щоб отримати коефіцієнт кореляції для кожного двомовного сюжету, як показано нижче? Plt.text був вручений вручну, щоб отримати приклад нижче, який є виснажливим процесом.

введіть опис зображення тут

Відповіді:

27 за відповідь № 1

Ви можете передавати будь-яку функцію до map_* методи, якщо це випливає з декількох правил: 1) він повинен зачіпатися на "поточних" осях; 2) він повинен приймати два вектори як позиційні аргументи; 3) він повинен прийняти color аргумент ключового слова (необов'язково використовуючи його, якщо ви хочете бути сумісним з hue варіант)

Так що у вашому випадку вам просто потрібно трохи визначити corrfunc функція, а потім перемістіть її по осях, які ви хочете анотовані:

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)

введіть опис зображення тут