Python

Creación de gráficos interactivos en Jupyter Notebook con Python

Para la exploración de datos los gráficos interactivos es una solución que facilita la tarea. Poder comprobar cómo cambian los resultados al modificar uno o varios parámetros facilitan la comprensión del efecto de estos. A continuación, se explicará cómo crear gráficos interactivos en Jupyter Notebook con Python.

Introducción

En muchas ocasiones es interesante poder comprobar gráficamente cómo cambian los resultados al modificar parámetros. En Jupyter Notebook una forma trivial de conseguir esto es volver a ejecutar la celda cambiando los parámetros. Otra forma más interesante de conseguir esto es mediante la creación de gráficos interactivos. Estos gráficos permiten la creación de pantallas dinámicas basadas en la evaluación de funciones.

Gráficos interactivos en Jupyter Notebook

Para la creación de un gráfico interactivos se ha de crear un Notebook en el que se ha de incluir las siguientes líneas:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

Una vez realizado esto se ha de crear una función que genere el gráfico deseada. A modo de ejemplo se va a simular una distribución normal y representar el histograma. La idea es comprobar cómo evoluciona la forma de la distribución a medida que aumenta el tamaño de la muestra. Para ello se puede definir una función como la siguiente:

from scipy.stats import norm

def plot_function(size = 100, bins = 10, loc=0, scale=1, color='red'):
    data = norm.rvs(size=size, loc=loc, scale=scale)
    binwidth = (max(data) - min(data))/ bins
    plt.hist(data, 
             bins=np.arange(min(data), max(data) + binwidth, binwidth),
             color=color)
    plt.show()

Al llamar a esta función se simula una distribución normal con los parámetros indicados. Posteriormente calcula el ancho de los bins del histograma y lo representa. Al ejecutar esta función aparece un gráfico como la siguiente.

Ahora, se puede importar la función interact de ipywidgets para crear un gráfico interactivo. A esta función se le ha de pasar como parámetro la que se ha definido para generar el gráfico. Esta generará un gráfico con un control para para cada una de las entradas de la función que se pueden utilizar para cambiar los valores. Por ejemplo, al ejecutar el siguiente código en una celda se obtiene la siguiente figura.

from ipywidgets import interact 
interact(plot_function)
None

Limitar los parámetros de los controles

En el ejemplo anterior se puede ver que es posible seleccionar valores en los controles que no son válidos. Por ejemplo, un tamaño de la muestra negativo o un nombre de color no disponible. Para evitar esto se le puede indicar los valores permitidos y el paso en las barras de desplazamiento para cada uno de los parámetros. En el caso de los valores numéricos se ha de indicar una tulpa con el valor mínimo, el máximo y, en caso de que el paso entre valores no sea de 1, el valor del paso. Por otro lado, cuando el valor es categórico se ha de utilizar una lista con los valores permitidos. En el ejemplo anterior se puede modificar para evitar los problemas indicados anteriormente.

interact(plot_function,
         size = (1, 1000, 10),
         bins = (1, 100, 1),
         loc = (-100, 100, 1),
         scale = (1, 100, 1),
         color=['red', 'yellow', 'blue'])
None

Obteniéndose un nuevo gráfico interactivo en el Notebook en el que se puede apreciar unas barras de desplazamiento modificadas. Además, la selección del color se esta limitada únicamente a los tres valores indicados.

En el caso de que una variable sea binaria se puede indicar a interact con la opción True. Así aparecerá una casilla de selección en lugar de una barra de desplazamiento.

Conclusiones

En esta entrada se ha visto cómo crear de gráficos interactivos en Jupyter Notebook con Python. La utilización de esta herramienta permite explorar los resultados de una forma visual más ágil. Permitiendo que incluso usuarios sin conocimiento de Python puedan realizar la exploración.

Imágenes: Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

4 días ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

6 días ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

1 semana ago

Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)

Cerramos la serie internacional con la categoría más estrambótica de todas: indicadores que predicen el…

2 semanas ago

El Binning en Credit Scoring: El Arte de Discretizar Variables

Si el WOE y el IV son la base matemática del credit scoring, el binning…

2 semanas ago

Analytics Lane lanza la versión 1.2 del laboratorio con nuevas herramientas de ajuste de curvas y cálculo matricial

Seguimos iterando sobre el laboratorio de Analytics Lane y lanzamos la versión 1.2, disponible en:https://www.analyticslane.com/lab/es…

2 semanas ago

This website uses cookies.