Depende un poco de qué función seaborn esté utilizando.
Las funciones de trazado en seaborn se dividen ampliamente en dos clases
- Funciones "Ejes nivel", incluyendo
regplot
, boxplot
, kdeplot
, y muchos otros
- Funciones de "nivel Figura", incluyendo
lmplot
, factorplot
, jointplot
y uno o dos otros
El primer grupo se identifica tomando un ax
argumento explícito y devolviendo un Axes
objeto. Como sugiere esto, puede usarlos en un estilo "orientado a objetos" pasándoles su Axes
:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Las funciones de nivel de ejes solo se dibujarán en una Axes
figura y no se enredarán con la figura, por lo que pueden coexistir perfectamente y felizmente en un script matplotlib orientado a objetos.
El segundo grupo de funciones (nivel de figura) se distingue por el hecho de que la gráfica resultante puede incluir potencialmente varios ejes que siempre están organizados de una manera "significativa". Eso significa que las funciones deben tener un control total sobre la figura, por lo que no es posible trazar, digamos, una lmplot
sobre una que ya existe. Llamar a la función siempre inicializa una figura y la configura para el gráfico específico que está dibujando.
Sin embargo, una vez que haya llamado lmplot
, devolverá un objeto del tipo FacetGrid
. Este objeto tiene algunos métodos para operar en la trama resultante que conocen un poco sobre la estructura de la trama. También expone la figura subyacente y la matriz de ejes en los argumentos FacetGrid.fig
y FacetGrid.axes
. La jointplot
función es muy similar, pero usa un JointGrid
objeto. Por lo tanto, aún puede usar estas funciones en un contexto orientado a objetos, pero toda su personalización debe realizarse después de haber llamado a la función.