根据 pearsonr 值更改每个 PairGrid Seaborn 图中的字体颜色:
Changing font color in each PairGrid Seaborn plot based on pearsonr value:
我正在使用 seaborn 绘图,我正在使用 seaborn.PairGrid 函数(下面的代码)。
我可以计算 pearsonr 值并设置我的颜色列表。
有没有办法根据 pearsonr 相关值更改每个 pairplot 的颜色?
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()
我正在使用 seaborn 绘图,我正在使用 seaborn.PairGrid 函数(下面的代码)。
我可以计算 pearsonr 值并设置我的颜色列表。
有没有办法根据 pearsonr 相关值更改每个 pairplot 的颜色?
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()