Volver a todas las publicaciones
Arquitectura & Python · 6 min de lectura Ingeniería de Software

Stack de visualización con Python: De Matplotlib a Dashboards en Streamlit

Python domina la analítica moderna con más del 45% de preferencia en la industria. Analizamos cómo elegir entre Matplotlib, Seaborn, Altair y Streamlit para construir reportes que convenzan a directores.

En los proyectos de consultoría e integración de datos que desarrollamos en Embii AI, uno de los desafíos más habituales es consolidar fuentes dispersas (APIs de WhatsApp, base transaccional de Odoo, registros de facturación electrónica y pasarelas de pago) en una interfaz analítica que la gerencia pueda consultar a diario sin fricciones.

Estilo FiveThirtyEight y diseño minimalista en Python
Figura 1: Estilo de visualización minimalista estilo FiveThirtyEight implementado en Matplotlib.

Python ofrece un ecosistema de librerías extraordinariamente amplio, pero no todas sirven para el mismo propósito. A continuación presentamos el mapa de decisiones de ingeniería que utilizamos en producción:

Librería Paradigma / Fortalezas Caso de Uso Ideal en Empresas
Matplotlib Control a bajo nivel sobre cada píxel, texto y eje. Gráficos estáticos altamente anotados para reportes PDF y juntas.
Seaborn Sintaxis estadística de alto nivel sobre DataFrames de Pandas. Exploración rápida de distribuciones, histogramas y matrices de correlación.
Altair (Vega-Lite) Gramática de gráficos declarativa, ligera e interactiva. Filtros cruzados y gráficos interactivos embebidos en aplicaciones web.
Streamlit Framework full-stack de Python para tableros web sin frontend JS. Portales gerenciales internos conectados a PostgreSQL / Supabase.
Uso de vlines y hlines para medias de rendimiento
Figura 2: Anotación de líneas de referencia horizontales y verticales para situar promedios de ticket y volumen.
Sombreado de patrones y anomalías con axhspan
Figura 3: Sombreado de cuadrantes con ax.axhspan y ax.text para segmentar automáticamente clientes de alto y bajo valor.

El arte de la anotación profesional con Matplotlib

La queja común contra Matplotlib es que sus gráficos iniciales lucen "académicos o anticuados". Sin embargo, cuando se utiliza la orientación a objetos (fig, ax = plt.subplots()), es posible lograr una estética editorial comparable a The Economist o FiveThirtyEight.

Las 4 técnicas clave para limpiar una visualización en Matplotlib son:

  1. Eliminar los bordes innecesarios (Spines): Ocultar las líneas superior y derecha mediante ax.spines['top'].set_visible(False) y ax.spines['right'].set_visible(False).
  2. Líneas de referencia contextuales: Reemplazar la grilla completa por una única línea horizontal o vertical que marque la meta o el promedio con ax.axhline(promedio, color="#8A8799", linestyle="--").
  3. Sombreado de zonas críticas: Usar ax.axhspan() o ax.axvspan() para colorear de forma sutil el período donde se ejecutó un cambio estratégico o donde el margen cayó por debajo del mínimo tolerable.
  4. Anotación directa sin leyendas flotantes: Ubicar el texto del KPI directamente al lado del último punto de la serie con ax.text(x, y, "Margen Q3: 24.5%"), evitando que el usuario tenga que cruzar la mirada hacia un cuadro de leyenda separado.

"Un gráfico profesional no le pide al lector que busque en una leyenda qué significa cada color. Guía el ojo con texto descriptivo colocado quirúrgicamente sobre el punto del dato."

Streamlit: Cómo pasar de un script de análisis a un tablero productivo

Para la mayoría de medianas empresas, montar una infraestructura compleja con React, Node.js y APIs intermedias para un dashboard interno es costoso e innecesario.

Con Streamlit, un ingeniero de datos puede conectar una base de datos PostgreSQL, aplicar filtros por sucursal o fecha y renderizar métricas en tiempo real con menos de 100 líneas de Python:

  • Manejo de Estado con st.session_state: Permite mantener selecciones de filtros y carritos de simulación sin recargar datos innecesariamente.
  • Caché de consultas con @st.cache_data: Reduce la carga sobre la base de datos transaccional, guardando los resultados pesados en memoria RAM por períodos configurables (ej. 15 minutos).
  • Diseño responsivo nativo: Streamlit ajusta automáticamente los KPIs en columnas para visualización en teléfonos móviles de ejecutivos y gerentes en terreno.

Arquitectura de producción recomendada en Ecuador

En nuestra experiencia en el mercado ecuatoriano, el flujo más eficiente para automatizar la reportería combina:

  1. Extracción automatizada: Tareas programadas en n8n o cron jobs en Python que extraen facturas del SRI y movimientos de Odoo ERP.
  2. Almacenamiento central: Una base de datos PostgreSQL en Supabase con vistas materializadas optimizadas para lectura.
  3. Capa de visualización: Un portal privado en Streamlit con autenticación por rol, donde cada jefe departamental ve exactamente los indicadores de su área.
Desarrollo & Datos

¿Quieres implementar tableros automatizados en Streamlit o Supabase?

Diseñamos arquitecturas a la medida para que tus directores tengan acceso en tiempo real a las métricas críticas de su negocio desde cualquier dispositivo.

Agendar Consultoría Técnica