Gráficos de Dispersión con Matplotlib

MatplotlibBeginner
Practicar Ahora

Introducción

¡Bienvenido al laboratorio sobre Gráficos de Dispersión (Scatter Plots) con Matplotlib! Los gráficos de dispersión son una herramienta fundamental en la visualización de datos, utilizados para mostrar los valores de típicamente dos variables para un conjunto de datos. Son excelentes para observar relaciones o correlaciones entre variables.

En este laboratorio, utilizarás la biblioteca Matplotlib en Python para crear gráficos de dispersión. Aprenderás a:

  • Generar arreglos de datos usando NumPy.
  • Crear un gráfico de dispersión básico con plt.scatter().
  • Personalizar la apariencia del gráfico, incluyendo el tamaño y color de los marcadores.
  • Añadir una cuadrícula para mejorar la legibilidad.

Todo tu trabajo se realizará en el entorno WebIDE. Escribirás código Python en un archivo y lo ejecutarás desde la terminal. Dado que este entorno no es interactivo, guardarás tus gráficos en un archivo de imagen usando plt.savefig() en lugar de mostrarlos con plt.show().

¡Empecemos!

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 90%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Generar arreglos de datos x e y

En este paso, crearás los datos que utilizaremos para nuestro gráfico de dispersión. Un gráfico de dispersión requiere al menos dos arreglos de datos de la misma longitud: uno para las coordenadas del eje x y otro para las coordenadas del eje y. Utilizaremos la biblioteca NumPy, que es un estándar para operaciones numéricas en Python.

Primero, abre el archivo main.py desde el explorador de archivos en el panel izquierdo del WebIDE. Aquí es donde escribirás todo tu código para este laboratorio.

Ahora, añade el siguiente código a main.py para importar NumPy y crear dos arreglos de datos simples.

import numpy as np

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

Analicemos el código:

  • import numpy as np: Esta línea importa la biblioteca NumPy y le da el alias convencional np.
  • x = np.array([...]): Esto crea un arreglo de NumPy llamado x que contiene nuestros puntos de datos para el eje horizontal.
  • y = np.array([...]): Esto crea un arreglo de NumPy llamado y que contiene nuestros puntos de datos para el eje vertical.

Tu archivo main.py debería contener ahora este código. En el siguiente paso, utilizaremos estos datos para crear nuestro primer gráfico.

Graficar dispersión usando plt.scatter(x, y)

En este paso, crearás un gráfico de dispersión básico utilizando los datos que generaste. Usaremos el módulo matplotlib.pyplot, que proporciona una interfaz sencilla para crear gráficos.

Primero, necesitas importar matplotlib.pyplot. Luego, puedes usar la función plt.scatter() para crear el gráfico. Finalmente, debes guardar el gráfico en un archivo. Como se mencionó en la introducción, no podemos usar plt.show() para mostrar el gráfico directamente en este entorno. En su lugar, usaremos plt.savefig() para guardarlo como una imagen.

Actualiza tu archivo main.py con el siguiente código. Añade las nuevas líneas debajo del código existente.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

## Create scatter plot
plt.scatter(x, y)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot.png')

print("Scatter plot saved to scatter_plot.png")

Explicación del código:

  • import matplotlib.pyplot as plt: Importa el módulo de trazado y le da el alias estándar plt.
  • plt.scatter(x, y): Esta es la función principal. Toma los arreglos x e y y traza cada par de valores (x, y) como un punto.
  • plt.savefig('/home/labex/project/scatter_plot.png'): Esta función guarda la figura actual en un archivo llamado scatter_plot.png en tu directorio ~/project.

Ahora, ejecuta tu script desde la terminal en la parte inferior del WebIDE:

python3 main.py

Deberías ver la siguiente salida en la terminal:

Scatter plot saved to scatter_plot.png

Aparecerá un nuevo archivo llamado scatter_plot.png en el explorador de archivos de la izquierda. ¡Haz doble clic en él para ver tu primer gráfico de dispersión!

Scatter plot

Personalizar tamaño del marcador usando el parámetro s

En este paso, aprenderás a personalizar el tamaño de los marcadores (los puntos) en tu gráfico de dispersión. La función plt.scatter() tiene un parámetro opcional s que controla el tamaño del marcador.

Puedes proporcionar un solo número para que todos los marcadores tengan el mismo tamaño, o puedes proporcionar un arreglo de números (con la misma longitud que tus datos x e y) para especificar un tamaño único para cada marcador. Probemos lo último para hacer el gráfico más interesante.

Modifica tu archivo main.py. Crearemos un arreglo sizes y lo pasaremos al parámetro s en la función plt.scatter().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])

## Create scatter plot with custom sizes
plt.scatter(x, y, s=sizes)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_sizes.png')

print("Scatter plot with custom sizes saved to scatter_plot_sizes.png")

En el código actualizado, añadimos un arreglo sizes y modificamos la llamada a plt.scatter() a plt.scatter(x, y, s=sizes). Ahora, cada punto se trazará con su tamaño correspondiente del arreglo sizes.

Ejecuta el script de nuevo para ver los cambios:

python3 main.py

Después de que el script termine, abre scatter_plot_sizes.png de nuevo. Notarás que los marcadores ahora tienen diferentes tamaños, haciendo el gráfico más informativo visualmente.

Scatter plot with custom sizes

Cambiar color del marcador usando el parámetro c

En este paso, personalizaremos el color de los marcadores. De manera similar al tamaño, puedes controlar el color usando el parámetro c en la función plt.scatter().

Puedes pasar un solo nombre de color (por ejemplo, 'red') para que todos los marcadores tengan el mismo color, o puedes pasar un arreglo de colores para darle a cada marcador un color específico. Asignemos un color único a cada punto.

Actualiza tu archivo main.py para incluir un arreglo colors y pásalo al parámetro c.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot with custom sizes and colors
plt.scatter(x, y, s=sizes, c=colors)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_colors.png')

print("Scatter plot with custom colors saved to scatter_plot_colors.png")

Ahora hemos añadido un arreglo colors que contiene nombres de colores y hemos actualizado la llamada a la función a plt.scatter(x, y, s=sizes, c=colors).

Ejecuta el script desde la terminal:

python3 main.py

Abre scatter_plot_colors.png una vez más. Verás un gráfico de dispersión colorido donde cada punto tiene un tamaño y color diferente, como se define en nuestros arreglos.

Scatter plot with custom colors

Añadir cuadrícula usando plt.grid()

En este último paso, añadiremos una cuadrícula a tu gráfico de dispersión. Una cuadrícula puede facilitar la lectura de los valores de los puntos de datos en los ejes.

Añadir una cuadrícula en Matplotlib es muy sencillo. Solo necesitas llamar a la función plt.grid() antes de guardar el gráfico. Por defecto, plt.grid(True) mostrará la cuadrícula.

Añadamos esto a nuestro script. Modifica main.py para incluir la llamada a plt.grid().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot
plt.scatter(x, y, s=sizes, c=colors)

## Add a grid
plt.grid(True)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_grid.png')

print("Scatter plot with grid saved to scatter_plot_grid.png")

Hemos añadido plt.grid(True) justo antes de plt.savefig(). Esto le indica a Matplotlib que dibuje una cuadrícula en el gráfico.

Ejecuta la versión final de tu script:

python3 main.py

Ahora, revisa la imagen scatter_plot_grid.png. Tu gráfico debería tener ahora una cuadrícula en el fondo, completando nuestro gráfico de dispersión personalizado.

Scatter plot with grid

Resumen

¡Felicitaciones por completar el laboratorio! Has aprendido con éxito los conceptos básicos para crear y personalizar gráficos de dispersión con Matplotlib.

En este laboratorio, practicaste:

  • Generar datos para graficar usando NumPy.
  • Crear un gráfico de dispersión básico con plt.scatter().
  • Personalizar los tamaños de los marcadores usando el parámetro s.
  • Cambiar los colores de los marcadores usando el parámetro c.
  • Añadir una cuadrícula al gráfico con plt.grid().
  • Guardar tus gráficos en un archivo con plt.savefig().

Estas son habilidades esenciales para la visualización de datos en Python. Ahora puedes crear gráficos de dispersión informativos y visualmente atractivos para explorar relaciones en tus datos. Para continuar tu aprendizaje, podrías explorar cómo añadir títulos y etiquetas, usar diferentes estilos de marcadores o aplicar mapas de colores para visualizaciones más avanzadas.