Prefiero usar matplotlib
en estilo OOP:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Esto facilita el seguimiento de varias figuras y subtramas.
Pregunta: ¿Cómo usar seaborn de esta manera? O, ¿cómo cambiar este ejemplo al estilo OOP? ¿Cómo distinguir seaborn
funciones de trazado como a lmplot
cuál Figure
o Axes
a?
python
oop
matplotlib
seaborn
Llama congelada
fuente
fuente
Respuestas:
Depende un poco de qué función seaborn esté utilizando.
Las funciones de trazado en seaborn se dividen ampliamente en dos clases
regplot
,boxplot
,kdeplot
, y muchos otroslmplot
,factorplot
,jointplot
y uno o dos otrosEl primer grupo se identifica tomando un
ax
argumento explícito y devolviendo unAxes
objeto. Como sugiere esto, puede usarlos en un estilo "orientado a objetos" pasándoles suAxes
: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 tipoFacetGrid
. 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 argumentosFacetGrid.fig
yFacetGrid.axes
. Lajointplot
función es muy similar, pero usa unJointGrid
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.fuente