我的数据如下:
s1 = sns.jointplot(data.columns[i],
data.columns[j],
data=data,
space=0, color="b", stat_func=None)
如果我使用kde而不是
s1 = sns.jointplot(data.columns[i],
data.columns[j],
data=data, kind = 'kde',
space=0, color="b", stat_func=None)
我很满意二维kde插值,而不是横向插值。问题是如此紧密地放在一起实际上表明分布的最大值位于两个不同的点,这可能是非常误导的。
现在真正的问题是:是否有可能为两个横向分布指定与高斯不同的内核(蓝色)? (我知道高斯是2D中的唯一选择)。因为例如' biw' (绿色)可能在美学上看起来更好(我仍然不相信在数学上讲,将不同内核完成的插值放在一起使它们看起来是一样的好事......)。所以我的问题是我是否可以在sns.jointplot中的某处指定不同的内核,或者是在另一个时刻计算的另一个人覆盖横向分布的唯一方法。
ax1 = sns.distplot(data[data.columns[j]])
sns.kdeplot(data[data.columns[j]], kernel= 'biw', ax = ax1)
答案 0 :(得分:2)
您可以为边缘图设置不同的内核:
s1 = sns.jointplot(data.columns[i],
data.columns[j],
data=data, kind = 'kde',
space=0, color="b", stat_func=None,
marginal_kws={"kernel":"biw"}) # like this
或者,如果您只想更改一个边缘图,您可以重新绘制它们:
s1.ax_marg_y.cla() # clear axis
sns.kdeplot(data.y, ax=s1.ax_marg_y, # choose the ax
kernel="biw", # choose your kernel
legend=0, # remove the legend
vertical=True) # swap axis
vertical=True
允许您切换x和y轴,即如果更改上边距图则不需要。