2014-10-14 15 views
6

Próbuję dowiedzieć się, jak powiązane są funkcje plotowania matplotlib i seaborn. W szczególności chciałbym wiedzieć, jakie argumenty pyplot można przekazać do słów kluczowych: marginal_kws i annot_kws w funkcji seaborn.jointplot().Dodatkowe argumenty dotyczące słów kluczowych w planie działek seaborn

Załóżmy, że mamy DataFrame data z kolumnami c0 i c1. Domyślałem się, że joint_kws przyjmuje argumenty z pyplot.hexbin(), więc kiedy próbowałem dostroić wygląd z argumentów Stamtąd to działało w porządku:

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

Potem próbowałem ustawić skala logarytmiczna na histogramie osie z argumentem log=True z pyplot.hist():

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

wynika to w

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

Jak ujął to prawda?

P.S. To pytanie nie dotyczy ustawiania skal dziennika w seaborn (z JointGrid, wiem), ale raczej o przekazywaniu argumentów matplotlib do funkcji seaborn jako całości.

+0

Widzę, że używasz 'jointplot', ale dlaczego błąd pojawia się na' distplot'? – ThePredator

+0

Nie zagłębiłem się w kodzie źródłowym, ale przypuszczam, że histogramy na marginesach 'jointplot' są konstruowane przez' distplot'. Również myślałem, że 'marginal_kws' odpowiada' {hist, kde, rug, fit} _kws' w 'distplot', ale wydaje się być niepoprawne. – kurtosis

Odpowiedz

6

Słownik argumentów słów kluczowych zostaje przekazany do distplot, który pobiera słownik dla hist_kws. Musisz więc zrobić coś takiego, jak marginal_kws={'hist_kws': {'log': True}}. Mając to na uwadze, współdzielone osie logu pozostają trwałym bólem głowy z jointplot, a podczas dostosowywania kodu nie mogłem uzyskać czegoś, co wyglądałoby dobrze po wyjęciu z pudełka. Jednak niektóre poprawki mogą sprawić, że będzie działał.

Może być również przydatne wypróbowanie i użycie JointGriddirectly, aby uniknąć tego rodzaju złożoności.

Powiązane problemy