2016-04-29 3 views
3

Мои данные выглядят так:возможно использовать не гауссово ядро ​​для двух боковых распределений в Сиборн jointplot

s1 = sns.jointplot(data.columns[i], 
data.columns[j], 
data=data, 
space=0, color="b", stat_func=None) 

enter image description here

, если я использую KDE вместо

s1 = sns.jointplot(data.columns[i], 
    data.columns[j], 
    data=data, kind = 'kde', 
    space=0, color="b", stat_func=None) 

I я доволен двумерной интерполяцией kde, меньше с боковым. Проблема поставлена ​​так близко друг к другу, что на самом деле предполагает максимум распределения, лежащего в двух разных точках, что может быть довольно обманчивым.

enter image description here

Итак, теперь собственно вопрос: можно ли указать что-то отличное от гауссовского как ядра (синий) для двух боковых распределений? (Я знаю, что гауссовский вариант только в 2D). Потому что, например, «biw» (зеленый) может эстетически выглядеть лучше (я до сих пор не убежден, что математически говорить о том, чтобы сделать интерполяции с другим ядром близко друг к другу, чтобы они казались одинаковыми ...). Поэтому мой вопрос заключается в том, могу ли я указать другое ядро ​​где-нибудь в sns.jointplot или это единственный способ переписать боковое распределение другим, вычисленным во второй момент.

ax1 = sns.distplot(data[data.columns[j]]) 
sns.kdeplot(data[data.columns[j]], kernel= 'biw', ax = ax1) 

enter image description here

ответ

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 

или, если вы хотите изменить только один маргинальный участок, вы можете Replot на них:

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 axi s, то есть не требуется, если вы измените график верхнего края.

+0

блестящий! просто то, что я искал, большое спасибо! – cattt84

+0

Мне было интересно, возможно ли сделать совместный план (с kind = 'kde') и маргинальные штриховки вместо распределения вероятностей? – cattt84

+0

Может быть, лучше задать другой вопрос. Прежде всего проверьте эту страницу, возможно, вам помогут: [seaborn joinplot] (https://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.jointplot.html) (6-й сюжет) – jrjc