Entendiendo matplotlib: plt, figura, hacha (arr)?

Realmente no soy nuevo en matplotlib y estoy profundamente avergonzado de admitir que siempre lo he usado como una herramienta para obtener una solución lo más rápida y fácil posible. Así que sé cómo obtener plots básicas, subplots y demás, y tengo un buen número de códigos que se reutilizan de vez en cuando … pero no tengo un “conocimiento profundo” de matplotlib .

Recientemente pensé que debería cambiar esto y trabajar a través de algunos tutoriales. Sin embargo, todavía estoy confundido acerca de matplotlibs plt , fig(ure) y ax(arr) . ¿Cuál es realmente la diferencia?

En la mayoría de los casos, para algunas ttwigs “rápidas y rápidas” veo a personas que usan solo pyplot as plt y trazan directamente con plt.plot . Como tengo muchas cosas para trazar bastante a menudo, frecuentemente uso f, axarr = plt.subplots() … pero la mayoría de las veces solo ve código que pone datos en el axarr e ignora la figura f .

Entonces, mi pregunta es: ¿cuál es una forma limpia de trabajar con matplotlib? Cuándo usar solo plt , ¿qué es o para qué se debe usar una figure ? ¿Deben subplots que solo contienen datos? ¿O es válido y es una buena práctica para todo, como diseñar, borrar una ttwig, …, dentro de las subplots?

Espero que esto no sea de gran scope. Básicamente, estoy pidiendo algunos consejos para los verdaderos propósitos de plt fig ax(arr) (y cuándo / cómo usarlos correctamente).

Tutoriales también serían bienvenidos. La documentación de matplotlib es bastante confusa para mí. Cuando se busca algo realmente específico, como cambiar el tamaño de una leyenda, diferentes marcadores de ttwig y colores, la documentación oficial es muy precisa pero la información general no es tan buena en mi opinión. Demasiados ejemplos diferentes, sin explicaciones reales de los propósitos … se parece más o menos a una gran lista de todos los métodos y argumentos API posibles.

pyplot es la API de nivel de ‘scripting’ en matplotlib (su API de nivel más alto para hacer mucho con matplotlib). Le permite usar matplotlib usando una interfaz de procedimiento de manera similar a como lo puede hacer con Matlab. pyplot tiene una noción de ‘figura actual’ y ‘ejes actuales’ que todas las funciones delegan a (@tacaswell dixit). Por lo tanto, cuando utiliza las funciones disponibles en la pyplot del módulo, está trazando la “figura actual” y los “ejes actuales”.

Si desea un control de grano fino de dónde / qué está trazando, debe utilizar una API orientada a objetos utilizando instancias de Figure y Axes .

Las funciones disponibles en pyplot tienen un método equivalente en los Axes .

Desde la anatomía del repo de matplotlib :

  • La Figure es el contenedor de nivel superior en esta jerarquía. Es la ventana / página general en la que se dibuja todo. Puede tener varias figuras independientes y las figuras pueden contener múltiples ejes.

Pero…

  • La mayor parte del trazado se produce en un Axes . Los ejes son efectivamente el área en la que trazamos los datos y las marcas / tags / etc asociadas con ellos. Por lo general, configuramos un Axes con una llamada a un argumento secundario (que coloca a los Axes en una cuadrícula regular), por lo que en la mayoría de los casos, los Axes y el Subplot son sinónimos.

  • Cada eje tiene un XAxis y un YAxis. Estos contienen los ticks, ubicaciones de ticks, tags, etc.

Si quieres conocer la anatomía de una plot puedes visitar este enlace .

  • pyplot es como la API de matlab para aquellos que están familiarizados con matlab y desean hacer ttwigs rápidas y sucias
  • figure es una API orientada a objetos para aquellos que no se preocupan por el estilo matlab.

Así que puedes usar cualquiera de los dos pero quizás no ambos juntos.