Dipende un po 'dalla funzione Seaborn che stai usando.
Le funzioni di tracciamento in seaborn sono sostanzialmente divise in due classi
- Funzioni "Assi-livello", tra cui
regplot
, boxplot
, kdeplot
, e molti altri
- Funzioni "livello Figura", tra cui
lmplot
, factorplot
, jointplot
e uno o due altri
Il primo gruppo viene identificato prendendo un ax
argomento esplicito e restituendo un Axes
oggetto. Come suggerisce questo, puoi usarli in uno stile "orientato agli oggetti" passando Axes
loro il tuo :
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Le funzioni a livello di assi attingeranno solo a un Axes
e altrimenti non interferiranno con la figura, quindi possono coesistere perfettamente felicemente in uno script matplotlib orientato agli oggetti.
Il secondo gruppo di funzioni (a livello di figura) si distingue per il fatto che il grafico risultante può potenzialmente includere più assi che sono sempre organizzati in modo "significativo". Ciò significa che le funzioni devono avere il controllo totale sulla figura, quindi non è possibile tracciare, diciamo, una lmplot
su una che già esiste. La chiamata alla funzione inizializza sempre una figura e la imposta per il grafico specifico che sta disegnando.
Tuttavia, una volta chiamato lmplot
, restituirà un oggetto del tipo FacetGrid
. Questo oggetto ha alcuni metodi per operare sulla trama risultante che conoscono un po 'la struttura della trama. Espone anche la figura sottostante e la matrice di assi in corrispondenza degli argomenti FacetGrid.fig
e FacetGrid.axes
. La jointplot
funzione è molto simile, ma utilizza un JointGrid
oggetto. Quindi puoi ancora usare queste funzioni in un contesto orientato agli oggetti, ma tutta la tua personalizzazione deve avvenire dopo aver chiamato la funzione.