2014-10-14 14 views
6

Ich versuche herauszufinden, wie Matplotlib und Seaborn Plotten Funktionen zugeordnet sind. Insbesondere würde ich gerne wissen, welche pyplot Argumente in Schlüsselwortdicts marginal_kws und annot_kws in Funktion seaborn.jointplot() übergeben werden können.Zusätzliche Schlüsselwort Argumente in Seaborn Jointplot

Angenommen, wir haben Datenrahmen data mit Säulen c0 und c1. Ich vermutete, dass joint_kws Argumente von pyplot.hexbin() akzeptiert, so dass, wenn ich von dort mit Argumenten zu stimmen das Aussehen versucht, es funktionierte gut:

import seaborn as sns 
sns.jointplot('c0', 'c1', data=data, kind='hex', 
       joint_kws={'gridsize':100, 'bins':'log', 'xscale':'log', 'yscale':'log'}) 

Dann habe ich versucht gesetzt Skala einzuloggen bei Histogramm-Achsen mit einem Argument log=True von pyplot.hist():

sns.jointplot('c0', 'c1', data=data, kind='hex', 
        joint_kws={'gridsize':100, 'bins':'log', 'xscale':'log', 'yscale':'log'}, 
        marginal_kws={'log':True}) 

Dies führt zu

TypeError: distplot() got an unexpected keyword argument 'log' 

Wie es in Ordnung bringen?

P.S. Bei dieser Frage geht es nicht darum, Log-Skalen in Seaborn zu setzen (mit JointGrid, ich weiß), sondern darum, Matplotlib-Argumente als Ganzes in Seaborn-Funktionen zu übergeben.

+0

Ich kann sehen, dass Sie "Jointplot" verwenden, aber warum ist der Fehler bei 'distplot' aufgetreten? – ThePredator

+0

Ich habe mich nicht im Quellcode vertieft, aber ich nehme an, dass Histogramme am Rand von 'Jointplot' über' distplot' erstellt werden. Ich dachte auch, dass 'marginal_kws'' 'hist, kde, rug, fit} _kws' in' distplot' entspricht, aber es scheint inkorrekt zu sein. – kurtosis

Antwort

6

Das Wörterbuch der Schlüsselwortargumente wird an distplot übergeben, das ein Wörterbuch für hist_kws nimmt. Also musst du etwas wie marginal_kws={'hist_kws': {'log': True}} machen. Mit diesem Argument bleiben geteilte Log-Achsen mit jointplot ein dauerhafter Kopfschmerz, und ich konnte etwas, das gut aus der Box aussah, wenn Sie Ihren Code anpassen. Einige Feinabstimmungen könnten jedoch funktionieren.

Es kann auch nützlich sein, JointGriddirectly zu versuchen, diese Art von Komplexität zu vermeiden.

Verwandte Themen