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
- Fonctions « niveau », y compris les axes
regplot
, boxplot
,kdeplot
et bien d' autres
- Fonctions « Figure-niveau », y compris
lmplot
, factorplot
, jointplot
et un ou deux autres
Le premier groupe est identifié en prenant un ax
argument explicite et en renvoyant un Axes
objet. Comme cela le suggère, vous pouvez les utiliser dans un style "orienté objet" en leur passant votre Axes
:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
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, unlmplot
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 type FacetGrid
. 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 arguments FacetGrid.fig
et FacetGrid.axes
. La jointplot
fonction est très similaire, mais elle utilise un JointGrid
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.