Seaborn implot与方程和R2文本

use*_*545 9 python matplotlib seaborn

在我的常规数据分析工作中,我已经切换到使用100%python,因为seaborn包可用.非常感谢这个精彩的套餐.但是,我想念的一个excel-chart功能是在使用lmplot()函数时显示polyfit方程和/或R2值.有谁知道添加它的简单方法?

mwa*_*kom 22

它不能与自动完成lmplot,因为它是不确定什么时候有多重回归拟合(即使用该值应与hue,rowcol变量.

但这是类似jointplot功能的一部分.默认情况下,它显示相关系数和p值:

import seaborn as sns
import numpy as np

x, y = np.random.randn(2, 40)
sns.jointplot(x, y, kind="reg")
Run Code Online (Sandbox Code Playgroud)

但是你可以通过任何功能.如果你想要R ^ 2,你可以这样做:

from scipy import stats
def r2(x, y):
    return stats.pearsonr(x, y)[0] ** 2
sns.jointplot(x, y, kind="reg", stat_func=r2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 尽管它曾经在 Seaborn `0.9` 中工作,但在 Seaborn `0.11` 中不再支持。 (5认同)

小智 8

这现在可以使用FacetGrid方法 .map() 或 .map_dataframe() 来完成:

import seaborn as sns
import scipy as sp

tips = sns.load_dataset('tips')
g = sns.lmplot(x='total_bill', y='tip', data=tips, row='sex',
               col='time', height=3, aspect=1)

def annotate(data, **kws):
    r, p = sp.stats.pearsonr(data['total_bill'], data['tip'])
    ax = plt.gca()
    ax.text(.05, .8, 'r={:.2f}, p={:.2g}'.format(r, p),
            transform=ax.transAxes)
    
g.map_dataframe(annotate)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明