在使用Seaborn的联合图中,如何在图形中设置另一个图例

时间:2018-07-27 03:49:10

标签: python matplotlib jupyter-notebook legend seaborn

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')

enter image description here

  1. 在哪里可以找到所有控制大小,字体,图例位置以及我可以自行定制无花果的东西的详细关键字。因为在他们的官方网站上没有找到有关seaborn文档中关键字的非常详细的描述。我在哪里可以得到? 谢谢

1 个答案:

答案 0 :(得分:1)

您将无法直接从regplot()获取统计信息。 seaborn has said this was not something he wanted to add的作者。

相反,您将必须自己计算r值(即使用statsmodelscipy),然后直接在图例中编写。

关于第二个问题,您可以使用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)

enter image description here