2016-04-29 1 views
3

Meine Daten wie folgt aussehen:ist es möglich, eine nicht Gaußsche Kernel für die beiden seitlichen Verteilungen in Seaborn zu verwenden jointplot

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

enter image description here

wenn ich kde stattdessen

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

I bin ganz glücklich mit der zweidimensionalen kde-interpolation, weniger mit der lateralen. Das Problem ist so nah beieinander, dass das Maximum der Verteilung an zwei verschiedenen Punkten liegt, was ziemlich irreführend sein könnte.

enter image description here

So, jetzt die eigentliche Frage: ist es möglich, etwas anderes als Gaußsche als Kernel (blau) für die beiden seitlichen Verteilungen angeben? (Ich weiß, dass Gaussian die einzige Option in 2D ist). Weil zum Beispiel 'biw' (grün) ästhetisch besser aussehen könnte (ich bin immer noch nicht überzeugt, dass es mathematisch eine gute Sache ist, die Interpolationen, die mit dem verschiedenen Kernel gemacht wurden, dicht beieinander zu platzieren, so dass sie dasselbe scheinen). Also meine Frage ist, ob ich den verschiedenen Kernel irgendwo in sns.jointplot angeben kann oder die einzige Möglichkeit ist, die laterale Verteilung durch eine andere zu überschreiben, die in einem zweiten Moment berechnet wird.

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

enter image description here

Antwort

2

Sie können einen anderen Kernel für die Rand Parzellen festgelegt:

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 

oder, wenn Sie nur eine marginale Plot ändern möchten, können Sie auf sie 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 können Sie X und Y Axi wechseln s, dh nicht benötigt, wenn Sie die Top-Margin-Darstellung ändern.

+0

brilliant! genau das, was ich gesucht habe, vielen Dank! – cattt84

+0

Ich frage mich, ist es auch möglich, ein Jointplot (mit Kind = 'kde') und marginale Barplots anstelle von Wahrscheinlichkeitsverteilungen zu machen? – cattt84

+0

Vielleicht ist es besser, eine andere Frage zu stellen. Überprüfen Sie diese Seite vorher, es könnte Hinweise für Sie geben: [seaborn joinplot] (https://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.jointplot.html) (6. Handlung) – jrjc

Verwandte Themen