如何解决Seaborn关节图用相关注释
在发布最新的seaborn版本之前,我可以使用以下内容对皮尔逊Rho注释我的情节。
使用最新版本,我无法找到一种与#ax.annotate(stats.pearsonr)
相同的方法。
import matplotlib as mpl
import scipy.stats as stat
import matplotlib.pyplot as plt
import pandas as pd,numpy as np
import scipy.stats as stats
import seaborn as sns
X = np.random.rand(10,2)
df = pd.DataFrame(X,columns=['v1','v2'])
a = df.v1.values
b = a*2 + a**5
print("The Rho is {}".format(np.corrcoef(a,b)[0][1]))
ax = sns.jointplot(a,b,kind='reg',color='royalblue')
#ax.annotate(stats.pearsonr)
ax.ax_joint.scatter(a,b)
ax.set_axis_labels(xlabel='a',ylabel='b',size=15)
plt.tight_layout()
plt.show()
我无法获得的旧输出:
解决方法
sns.jointplot
不会返回ax
,而是返回JointGrid
。您可以将ax_joint
,ax_marg_x
和ax_marg_y
用作普通matplotlib轴,以对子图进行更改,例如添加注释。
这是一个使用轴分数坐标进行定位的示例。
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import seaborn as sns
a = np.random.rand(10)
b = a * 2 + a ** 5
print("The Rho is {}".format(np.corrcoef(a,b)[0][1]))
g = sns.jointplot(x=a,y=b,kind='reg',color='royalblue')
# ax.annotate(stats.pearsonr)
r,p = stats.pearsonr(a,b)
g.ax_joint.annotate(f'$\\rho = {r:.3f},p = {p:.3f}$',xy=(0.1,0.9),xycoords='axes fraction',ha='left',va='center',bbox={'boxstyle': 'round','fc': 'powderblue','ec': 'navy'})
g.ax_joint.scatter(a,b)
g.set_axis_labels(xlabel='a',ylabel='b',size=15)
plt.tight_layout()
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。