我正在使用seaborn进行策划,我正在使用seaborn.PairGrid函数(下面的代码)。
我可以计算pearsonr值并设置我的颜色列表。
有没有办法根据pearsonr相关值来改变每个配对颜色?
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")
答案 0 :(得分:2)
您可以在确定颜色的函数中调用绘图方法。通过这种方式,颜色可以简单地作为绘图函数的参数给出。
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()