[英]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.