Je préfère fortement utiliser matplotlib
dans le style POO:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Cela facilite le suivi de plusieurs figures et sous-graphiques.
Question: Comment utiliser seaborn de cette façon? Ou, comment changer cet exemple en style POO? Comment dire des seaborn
fonctions de traçage comme lmplot
lesquelles Figure
ou vers lesquelles Axes
il trace?
python
oop
matplotlib
seaborn
Flamme gelée
la source
la source
Réponses:
Cela dépend un peu de la fonction Seaborn que vous utilisez.
Les fonctions de traçage dans seaborn sont globalement divisées en deux classes
regplot
,boxplot
,kdeplot
et bien d' autreslmplot
,factorplot
,jointplot
et un ou deux autresLe premier groupe est identifié en prenant un
ax
argument explicite et en renvoyant unAxes
objet. Comme cela le suggère, vous pouvez les utiliser dans un style "orienté objet" en leur passant votreAxes
:Les fonctions au niveau des axes ne tireront que sur un
Axes
et ne joueront pas autrement avec la figure, de sorte qu'elles peuvent coexister parfaitement dans un script matplotlib orienté objet.Le deuxième groupe de fonctions (au niveau de la figure) se distingue par le fait que le tracé résultant peut potentiellement inclure plusieurs axes qui sont toujours organisés de manière «significative». Cela signifie que les fonctions doivent avoir un contrôle total sur la figure, il n'est donc pas possible de tracer, disons, un
lmplot
sur celui qui existe déjà. L'appel de la fonction initialise toujours une figure et la configure pour le tracé spécifique qu'elle dessine.Cependant, une fois que vous avez appelé
lmplot
, il retournera un objet du typeFacetGrid
. Cet objet a des méthodes pour fonctionner sur le tracé résultant qui connaissent un peu la structure du tracé. Il expose également la figure et le tableau d'axes sous-jacents aux argumentsFacetGrid.fig
etFacetGrid.axes
. Lajointplot
fonction est très similaire, mais elle utilise unJointGrid
objet. Vous pouvez donc toujours utiliser ces fonctions dans un contexte orienté objet, mais toute votre personnalisation doit venir après que vous avez appelé la fonction.la source