我想使用seaborn JointGrid / jointplot。
在中间我想添加一个sns.regplot。在边缘两个sns.distplots或直方图。
这不是问题,但我想以不同的方式保留所有三个pplot,并为这三个ppl添加不同的功能和标签。
但我无法解决问题,如果我只是使用预定义的方法,如何获取图的实例:
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot(sns.regplot, sns.distplot)
手动操纵那些。 或者反过来创建一个regplot和两个distplot实例,我定义了我的方式,然后将它们添加到JointGrid中,这意味着,但不幸的是,这些以下方法不存在或不#&#这样做:
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g.add_joint(myreg) # That would be great but doesn't work
g.ax_marg_x.add(mydist1) # Just invented code
g.ax_marg_y.add(mydist2) # Just to show you, the way I'd like to solve the issue
你能给我一个建议,如何解决这个问题?
答案 0 :(得分:1)
好吧,documentation has a few examples。如果您希望两个边距都相同distPlot
:
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot_joint(plt.scatter, color=".5", edgecolor="white")
g = g.plot_marginals(sns.distplot, kde=True, color=".5")
或者如果你想在每个边缘
上有不同的情节g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot_joint(sns.regplot, color="m")
_ = g.ax_marg_x.hist(tips["total_bill"], color="b", alpha=.6,
bins=np.arange(0, 60, 5))
_ = g.ax_marg_y.hist(tips["tip"], color="r", alpha=.6,
orientation="horizontal",
bins=np.arange(0, 12, 1))
然后花了2秒的时间进行实验,确保你可以将自己的自定义绘图函数传递给marginals和jointPlot,并且必须设置一个断点来确定哪个参数确定了边缘图的方向
def customJoint(x,y,*args,**kwargs):
plt.scatter(x,y,color='red')
def customMarginal(x,*args,**kwargs):
sns.distplot(x,color='green', vertical=kwargs['vertical'])
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot(customJoint, customMarginal)