1。我想用Seaborn绘制“十六进制”样式的联合分布图,并希望使用另一个数据“ all_data”添加回归拟合,并且我希望Pearson的“ r”和“ p-value”由“ all_data”计算得出,但现在由“数据”计算得出,该数据用于绘制“十六进制”图。如何更改代码以实现我的目标。我应该添加哪些关键字?
joint_kws={'gridsize':30}
g=sns.jointplot('nature','space',data,kind='hex',size=20,joint_kws= joint_kws)
sns.regplot(x='nature', y='space',data=all_data, ax=g.ax_joint, scatter=False,color='red')
答案 0 :(得分:1)
您将无法直接从regplot()
获取统计信息。 seaborn has said this was not something he wanted to add的作者。
相反,您将必须自己计算r值(即使用statsmodel
或scipy
),然后直接在图例中编写。
关于第二个问题,您可以使用jointplot()
参数来调整annot_kws=
生成的图例的外观。这是在创建图例时传递给legend()
的值的字典。因此,要知道有效的选项,refer to the documentation for legend()
。
tips = sns.load_dataset("tips")
annot_kws = {'prop':{'family':'monospace', 'weight':'bold', 'size':15}}
# you change the properties of the legend directly when calling jointplot
g = sns.jointplot("total_bill", "tip", data=tips, kind="hex", annot_kws=annot_kws)
sns.regplot(x="total_bill", y="tip", data=tips, ax=g.ax_joint, scatter=False, color='red')
# calculate r and p-value here
r = 0.9
p = 0.05
# if you choose to write your own legend, then you should adjust the properties then
phantom, = g.ax_joint.plot([], [], linestyle="", alpha=0)
g.ax_joint.legend([phantom],['r={:f}, p={:f}'.format(r,p)], **annot_kws)