Funciones a nivel de figura y de ejes

En seaborn hay dos tipos de funciones gráficas: funciones a nivel de figura y funciones a nivel de ejes. Las primeras son funciones de alto nivel que gestionan la figura y el conjunto de ejes que las contiene, así como la leyenda. Funciones de este tipo son seaborn.relplot y seaborn.catplot, por ejemplo. Pero estas funciones acaban ejecutando una función a nivel de ejes. ¿Cuál? La indicada por el parámetro kind. Veamos, por ejemplo, la siguiente función:

sns.catplot(x = "day", y = "total_bill", kind = "swarm", data = tips)

La imagen que devuelve es la siguiente:

Funciones a nivel de figura y de ejes

Se trata de una función a nivel de figura que, tras crear la figura y el conjunto de ejes, llamará a la función a nivel de ejes seaborn.swarmplot (cosa que sabemos por el valor del parámetro kind: "swarm") pasándole los valores de x, y y data indicados. Por ejemplo, si, en lugar de la anterior instrucción, llamamos directamente a seaborn.swarmplot:

sns.swarmplot(x = "day", y = "total_bill", data = tips);

...el resultado sería el siguiente:

Funciones a nivel de figura y de ejes

...semejante al anterior, pero quedando en nuestras manos el control de la figura (incluyendo su tamaño) y conjunto de ejes.

Las funciones a nivel de ejes, como la mencionada seaborn.swarmplot, son funciones de más bajo nivel que se crean en un conjunto concreto de exes (que puede ser indicado como argumento) y que, por lo tanto, no influye en el resto de la figura. 

Otro ejemplo: la función a nivel de figura seaborn.relplot puede ejecutar la función seaborn.scatterplot (si el parámetro kind toma el valor "scatter") o la función seaborn.lineplot (si el parámetro kind toma el valor "line"). Veremos estas funciones en breve.

A la hora de crear visualizaciones podemos utilizar tanto un tipo como el otro. Tan solo deberemos saber que no podremos controlar la figura ni el eje de las funciones a nivel de figura, cosa que sí podremos hacer con las funciones a nivel de eje. Posiblemente las funciones a nivel de figura son más apropiadas para análisis exploratorio, pues no tenemos que molestarnos en crear la figura, la leyenda, etc.

Podemos distinguir unas funciones de otras viendo si admiten el parámetro ax: Si lo admiten, se trata de funciones a nivel de ejes. Otra forma de saberlo es viendo el tipo del resultado que devuelven: si se trata de un objeto tipo "axes" de matplotlib, se trata de una función a nivel de ejes. Si, por el contrario, se trata de un objeto "FacetGrid", es una función a nivel de figura.