Seaborn在PairGrid上的相关系数

22

是否有一个matplotlib或seaborn图可以与g.map_lower或g.map_upper一起使用,以便为每个二元图显示相关系数,如下所示? plt.text是手动映射的,以获得下面的示例,这是一个繁琐的过程。


这个回答解决了你的问题吗?在Python的Seaborn中使用pairplot显示相关系数值 - iacob
1个回答

57

只要遵循几个规则,你可以将任何函数传递给 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)

输入图像描述


3
这个等高线图代表什么? - GeorgeOfTheRF
3
好的,你可以将distplot更新为histplot,因为distplot已经被弃用。 - Nando

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接