Skip to content

Streamlit y Plotly: Visualización de datos interactiva hecha fácil

En el campo de la ciencia de datos, la visualización juega un papel crucial para entender conjuntos de datos complejos y extraer ideas significativas. Dos herramientas poderosas que han revolucionado este campo son Streamlit y Plotly. Este artículo tiene como objetivo proporcionar una guía completa sobre cómo usar estas herramientas juntas para crear visualizaciones y paneles interactivos. Ya seas principiante o desarrollador experimentado, encontrarás todo lo que necesitas para empezar con Streamlit y Plotly.

Introducción a Streamlit y Plotly

Streamlit es un framework de Python de código abierto que permite a los desarrolladores crear aplicaciones web interactivas con facilidad. Está diseñado para ayudar a los científicos de datos e ingenieros de aprendizaje automático a convertir scripts de datos en aplicaciones web compartibles en solo unas pocas líneas de código. La simplicidad y flexibilidad de Streamlit lo han convertido en una opción popular entre los profesionales de datos.

Por otro lado, Plotly es una biblioteca versátil que permite la creación de gráficos hermosos e interactivos. Admite más de 40 tipos de gráficos únicos que abarcan una amplia variedad de casos de uso estadísticos, financieros, geográficos, científicos y tridimensionales. La interactividad de Plotly permite a los usuarios hacer zoom, desplazarse, pasar el cursor y profundizar en las visualizaciones, lo que hace que la exploración de datos sea intuitiva e informativa.

Cuando se utilizan juntos, Streamlit y Plotly forman una combinación poderosa que permite a los desarrolladores crear paneles interactivos con visualizaciones complejas con relativa facilidad.

Alternativa al uso de Plotly en Streamlit: Usa PyGWalker:

Si bien Plotly es una herramienta poderosa, no es la única opción disponible para la visualización de datos en Python. PyGWalker (opens in a new tab) es otra herramienta impresionante que funciona como una alternativa a Streamlit AgGrid.

Demo online de PyGWalker + Streamlit (opens in a new tab)

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incorporar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo.

Echa un vistazo a este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que muestra los pasos detallados para potenciar tu aplicación de Streamlit con esta poderosa Biblioteca de visualización de datos en Python!


Agradecimientos especiales a Sven y su gran contribución (opens in a new tab) a la comunidad de PyGWalker!

Además, también puedes consultar estos recursos:

Visualiza datos en Streamlit con PyGWalker (opens in a new tab)

Creación de visualizaciones interactivas con Streamlit y Plotly

Crear visualizaciones interactivas utilizando Streamlit y Plotly es un proceso sencillo. El primer paso consiste en importar las bibliotecas necesarias en tu script de Python. Aquí tienes un ejemplo:

import streamlit as st
import plotly.express as px

A continuación, puedes crear una figura de Plotly y mostrarla en tu aplicación de Streamlit. Por ejemplo, creemos un gráfico de barras simple utilizando Plotly y mostrémoslo en Streamlit:

## Crear un dataframe de ejemplo
df = pd.DataFrame({
   'Fruta': ['Manzanas', 'Naranjas', 'Plátanos', 'Manzanas', 'Naranjas', 'Plátanos'],
   'Cantidad': [4, 1, 2, 2, 4, 5],
   'Ciudad': ['SF', 'SF', 'SF', 'Montreal', 'Montreal', 'Montreal']
})
 
## Crear un gráfico de barras utilizando Plotly
fig = px.bar(df, x='Fruta', y='Cantidad', color='Ciudad', barmode='group')
 
## Mostrar la figura en Streamlit
st.plotly_chart(fig)

En este ejemplo, se utiliza px.bar para crear un gráfico de barras, y st.plotly_chart se utiliza para mostrar el gráfico en la aplicación de Streamlit. El resultado es un gráfico de barras interactivo que los usuarios pueden pasar el cursor para ver los valores de los datos, hacer zoom y descargarlo como una imagen estática.

Técnicas avanzadas de Streamlit y Plotly

Si bien crear visualizaciones interactivas básicas con Streamlit y Plotly es sencillo, estas herramientas también ofrecen funciones avanzadas que permiten visualizaciones más complejas y personalizadas.

Una de estas funciones es la capacidad de actualizar figuras de Plotly en Streamlit. Esto se puede hacer utilizando los métodos update_layout y update_traces en Plotly. Por ejemplo, puedes actualizar el diseño de una figura para cambiar su título, etiquetas de los ejes y más:

fig.update_layout(
    title='Nuevo título',
    xaxis_title='Nuevo título del eje X',
    yaxis_title='Nuevo título del eje Y',
)

De manera similar, puedes actualizar las trazas de una figura para cambiar las propiedades de los datos trazados, como el color del marcador:

fig.update_traces(marker_color='rgb(158,202,225)')

Otra función avanzada es la capacidad de resolver problemas de tamaño con los gráficos de Plotly en Streamlit. A veces, un gráfico de Plotly puede no encajar bien en el diseño de una aplicación de Streamlit, lo que hace que se recorte o se solape con otros elementos. Esto se puede resolver ajustando los parámetros height y width de la función st.plotly_chart:

st.plotly_chart(fig, use_container_width=True)

En este ejemplo, use_container_width=True hace que el gráfico ocupe todo el ancho de la columna principal de la aplicación Streamlit, asegurando que se ajuste bien al diseño.

Construcción de un Panel de Control Streamlit Plotly

Construir un panel de control con Streamlit y Plotly implica combinar múltiples visualizaciones interactivas y controles en una sola aplicación. Los controles, como deslizadores, casillas de verificación y cuadros de selección, permiten a los usuarios interactuar con las visualizaciones y actualizarlas en tiempo real.

Aquí hay un ejemplo sencillo de un panel de control Streamlit Plotly:

import streamlit as st
import plotly.express as px
import pandas as pd
 
## Cargar datos
df = pd.read_csv('data.csv')
 
## Agregar un cuadro de selección para elegir el tipo de gráfico
chart_type = st.selectbox('Elija un tipo de gráfico', ['Barra', 'Línea'])
 
## Crear el gráfico
if chart_type == 'Barra':
    fig = px.bar(df, x='Fruta', y='Cantidad', color='Ciudad', barmode='group')
elif chart_type == 'Línea':
    fig = px.line(df, x='Fruta', y='Cantidad', color='Ciudad')
 
## Mostrar el gráfico
st.plotly_chart(fig, use_container_width=True)

En este ejemplo, se agrega un cuadro de selección a la aplicación Streamlit usando st.selectbox. El valor seleccionado se utiliza para determinar el tipo de gráfico que se creará con Plotly. Luego, el gráfico se muestra en la aplicación usando st.plotly_chart.

Construir un panel de control Streamlit Plotly puede ser tan simple o complejo como sea necesario, según los requisitos de su proyecto de visualización de datos. Con la flexibilidad y potencia de Streamlit y Plotly, las posibilidades son infinitas.

Conclusión: El poder de Streamlit y Plotly para la visualización de datos

Streamlit y Plotly juntos forman una combinación potente para crear visualizaciones de datos interactivas y paneles de control. La simplicidad y flexibilidad de Streamlit lo convierten en una excelente herramienta para construir aplicaciones web, mientras que la amplia gama de tipos de gráficos y características de interactividad de Plotly lo convierten en una herramienta versátil para la visualización de datos.

La integración de Streamlit y Plotly abre un mundo de posibilidades para científicos de datos y desarrolladores. Desde la creación de simples gráficos de barras hasta la construcción de paneles de control complejos con múltiples visualizaciones interactivas, estas herramientas brindan las capacidades necesarias para convertir los datos en conocimientos.

A medida que los datos continúan desempeñando un papel cada vez más importante en nuestro mundo, herramientas como Streamlit y Plotly seguirán evolucionando y mejorando. Manteniéndose al día con estas herramientas y aprendiendo cómo usarlas de manera efectiva, puede mejorar sus habilidades de visualización de datos y crear visualizaciones más impactantes e informativas.

¿Has oído hablar de esta increíble herramienta de análisis y visualización de datos, que convierte tu aplicación Streamlit en Tableau?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incrustar fácilmente una interfaz similar a Tableau en tu propia aplicación Streamlit sin esfuerzo.

PyGWalker para visualización de datos en Streamlit (opens in a new tab)

Preguntas frecuentes

1. ¿Cómo puedo mostrar un gráfico interactivo de Plotly en Streamlit?

Puedes mostrar un gráfico interactivo de Plotly en Streamlit utilizando la función st.plotly_chart. Primero, crea una figura de Plotly y luego pásala a st.plotly_chart para mostrarla en tu aplicación Streamlit. El resultado es un gráfico interactivo que los usuarios pueden navegar, hacer zoom y descargar como imagen estática.

2. ¿Cómo puedo actualizar una figura de Plotly en Streamlit?

Puedes actualizar una figura de Plotly en Streamlit utilizando los métodos update_layout y update_traces en Plotly. El método update_layout te permite cambiar el diseño de la figura, como el título y las etiquetas de los ejes. El método update_traces te permite cambiar las propiedades de los datos trazados, como el color del marcador.

3. ¿Cómo puedo evitar problemas de tamaño con los gráficos de Plotly en Streamlit?

Puedes evitar problemas de tamaño con los gráficos de Plotly en Streamlit ajustando los parámetros height y width de la función st.plotly_chart. Por ejemplo, establecer use_container_width=True hace que el gráfico ocupe todo el ancho de la columna principal de la aplicación Streamlit, asegurando que se ajuste bien al diseño.