Visualizaciones con Python

Objetivo
Presentar información sobre elaboración de gráficos con Python y algunos ejemplos.

Importancia

Los gráficos deben cumplir el objetivo de transmitir un mensaje al espectador, mucho mejor si personas ajenas al público ojetivo logran captar dicho mensaje. Para su elaboración se dispone de una gran variedad de herramientas, siendo este el caso de usar lenguajes de programación, ya que permite tener el mayor control posible sobre los gráficos a elaborar, además de quedar mucho mejor que los gráficos elaborados en Excel.

La ventaja de realizar una gráfica usando lenguajes de programación (sea Python, R, o incluso JavaScript) es la posibilidad de realizar muchos cambios y ajustar nuestras necesidades al gráfico, siendo esto a su vez una desventaja ya que se requiere de un mayor conocimiento sobre las opciones disponibles, métodos y formas para obtener dicho gráfico.

Gráficas con Python

Python permite elaborar gráficas mediante el uso de libreríasa específicas, siendo el más conocido Matplotlib. Entre otras librerías tenemos:

  • Matplotlib
  • Seaborn
  • Pandas
  • Altair
  • Plotly
  • Bokeh

Eligiendo una librería

Según nuestra necesidad, Los gráficos pueden ser estáticos o interactivos. Los gráficos estáticos son meramente eso, estáticos. Se presentan en documentos, presentaciones y cumplen la función de mostrar un mensaje. Los gráficos interactivos por su parte, permiten interactuar con los datos empleados. Estos pueden integrarse en aplicaciones y dashboards, entre otras más.

A continuación presento una imagen que nos ayudará a decidir qué librería podemos usar de acuerdo a nuestra necesidad.

Gráfico en Matplotlib
Practical Python Business - Choosing a Python Visualization Tool
El siguiente paso es dirigirnos a su documentación. Todas las librerías mencionadas poseen documentación online de acceso libre por lo que es cuestión de uno el aprender su uso.

Algunos comentarios sobre las librerías:

  • Matplotlib es la librería más conocida. Permite hacer muchas cosas pero otras librerías ya agilizan su uso.
  • Pandas: Usa Matplotlib. No es como tal una librería para graficación pero permite realizar gráficas rápidas a partir de un dataframe.
  • Seaborn: También usa Matplotlib. Añade métodos para graficar cosas más complejas que tomaría muchas líneas de código su implementación al solo usar Matplotlib.
  • Bokeh y Plotly: Permiten realizar gráficos interactivos pero se requiere de conocimiento de programación web para su implementación.

Ejemplos

A continuación le presente gráficas realizadas con algunas librerías ya antes mencionadas.

Curvas de absorción de nutrientes

Se realizaron gráficas para un manual de fertilización en cultivos de ajo y cebolla. A partir de datos medidos en campo a distintas fechas, se elaboró cuatro gráficas que presentan la absorción de nutrientes NPK en la planta, datos ajustados a una función sigmoide (curva S).

Gráfico

A partir de dichas curvas, se procedió a estimar las áreas bajo la curva para analizar las proporciones a dosificar. A continuación se muestra la curva de absorción del nutriente Nitrógeno (N) para la cebolla amarilla century.

Gráfico

Gráfica de datos meteorológicos

Tuve la oportunidad de realizar estas gráficas para proyectos de investigación. Primero realicé esta gráfica con datos de estación meteorológica en la estación del INIA en Lambayeque (Vista Florida).

Gráfico
Gráfica elaborada para un experimento de maíz en Lambayeque.

Posteriormente, en la estación del INIA en Arequipa (Anexo Santa Rita), pude mejorar la gráfica añadiendo la variable de evapotranspiración potencial, obtenida con el método de Penman-Monteith usando la librería pyet. Presenta además información de fechas en la que se desarrolla el cultivo como anotaciones con flechas de color azul.

Gráfico
Gráfica elaborada para un experimento de ají escabeche en Arequipa.

Ahora un gráfico interactivo.

Con Plotly pude realizar una visualización interactiva sobre los datos de temperatura de la estación meteorológica de Tinajones para las 3pm (en sí debió ser para las 11 am por un desconocimiento de que las imágenes Landsat 8 y 9 trabajan con horas UTC mientras que para la zona de estudio se usa UTC-5).

Gráfico
Gráfica interactiva de variable Temperatura usando Plotly.

Imágenes satelitales

En este caso se trató de representar la variación temporal y espacial de la zona de estudio (arrozales en Lambayeque) con imágenes satelitales. Se utilizó la librería cartoee de geemap para obtener visualizaciones tipo publicación científica. Posteriormente, se realizó un gif.

Exploración de metadatos en imágenes satelitales

Con Plotly pude realizar la exploración de datos de Porcentaje de Nubosidad para imágenes satelitales disponibles de Landsat y Sentinel-2 con el fin de tener una noción de qué imágenes usar en función al bajo porcentaje de nubosidad. Para procesamiento de dichos productos se requiere de imágenes con cielo despejado. Con esta gráfica me permitió realizar comparaciones entre imágenes disponibles.

Gráfico
Gráfica interactiva de porcentajes de nubosidad usando Plotly.
Además, pude añadir otra curva con datos de Landsat 9 (color rojo).
Gráfico
Gráfica interactiva de porcentajes de nubosidad con Sentinel-2, Landsat 8 y 9 usando Plotly.

Referencias

Matplotlib

Plotly Blogs

Muchas gracias por leer. Saludos!


2021 - Cesar Vilca --- Template by Bootstrapious.com