Saltar al contenido
Gráficos con Plotly y Python

Creación de Dashboards interactivos con Plotly y Dash.

Introducción

La visualización de datos se ha vuelto esencial para tomar decisiones precisas y eficientes tanto en el ámbito empresarial como en el científico. Los Dashboards interactivos son herramientas de visualización que permiten mostrar grandes cantidades de información de manera clara y eficiente.

Plotly es una librería de Python que permite la creación de gráficos interactivos en múltiples plataformas: web, notebooks de Jupyter, aplicaciones de escritorio, entre otros. Dash, por otro lado, es un framework web que se utiliza para crear aplicaciones interactivas de forma rápida y sencilla, donde Plotly es la herramienta principal para la creación de gráficos interactivos.

En este curso, se aprenderá a crear Dashboards interactivos utilizando Plotly y Dash en Python. Además, se estudiarán diferentes tipos de visualizaciones de datos, técnicas de diseño y la estructura de elementos interactivos en un Dashboard. El objetivo del curso es que el estudiante adquiera habilidades para crear Dashboards eficientes y claros que permitan la visualización rápida y eficiente de grandes cantidades de información.

Resumen

Los dashboards interactivos son una herramienta poderosa para visualizar y analizar información.

Dash es un marco de trabajo basado en Flask que permite combinar Plotly con HTML, CSS y JavaScript para crear gráficos y tableros interactivos en línea. Aquí te explico los pasos para crear un dashboard interactivo utilizando Plotly y Dash:

  1. Importa las bibliotecas necesarias:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pd
  1. Carga los datos que deseas usar en tu dashboard:

df = pd.read_csv('datos.csv')
  1. Define la estructura de la página web:

app = dash.Dash(__name__)
app.layout = html.Div(children=[
    html.H1(children='Título del dashboard'),
    html.Div(children=''' Descripción del dashboard. '''),
    dcc.Graph(
        id='grafica',
        figure={}
    )
])
  1. Crea tu gráfico en Plotly:

fig = px.pie(df, values='valor', names='categoria')
  1. Actualiza el layout de Dash con la figura:

app.layout = html.Div(children=[
    html.H1(children='Dashboard'),
    html.Div(children=''' Visualización de datos. '''),
    dcc.Graph(
        id='grafica',
        figure=fig
    )
])
  1. Ejecuta la aplicación:

if __name__ == '__main__':
    app.run_server(debug=True)

¡Listo! Ahora puedes ejecutar la aplicación y visualizar tu gráfico interactivo en línea. Puedes agregar más gráficos, tablas, filtros y elementos interactivos para mejorar la experiencia de usuario. ¡A explorar las posibilidades!

Aplicación teórica

Un ejemplo para crear un dashboard interactivo con Plotly y Dash podría ser el siguiente:

Supongamos que tenemos un conjunto de datos de ventas de una tienda en línea que deseamos visualizar en un dashboard. Podemos utilizar la biblioteca Plotly para crear diferentes gráficos y Dash para crear una interfaz de usuario interactiva. Primero, importamos las bibliotecas Plotly y Dash, los datos y creamos nuestro objeto Dash:


import plotly.express as px
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd

app = dash.Dash(__name__)
df = pd.read_csv('sales_data.csv')

A continuación, podemos definir nuestro layout, que es la estructura y diseño de nuestro dashboard. En este ejemplo, creamos un gráfico de barras y un gráfico de pastel, así como contenedores HTML para la selección de filtro y la presentación del gráfico.


app.layout = html.Div([
    html.H1("Ventas por categoría"),
    html.Div([
        dcc.Dropdown(
            id='category-dropdown',
            options=[{'label': i, 'value': i} for i in df.Category.unique()],
            value='All Category'
        )
    ], style={'width': '30%'}),
    html.Br(),
    html.Div([
        dcc.Graph(id='category-bar-chart')
    ], style={'width': '45%', 'display': 'inline-block', 'padding': '0 20'}),
    html.Div([
        dcc.Graph(id='category-pie-chart')
    ], style={'width': '45%', 'display': 'inline-block', 'padding': '0 20'})
])

Luego, definimos nuestros callbacks, que son funciones que se activan cuando cambia la selección de filtro. Primero, creamos la función que genera nuestro gráfico de barras al filtrar por Categoría:


@app.callback(
    dash.dependencies.Output('category-bar-chart', 'figure'),
    [dash.dependencies.Input('category-dropdown', 'value')]
)
def update_category_bar_chart(selected_category):
    filtered_df = df if selected_category == 'All Category' else df[df.Category == selected_category]
    category_df = filtered_df.groupby(['Category'])['Sales'].sum().reset_index()
    figure = px.bar(category_df, x='Category', y='Sales', color='Category', title='Ventas por categoría')
    return figure

En segundo lugar, creamos la función que genera nuestro gráfico de pastel al filtrar por Categoría:


@app.callback(
    dash.dependencies.Output('category-pie-chart', 'figure'),
    [dash.dependencies.Input('category-dropdown', 'value')]
)
def update_category_pie_chart(selected_category):
    filtered_df = df if selected_category == 'All Category' else df[df.Category == selected_category]
    category_df = filtered_df.groupby(['Category'])['Sales'].sum().reset_index()
    figure = px.pie(category_df, values='Sales', names='Category', title='Ventas por categoría')
    return figure

¡Listo! Ahora podemos ejecutar nuestra aplicación Dash con app.run_server() y comenzar a interactuar con nuestro dashboard. Con nuestro menú desplegable "category-dropdown", podemos filtrar nuestras ventas por categoría y ver los gráficos actualizados en tiempo real. Este es solo un ejemplo básico de lo que se puede hacer con Plotly y Dash para crear dashboards interactivos. La combinación de estas dos bibliotecas proporciona una gran cantidad de opciones para la visualización de datos y la creación de aplicaciones interactivas.

Aplicación práctica

Un ejemplo práctico de cómo crear un dashboard interactivo con Plotly y Dash en Python:

Lo primero que debemos hacer es instalar las librerías necesarias, como Dash y Plotly.


!pip install dash
!pip install dash-renderer
!pip install dash-html-components
!pip install dash-core-components
!pip install plotly

Una vez instaladas las librerías, podemos comenzar creando una aplicación Dash que renderice una página web.


import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(children='Mi primer Dashboard con Plotly y Dash'),
    html.Div(children=''' Aquí puedes incluir una breve descripción de tu dashboard. '''),
    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'Grupo A'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': 'Grupo B'},
            ],
            'layout': {
                'title': 'Ejemplo de gráfico de barras'
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

En este ejemplo estamos creando una aplicación Dash y en el layout estamos definiendo la estructura de la página usando componentes HTML de Dash. Además, estamos añadiendo un componente de gráfico usando dcc.Graph de Dash Core Components y estamos definiendo la estructura del gráfico usando Plotly. Si ejecutas este código en tu terminal, deberías ver un gráfico de barras en tu navegador. Si quieres añadir más gráficos, tablas o controles interactivos, simplemente tienes que añadir más componentes al layout. ¡Y eso es todo! Con estas herramientas puedes crear dashboards interactivos y profesionales con Plotly y Dash en Python.