PairGrid の Seaborn 相関係数 質問する

PairGrid の Seaborn 相関係数 質問する

以下に示すように、各二変量プロットの相関係数を表示するために、g.map_lower または g.map_upper で使用できる matplotlib または seaborn プロットはありますか? 以下の例を取得するために、plt.text を手動でマッピングしましたが、これは面倒なプロセスです。

ここに画像の説明を入力してください

ベストアンサー1

map_*いくつかのルールに従っている限り、任意の関数をメソッドに渡すことができます。1) 「現在の」軸にプロットする、2) 位置引数として 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)

ここに画像の説明を入力してください

おすすめ記事