繁体   English   中英

根据pearsonr值更改每个PairGrid Seaborn图中的字体颜色:

[英]Changing font color in each PairGrid Seaborn plot based on pearsonr value:

我正在使用seaborn进行绘图,并且正在使用seaborn.PairGrid函数(下面的代码)。

我可以计算出peersonr值并设置我的颜色列表。

有没有一种方法可以根据皮尔逊相关值更改每个成对图的颜色?

global my_colors
my_colors = []

def corrfunc(x, y, **kws):
    r = stats.pearsonr(x, y)[0] ** 2
    ax = plt.gca()
    ax.annotate("r$^2$ = {:.2f}".format(r),
                 xy=(.1, .9), xycoords=ax.transAxes)
    if r > 0.6:
       my_colors.append('g')
    elif r < 0.6:
       my_colors.append('r')
    return r

df = pd.read_excel(Inp_Filename, sheetname='IC_Data')

IC_Plot = sns.PairGrid(df)
IC_Plot.map_offdiag(corrfunc)

IC_Plot.map_offdiag(sns.regplot, color='g') 
#Need to change color of each 
#pairplot based on the pearsonr value

IC_Plot.map_offdiag(plt.scatter, s=10)

IC_Plot.savefig("IC_Pair.png")

您可以从确定颜色的函数中调用绘图方法。 这样,可以简单地将颜色作为绘图函数的参数。

import seaborn.apionly as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr

df = sns.load_dataset("iris")

def corrfunc(x, y, **kws):
    r = pearsonr(x, y)[0] ** 2
    ax = plt.gca()
    ax.annotate("r$^2$ = {:.2f}".format(r),
                 xy=(.1, .9), xycoords=ax.transAxes)
    if r > 0.6:
       col = "g"
    elif r < 0.6:
       col= 'r'

    sns.regplot(x,y,color=col)  
    return r


IC_Plot = sns.PairGrid(df)
IC_Plot.map_offdiag(corrfunc)

plt.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM