NumPy

Numpy

Tutorial Numpy: Integración de Numpy con Matplotlib

Numpy: Aprende a integrar con Matplotlib para generar gráficos avanzados y personalizados en Python, clave para ciencia de datos y aprendizaje automático.

¿Qué es Matplotlib en Python?

Matplotlib es una biblioteca de software para la creación de visualizaciones estáticas, animadas e interactivas en Python. Es uno de los módulos más utilizados para el desarrollo de gráficos en el ecosistema de ciencia de datos y aprendizaje automático.

Matplotlib permite generar gráficos en 2D con una cantidad considerable de personalización. A través de su interfaz orientada a objetos y la función pyplot, que está inspirada en MATLAB, proporciona una forma flexible de generar gráficos complejos con relativamente pocas líneas de código.

A continuación, un ejemplo de cómo se puede utilizar Matplotlib para generar un gráfico simple usando pyplot:

import matplotlib.pyplot as plt

# Datos de ejemplo
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 18, 16]

# Generar el gráfico
plt.plot(x, y)

# Añadir título y etiquetas
plt.title("Ejemplo de gráfico simple con Matplotlib")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")

# Mostrar el gráfico
plt.show()

En este ejemplo, pyplot se importa desde matplotlib y se utiliza para crear un gráfico de líneas. Los métodos title(), xlabel(), y ylabel() se emplean para añadir el título del gráfico y las etiquetas de los ejes, respectivamente.

El código anterior nos mostraría el siguiente gráfico:

Matplotlib también soporta múltiples estilos de gráficos como barras, dispersiones, histogramas, y gráficos de áreas. Aquí un ejemplo de un gráfico de barras:

import matplotlib.pyplot as plt

# Datos de ejemplo
categorias = ['A', 'B', 'C', 'D']
valores = [10, 20, 15, 10]

# Generar un gráfico de barras
plt.bar(categorias, valores)

# Añadir título y etiquetas
plt.title("Ejemplo de gráfico de barras con Matplotlib")
plt.xlabel("Categorías")
plt.ylabel("Valores")

# Mostrar el gráfico
plt.show()

Por último, Matplotlib permite personalizar colores, estilos de líneas, tamaños de puntos, y muchas otras opciones de diseño, y soporta la exportación de gráficos en varios formatos, incluidos PNG, PDF y SVG.

import numpy as np
import matplotlib.pyplot as plt

# Datos de ejemplo utilizando Numpy
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

# Generar gráfico con personalización
plt.plot(x, y, label='seno', color='blue', linestyle='--')

# Personalizar el eje
plt.xlim(0, 2 * np.pi)
plt.ylim(-1.5, 1.5)

# Añadir título, etiquetas y leyenda
plt.title("Gráfico de la función seno")
plt.xlabel("Eje X")
plt.ylabel("Función seno")
plt.legend()

# Mostrar el gráfico
plt.show()

Matplotlib es una herramienta poderosa y flexible que se integra muy bien con otras librerías como NumPy, aumentando significativamente las capacidades de visualización de datos en Python.

¿Qué relación existe entre Numpy y Matplotlib?

NumPy y Matplotlib son dos librerías fundamentales en el ecosistema de Python para la ciencia de datos, y su relación es esencial para el procesamiento y visualización de datos de manera eficiente. NumPy proporciona una estructura de datos eficiente para cálculos numéricos y operaciones sobre arrays multidimensionales, mientras que Matplotlib se utiliza para la creación de gráficos y visualizaciones.

Matplotlib se beneficia enormemente de NumPy al aceptar arrays de NumPy como entradas directas para sus funciones de graficación. Esto permite realizar visualizaciones complejas y personalizadas con facilidad y eficiencia. 

Por ejemplo, al crear gráficos de líneas, dispersión o histogramas, los datos preparados y manipulados con NumPy se pueden transferir directamente a las funciones de Matplotlib.

Ejemplo de integración de NumPy y Matplotlib:

import numpy as np
import matplotlib.pyplot as plt

# Crear datos de prueba con NumPy
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Generar un gráfico usando Matplotlib con datos de NumPy
plt.plot(x, y)

# Añadir título y etiquetas
plt.title("Gráfico de línea usando datos de NumPy y Matplotlib")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")

# Mostrar el gráfico
plt.show()

En el ejemplo anterior, np.linspace crea un array de 100 puntos equidistantes entre 0 y 10. Luego, np.sin se usa para calcular el valor de la función seno en esos puntos. Finalmente, plt.plot de Matplotlib se utiliza para crear el gráfico de línea.

Además de la compatibilidad básica entre estas dos librerías, NumPy también facilita la creación de estructuras de datos que pueden ser directamente visualizadas en mapas de colores, matrices de datos y otras formas avanzadas de visualización en Matplotlib. Por ejemplo, para un mapa de calor, NumPy puede generar matrices bidimensionales que luego se visualizan usando plt.imshow:

import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Crear una matriz aleatoria de 10x10 usando el nuevo generador de NumPy
data = rng.random((10, 10))

# Generar un mapa de calor usando Matplotlib
plt.imshow(data, cmap='viridis')

# Añadir una barra de colores
plt.colorbar()

# Añadir título
plt.title("Mapa de calor usando datos de NumPy y Matplotlib")

# Mostrar el gráfico
plt.show()

En este caso, rng.random genera una matriz con valores aleatorios entre 0 y 1 utilizando un generador de números aleatorios con una semilla específica. plt.imshow se utiliza para crear una representación gráfica de esta matriz, y plt.colorbar añade una leyenda que indica cómo los colores se corresponden con los valores numéricos.

La sinergia entre NumPy y Matplotlib es particularmente potente en aplicaciones científicas donde se requiere la manipulación intensiva de datos y su visualización inmediata. NumPy permite realizar cálculos complejos y transformaciones a gran escala, mientras que Matplotlib convierte esos cálculos en gráficos fácilmente interpretables, facilitando el análisis y la presentación de datos.

¿Por qué es recomendable saber Numpy antes de aprender Matplotlib?

NumPy es una biblioteca esencial para realizar cálculos numéricos y manipulaciones eficientes de datos en Python. Conocer NumPy antes de aprender Matplotlib ofrece ventajas significativas:

  • Estructuras de datos optimizadas: NumPy proporciona arrays multidimensionales (ndarray) que son más eficientes y rápidos para operaciones matemáticas y científicas en comparación con las listas estándar de Python. Los arrays de NumPy permiten operaciones vectorizadas, lo que significa que se pueden realizar operaciones aritméticas y cálculos en todo el array sin necesidad de bucles explícitos.
import numpy as np

# Crear un array de NumPy
a = np.array([1, 2, 3, 4, 5])

# Operaciones vectorizadas
b = a * 2
  • Compatibilidad directa: Matplotlib acepta arrays de NumPy como argumentos para la mayoría de sus funciones de graficación. Esto permite una integración fluida entre el procesamiento de datos y la visualización. Al aprender NumPy primero, se pueden manipular y preparar datos de manera eficiente antes de graficarlos con Matplotlib.
import numpy as np
import matplotlib.pyplot as plt

# Crear datos con NumPy
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

# Graficar datos
plt.plot(x, y)
plt.show()
  • Operaciones y cálculos avanzados: NumPy ofrece un conjunto extenso de funciones matemáticas y estadísticas que son útiles para la preparación de datos antes de la visualización. Esto incluye operaciones como la descripción estadística, transformadas de Fourier y álgebra lineal. Matplotlib puede tomar estos datos procesados y visualizar resultados complejos.
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Matriz aleatoria
data = rng.random((3, 3))

# Descomposición en valores singulares
U, s, V = np.linalg.svd(data)
  • Preparación y limpieza de datos: NumPy ayuda a preparar y limpiar los datos antes de visualizarlos. Funciones como np.nan_to_num y operaciones de indexado y filtrado facilitan el tratamiento de datos incompletos o inconsistentes para obtener gráficos más precisos y claros.
import numpy as np

# Datos con valores NaN
data = np.array([1, 2, np.nan, 4, 5])

# Reemplazar NaN con 0
clean_data = np.nan_to_num(data)
  • Manejo de grandes volúmenes de datos: NumPy está diseñado para el procesamiento eficiente de grandes volúmenes de datos. Sus operaciones están altamente optimizadas y se ejecutan en tiempo casi constante. Esto es crucial cuando se necesita graficar grandes conjuntos de datos con Matplotlib sin pérdida de rendimiento.
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Crear un gran array de datos
large_data = rng.random(1000000)

# Operaciones rápidas en grandes volúmenes de datos
mean = np.mean(large_data)
  • Facilitar la interpolación y transformaciones: Muchas veces, los datos reales requieren transformaciones o interpolación para ser visualizados adecuadamente. NumPy tiene funciones integradas para estas necesidades, preparando los datos antes de pasarlos a Matplotlib.
import numpy as np
from scipy.interpolate import interp1d

# Datos crudos
x = np.array([0, 1, 2, 3])
y = np.array([0, 1, 4, 9])

# Interpolación
f = interp1d(x, y)
xnew = np.linspace(0, 3, 50)
ynew = f(xnew)

Saber NumPy antes de aprender Matplotlib maximiza la eficiencia y efectividad al trabajar con datos y crear visualizaciones en Python. La combinación de las capacidades de procesamiento de NumPy con las habilidades de graficación de Matplotlib permite abordar proyectos de ciencia de datos y análisis con mayor precisión y profundidad.

Principales gráficas de matplotlib usando Numpy

El uso de Matplotlib junto con NumPy permite la creación de una amplia variedad de gráficos de manera eficiente. A continuación se presentan algunos de los gráficos más comunes que se pueden generar integrando estas dos potentes bibliotecas.

Gráfico de líneas

Un gráfico de línea es útil para mostrar tendencias a lo largo del tiempo. Con NumPy, podemos generar datos de manera sencilla y visualizarlos usando Matplotlib.

import numpy as np
import matplotlib.pyplot as plt

# Generar datos con NumPy
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Graficar los datos
plt.plot(x, y, label='Seno')

# Añadir título, etiquetas y leyenda
plt.title("Gráfico de línea")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")
plt.legend()

# Mostrar el gráfico
plt.show()

Gráfico de dispersión

El gráfico de dispersión se utiliza para observar la relación entre dos variables. A continuación mostramos cómo crear uno con datos generados por NumPy.

import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Generar datos con NumPy
x = rng.random(100)
y = rng.random(100)

# Graficar datos como dispersión
plt.scatter(x, y, color='r', label='Puntos')

# Añadir título, etiquetas y leyenda
plt.title("Gráfico de dispersión")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")
plt.legend()

# Mostrar el gráfico
plt.show()

Histograma

Un histograma es práctico para mostrar la distribución de un conjunto de datos. NumPy facilita la generación de grandes cantidades de datos y su visualización en histogramas.

import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Generar datos con NumPy
data = rng.normal(size=1000)

# Graficar el histograma
plt.hist(data, bins=30, color='g', alpha=0.7)

# Añadir título y etiquetas
plt.title("Histograma")
plt.xlabel("Valor")
plt.ylabel("Frecuencia")

# Mostrar el gráfico
plt.show()

Gráfico de barras

El gráfico de barras se utiliza para comparar diferentes categorías. En este ejemplo, generamos datos categóricos y de valores con NumPy y los visualizamos con Matplotlib.

import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Datos de ejemplo
categorias = ['A', 'B', 'C', 'D']
valores = rng.integers(1, 10, size=4)

# Graficar las barras
plt.bar(categorias, valores, color='b')

# Añadir título y etiquetas
plt.title("Gráfico de barras")
plt.xlabel("Categorías")
plt.ylabel("Valores")

# Mostrar el gráfico
plt.show()

Gráfico de áreas

El gráfico de áreas es útil para mostrar cómo cambian varias cantidades a lo largo de un periodo. La siguiente demostración utiliza NumPy para generar datos acumulativos.

import numpy as np
import matplotlib.pyplot as plt

# Generar datos con NumPy
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.sin(x) + 1
y3 = np.sin(x) + 2

# Graficar áreas
plt.fill_between(x, y1, color="skyblue", alpha=0.4)
plt.fill_between(x, y2, color="olive", alpha=0.6)
plt.fill_between(x, y3, color="gold", alpha=0.8)

# Añadir título y etiquetas
plt.title("Gráfico de áreas")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")

# Mostrar el gráfico
plt.show()

Mapa de calor

Los mapas de calor son útiles para representar datos bidimensionales. NumPy permite generar matrices de datos que se pueden visualizar con Matplotlib.

import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con una semilla específica
seed = 42
rng = np.random.default_rng(seed)

# Crear una matriz de datos con el generador de NumPy
data = rng.random((10, 10))

# Graficar el mapa de calor
plt.imshow(data, cmap='viridis')

# Añadir barra de colores y título
plt.colorbar()
plt.title("Mapa de calor")

# Mostrar el gráfico
plt.show()

Estos ejemplos ilustran solo algunas de las muchas posibilidades que ofrecen Matplotlib y NumPy cuando se utilizan conjuntamente para la visualización de datos. La flexibilidad de ambas bibliotecas permite generar visualizaciones detalladas y personalizadas para análisis exhaustivos.

Certifícate en Numpy con CertiDevs PLUS

Ejercicios de esta lección Integración de Numpy con Matplotlib

Evalúa tus conocimientos de esta lección Integración de Numpy con Matplotlib con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Numpy

Accede a todas las lecciones de Numpy y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Numpy

Supera todos los ejercicios de programación del curso de Numpy y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Saber cómo generar gráficos en 2D usando Matplotlib.

  • Entender la sinergia entre Numpy y Matplotlib.

  • Crear gráficos avanzados como líneas, dispersión, barras y mapas de calor.

  • Personalizar gráficos con títulos, etiquetas y leyendas.

  • Realizar operaciones avanzadas y preparación de datos con Numpy.