Python

Gráficos de Hexbin: alternativa a los gráficos de dispersión en Python

Los gráficos de dispersión son uno de los más utilizados para representar cómo se distribuyen los valores de un conjunto de datos en un plano. Son fáciles de crear y sencillos de interpretar. Aunque, cuando el conjunto de datos cuenta con centenas de registros, los gráficos de dispersión pueden ser demasiado densos para interpretarlos. En esta situación una alternativa es utilizar un gráfico de Hexbin.

Los gráficos de Hexbin

Un gráfico de Hexbin es un tipo de visualización de datos que se puede utilizar para representar la distribución de puntos en un plano. A diferencia de los gráficos de dispersión, en lugar de representar cada uno de los puntos de forma individual, los puntos se agrupan en hexágonos regulares con los que se cubre todo el plano. La densidad de puntos en cada hexágono se representa mediante una escala de colores, permitiendo visualizar las zonas donde hay mayor o menor concentración de datos. El detalle del gráfico se puede ajustar cambiando el tamaño de los hexágonos.

Los gráficos de Hexbin son particularmente útiles cuando se trabaja con conjuntos de datos muy grandes, ya que pueden resumir una gran cantidad de información en una sola figura fácil de interpretar.

Ventajas de los gráficos de Hexbin

Algunas de las ventajas de los gráficos de hexbin frente a los gráficos de dispersión son:

  1. Facilitan la interpretación en grandes conjuntos de datos: los gráficos de dispersión que se crean con grandes conjuntos de datos pueden ser demasiados densos, por lo que no son fáciles de interpretar. Los gráficos de hexbin resuelven este problema reduciendo la complejidad visual al representar los datos mediante una cuadrícula de hexágonos.
  2. Mayor precisión: los gráficos de hexbin permiten una mayor precisión al mostrar la distribución de puntos. Cada hexágono representa una zona determinada del espacio bidimensional, lo que significa que se pueden capturar patrones más sutiles y precisos que en los gráficos de dispersión tradicionales.
  3. Evita la superposición de valores: en los gráficos de dispersión los puntos se pueden superponer, ocultando de esta manera parte de la información que se desea mostrar. Por su parte, en los gráficos de hexbin, los hexágonos se superponen de manera regular evitando de esta manera la superposición de los datos.

Comparar los gráficos de dispersión y Hexbin en Python

La mejor manera de ver las ventajas que tienen los gráficos de Hexbin cuando se necesita representar grandes conjuntos de datos es crear unos valores aleatorios y representar ambos en Python. Así, se puede emplear el siguiente código para crear el conjunto de datos y una gráfica de dispersión con ellos.

import numpy as np
import matplotlib.pyplot as plt

# Generar datos aleatorios
np.random.seed(1)
x = np.dot(np.random.random(size = (2, 2)), np.random.normal(size = (2, 3000))).T

# Crear el gráfico de dispersión
plt.scatter(x[:, 0], x[:, 1])

# Mostrar el gráfico
plt.show()
Gráfico de dispersión para un conjunto de 3000 datos

En este ejemplo se ha fijado la semilla a 1 y creado un conjunto de 3000 de registros aleatorios con np.random.random(). Una vez hecho se representan mediante un gráfico de dispersión. A pesar de que el conjunto de datos no es excesivamente grande, solamente 500 puntos, ya se puede apreciar una superposición en de los datos que pueden crear confusión.

Para crear un gráfico de Hexbin en Python se puede recurrir a la función hexbin() de Matplotlib. Necesitando los mismos datos que la función scatter(), aunque es recomendable indicar el tamaño de los hexágonos para que la gráfica se adapte a nuestra necesidades, esto es lo que se hace en el siguiente código.

# Crear el gráfico de Hexbin
plt.hexbin(x[:, 0], x[:, 1], gridsize=20, cmap='Blues')

# Mostrar el gráfico
plt.show()
Gráfico de Hexbin para el conjunto de 3000 datos

Empleando dos opciones gridsize para indicar el tamaño de los hexágonos y cmap para los colores que se desean usar. Como se puede ver en este ejemplo los datos son más fáciles de interpretar en esta segunda figura.

Mejorando la gráfica: añadir una escala de colores

Aunque la gráfica anterior es más fácil de interpretar, no se puede saber fácilmente cual es la densidad en cada uno de los hexágonos. Un problema que se puede solucionar fácilmente agregando la escala de colores. Para lo que se puede recurrir la función colorbar() Matplotlib que únicamente necesita la salida de la función hexbin(). De este modo, con una pequeña modificación del código, se puede comprobar a que valores se corresponde cada uno de los colores.

# Crear el gráfico de Hexbin
hb = plt.hexbin(x[:, 0], x[:, 1], gridsize=20, cmap='Blues')

# Agregar la escala de color
plt.colorbar(hb)

# Mostrar el gráfico
plt.show()
Inclusión de un escala de colores en el gráfico de Hexbin

Ahora se puede ver como los colores más oscuros indica más de 80 puntos en cada uno de los hexágonos

Conclusiones

Los gráficos de hexbin son una excelente alternativa a los gráficos de dispersión cuando se trabaja con conjuntos de datos de tamaño mediano o grande. Siendo una forma eficaz de mostrar la distribución de datos en un espacio bidimensional, permitiendo una mejor comprensión de la distribución y patrones de los datos en comparación con los gráficos de dispersión.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Matplotlib

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.