我想使用 seaborn 的 JointGrid/jointplot。
在中间我想添加一个sns.regplot。在边距上有两个 sns.distplots 或直方图。
这不是问题,但我想以不同方式自定义所有三个 pplot,并为所有三个添加不同的拟合函数和标签。
但我无法解决问题,如果我只使用预定义的方法如何获取绘图的实例:
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
你能给我一个建议,如何解决这个问题吗?
嗯,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 秒的时间进行实验,以确保您可以将自己的自定义绘图函数传递给边缘图和 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)
我是一名优秀的程序员,十分优秀!