Gráficos Básicos con Matplotlib: Tipos de Gráficos Esenciales
Aprende a crear los tipos de gráficos más comunes con Matplotlib: líneas, dispersión, barras, áreas y más con ejemplos prácticos.
¡Domina los tipos de gráficos más utilizados en Matplotlib! En este tutorial aprenderás a crear gráficos de líneas, dispersión, barras, áreas y otros tipos básicos que son fundamentales para la visualización de datos.
Objetivo: Aprender a crear y personalizar los tipos de gráficos más comunes en Matplotlib con ejemplos prácticos y casos de uso reales.
Índice
- Gráficos de Líneas
- Gráficos de Dispersión
- Gráficos de Barras
- Gráficos de Área
- Gráficos de Escalera
- Gráficos de Tallo
- Combinando Múltiples Tipos
- Casos de Uso Prácticos
Gráficos de Líneas
Domina la creación de gráficos de líneas para visualizar tendencias temporales, funciones matemáticas y relaciones continuas entre variables. Esta sección cubre desde gráficos básicos hasta personalizaciones avanzadas con múltiples líneas, estilos y configuraciones profesionales.
Los gráficos de líneas son ideales para mostrar tendencias a lo largo del tiempo o relaciones continuas entre variables.
Gráfico de Línea Básico
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Importar las bibliotecas necesarias
# matplotlib.pyplot para crear gráficos
# numpy para trabajar con arrays numéricos
# Paso 2: Crear los datos
# Generar 100 puntos equidistantes entre 0 y 10
x = np.linspace(0, 10, 100)
# Calcular el seno de cada punto
y = np.sin(x)
# Paso 3: Crear la figura y configurar el tamaño
plt.figure(figsize=(10, 6)) # Ancho: 10 pulgadas, Alto: 6 pulgadas
# Paso 4: Crear el gráfico de línea básico
plt.plot(x, y) # x: eje horizontal, y: eje vertical
# Paso 5: Personalizar el gráfico
plt.xlabel('Tiempo') # Etiqueta del eje X
plt.ylabel('Amplitud') # Etiqueta del eje Y
plt.title('Función Seno') # Título del gráfico
plt.grid(True, alpha=0.3) # Agregar cuadrícula con 30% de opacidad
# Paso 6: Mostrar el gráfico
plt.show()
Fig. 5: Gráfico de línea básico mostrando la función seno
Múltiples Líneas
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x + np.pi/4)
# Crear gráfico con múltiples líneas
plt.figure(figsize=(12, 8))
plt.plot(x, y1, 'b-', label='sin(x)', linewidth=2)
plt.plot(x, y2, 'r--', label='cos(x)', linewidth=2)
plt.plot(x, y3, 'g:', label='sin(x + π/4)', linewidth=2)
# Personalización
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.title('Funciones Trigonométricas', fontsize=14, fontweight='bold')
plt.legend(fontsize=12)
plt.grid(True, alpha=0.3)
# Agregar líneas de referencia
plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
plt.axvline(x=np.pi, color='k', linestyle='-', alpha=0.3)
plt.show()
Estilos de Línea
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5, 50)
# Diferentes estilos de línea
estilos = ['-', '--', '-.', ':', 'solid', 'dashed', 'dashdot', 'dotted']
plt.figure(figsize=(12, 8))
for i, estilo in enumerate(estilos):
y = np.sin(x + i * 0.5)
plt.plot(x, y, estilo, label=f'Estilo: {estilo}', linewidth=2)
plt.xlabel('x')
plt.ylabel('sin(x + offset)')
plt.title('Estilos de Línea en Matplotlib')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Fig. 1: Ejemplo de múltiples líneas con diferentes estilos y colores
Gráficos de Dispersión
Aprende a crear gráficos de dispersión para explorar relaciones entre variables numéricas, identificar patrones de correlación y agrupar datos visualmente. Esta sección incluye técnicas básicas y avanzadas con colores, tamaños variables y múltiples conjuntos de datos.
Los gráficos de dispersión muestran la relación entre dos variables numéricas, ideales para identificar correlaciones y patrones.
Gráfico de Dispersión Básico
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Configurar semilla para reproducibilidad
np.random.seed(42) # Siempre obtenemos los mismos números aleatorios
# Paso 2: Generar datos sintéticos
# Crear 100 puntos aleatorios con distribución normal
x = np.random.randn(100)
# Crear relación lineal con algo de ruido
y = 2 * x + np.random.randn(100) * 0.5
# Paso 3: Crear la figura
plt.figure(figsize=(10, 6))
# Paso 4: Crear gráfico de dispersión
# x, y: coordenadas de los puntos
# alpha: transparencia (0.6 = 60% opaco)
# s: tamaño de los puntos (50 pixels)
plt.scatter(x, y, alpha=0.6, s=50)
# Paso 5: Configurar etiquetas y título
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.title('Gráfico de Dispersión Básico')
# Paso 6: Agregar cuadrícula
plt.grid(True, alpha=0.3)
# Paso 7: Mostrar el gráfico
plt.show()
Personalización Avanzada
import matplotlib.pyplot as plt
import numpy as np
# Generar datos más complejos
np.random.seed(42)
n = 200
x = np.random.randn(n)
y = x * 2 + np.random.randn(n)
colors = np.random.rand(n) # Colores aleatorios
sizes = 100 * np.random.rand(n) # Tamaños aleatorios
# Crear gráfico con personalización
plt.figure(figsize=(12, 8))
scatter = plt.scatter(x, y, c=colors, s=sizes, alpha=0.6,
cmap='viridis', edgecolors='black', linewidth=0.5)
# Agregar barra de colores
plt.colorbar(scatter, label='Intensidad')
plt.xlabel('Variable X', fontsize=12)
plt.ylabel('Variable Y', fontsize=12)
plt.title('Gráfico de Dispersión con Personalización', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)
plt.show()
Fig. 6: Gráfico de dispersión con colores y tamaños variables
Múltiples Conjuntos de Datos
import matplotlib.pyplot as plt
import numpy as np
# Generar tres conjuntos de datos
np.random.seed(42)
n = 50
# Grupo 1
x1 = np.random.normal(0, 1, n)
y1 = np.random.normal(0, 1, n)
# Grupo 2
x2 = np.random.normal(3, 1, n)
y2 = np.random.normal(3, 1, n)
# Grupo 3
x3 = np.random.normal(0, 1, n)
y3 = np.random.normal(3, 1, n)
# Crear gráfico
plt.figure(figsize=(10, 8))
plt.scatter(x1, y1, c='red', label='Grupo 1', alpha=0.7, s=50)
plt.scatter(x2, y2, c='blue', label='Grupo 2', alpha=0.7, s=50)
plt.scatter(x3, y3, c='green', label='Grupo 3', alpha=0.7, s=50)
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.title('Múltiples Grupos en Gráfico de Dispersión')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Fig. 2: Gráfico de dispersión con colores y tamaños variables
Gráficos de Barras
Descubre las técnicas para crear gráficos de barras verticales y horizontales, ideales para comparar categorías, mostrar frecuencias y analizar datos categóricos. Aprenderás a personalizar colores, agregar valores y crear gráficos agrupados para comparaciones efectivas.
Los gráficos de barras son excelentes para comparar categorías o mostrar frecuencias.
Gráfico de Barras Vertical
import matplotlib.pyplot as plt
# Paso 1: Definir los datos categóricos
categorias = ['Python', 'Java', 'JavaScript', 'C++', 'PHP'] # Nombres de las categorías
usuarios = [85, 72, 68, 45, 38] # Valores correspondientes (millones de usuarios)
# Paso 2: Crear la figura
plt.figure(figsize=(10, 6)) # Establecer tamaño del gráfico
# Paso 3: Crear gráfico de barras
# categorias: etiquetas del eje X
# usuarios: alturas de las barras
# color: lista de colores para cada barra
bars = plt.bar(categorias, usuarios, color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd'])
# Paso 4: Configurar etiquetas y título
plt.xlabel('Lenguajes de Programación') # Etiqueta eje X
plt.ylabel('Número de Usuarios (millones)') # Etiqueta eje Y
plt.title('Popularidad de Lenguajes de Programación') # Título
# Paso 5: Agregar cuadrícula solo en eje Y
plt.grid(True, alpha=0.3, axis='y')
# Paso 6: Agregar valores encima de cada barra
for bar, valor in zip(bars, usuarios):
# Calcular posición del texto
x_pos = bar.get_x() + bar.get_width()/2 # Centro de la barra
y_pos = bar.get_height() + 1 # 1 unidad arriba de la barra
# Agregar texto con formato
plt.text(x_pos, y_pos, f'{valor}M',
ha='center', va='bottom', fontweight='bold')
# Paso 7: Mostrar el gráfico
plt.show()
Fig. 7: Gráfico de barras vertical mostrando popularidad de lenguajes de programación
Gráfico de Barras Horizontal
import matplotlib.pyplot as plt
# Datos
paises = ['China', 'India', 'Estados Unidos', 'Indonesia', 'Brasil']
poblacion = [1439, 1380, 331, 273, 213]
# Crear gráfico de barras horizontal
plt.figure(figsize=(10, 6))
bars = plt.barh(paises, poblacion, color='skyblue', edgecolor='navy', linewidth=1)
# Personalización
plt.xlabel('Población (millones)')
plt.ylabel('País')
plt.title('Población por País (2023)')
plt.grid(True, alpha=0.3, axis='x')
# Agregar valores al final de las barras
for bar, valor in zip(bars, poblacion):
plt.text(bar.get_width() + 10, bar.get_y() + bar.get_height()/2,
f'{valor}M', ha='left', va='center', fontweight='bold')
plt.show()
Fig. 8: Gráfico de barras horizontal mostrando población por país
Barras Agrupadas
import matplotlib.pyplot as plt
import numpy as np
# Datos
categorias = ['Q1', 'Q2', 'Q3', 'Q4']
ventas_A = [120, 150, 180, 200]
ventas_B = [100, 130, 160, 190]
# Posiciones de las barras
x = np.arange(len(categorias))
ancho = 0.35
# Crear gráfico
plt.figure(figsize=(10, 6))
bars1 = plt.bar(x - ancho/2, ventas_A, ancho, label='Producto A',
color='lightblue', edgecolor='blue', linewidth=1)
bars2 = plt.bar(x + ancho/2, ventas_B, ancho, label='Producto B',
color='lightcoral', edgecolor='red', linewidth=1)
# Personalización
plt.xlabel('Trimestre')
plt.ylabel('Ventas ($)')
plt.title('Ventas por Trimestre - Comparación de Productos')
plt.xticks(x, categorias)
plt.legend()
plt.grid(True, alpha=0.3, axis='y')
# Agregar valores
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2, height + 5,
f'${height}', ha='center', va='bottom', fontweight='bold')
plt.show()
Fig. 3: Barras agrupadas para comparar múltiples series de datos
Gráficos de Área
Explora los gráficos de área para mostrar la evolución temporal de variables, con énfasis en el área bajo las curvas. Esta sección cubre gráficos básicos de área y técnicas avanzadas de áreas apiladas para comparar múltiples series de datos de manera visualmente impactante.
Los gráficos de área muestran la evolución de una o más variables, rellenando el área bajo las líneas.
Gráfico de Área Básico
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Generar datos para el gráfico
# Crear 100 puntos entre 0 y 10
x = np.linspace(0, 10, 100)
# Función sinusoidal desplazada hacia arriba (mínimo = 2)
y = np.sin(x) + 2
# Paso 2: Crear la figura
plt.figure(figsize=(10, 6))
# Paso 3: Crear gráfico de área
# fill_between: rellena el área entre la línea y el eje X
# x, y: coordenadas de la línea
# alpha: transparencia (0.5 = 50% opaco)
# color: color de relleno
# label: etiqueta para la leyenda
plt.fill_between(x, y, alpha=0.5, color='skyblue', label='Área bajo la curva')
# Paso 4: Agregar línea de contorno
# plot: dibuja la línea sobre el área rellena
plt.plot(x, y, color='blue', linewidth=2, label='Línea')
# Paso 5: Configurar etiquetas y título
plt.xlabel('x') # Etiqueta eje X
plt.ylabel('y') # Etiqueta eje Y
plt.title('Gráfico de Área Básico') # Título
# Paso 6: Agregar leyenda y cuadrícula
plt.legend() # Mostrar leyendas
plt.grid(True, alpha=0.3) # Cuadrícula con 30% opacidad
# Paso 7: Mostrar el gráfico
plt.show()
Fig. 9: Gráfico de área básico mostrando el área bajo una curva
Áreas Apiladas
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(1, 13)
ventas_online = [120, 150, 180, 200, 250, 300, 280, 320, 350, 380, 400, 420]
ventas_tienda = [200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420]
# Crear gráfico de áreas apiladas
plt.figure(figsize=(12, 8))
plt.fill_between(x, 0, ventas_online, alpha=0.7, color='lightblue',
label='Ventas Online', edgecolor='blue', linewidth=1)
plt.fill_between(x, ventas_online, ventas_online + ventas_tienda, alpha=0.7,
color='lightcoral', label='Ventas Tienda', edgecolor='red', linewidth=1)
# Línea total
total = np.array(ventas_online) + np.array(ventas_tienda)
plt.plot(x, total, 'k-', linewidth=2, label='Total')
plt.xlabel('Mes')
plt.ylabel('Ventas ($)')
plt.title('Ventas Online vs Tienda - Áreas Apiladas')
plt.xticks(x, ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun',
'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'])
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Fig. 4: Gráfico de área apilada mostrando contribución de diferentes componentes
Gráficos de Escalera
Aprende a crear gráficos de escalera que muestran cambios discretos y abruptos en los datos, ideales para series temporales donde los cambios ocurren en momentos específicos. Esta técnica es especialmente útil para datos con transiciones claras y cambios de estado.
Los gráficos de escalera muestran cambios discretos en los datos, útiles para series temporales con cambios abruptos.
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Preparar datos de temperatura por hora
# Crear array de 25 horas (0 a 24)
horas = np.arange(0, 25, 1)
# Datos de temperatura simulados para cada hora
temperatura = [15, 14, 13, 12, 11, 12, 15, 18, 22, 25, 28, 30, 32,
33, 32, 30, 28, 25, 22, 20, 18, 17, 16, 15, 14]
# Paso 2: Crear la figura
plt.figure(figsize=(12, 6))
# Paso 3: Graficar línea continua para comparación
# Azul, 30% opacidad, etiqueta para leyenda
plt.plot(horas, temperatura, 'b-', alpha=0.3, label='Línea continua')
# Paso 4: Crear gráfico de escalera
# step: crea gráfico de escalera
# 'r-': línea roja sólida
# linewidth: grosor de línea
# where='post': escalones después de cada punto
plt.step(horas, temperatura, 'r-', linewidth=2, where='post', label='Escalera')
# Paso 5: Configurar ejes y etiquetas
plt.xlabel('Hora del día') # Etiqueta eje X
plt.ylabel('Temperatura (°C)') # Etiqueta eje Y
plt.title('Temperatura a lo Largo del Día') # Título
# Paso 6: Configurar ticks del eje X
plt.xticks(np.arange(0, 25, 2)) # Marcas cada 2 horas
# Paso 7: Agregar cuadrícula y leyenda
plt.grid(True, alpha=0.3) # Cuadrícula
plt.legend() # Mostrar leyendas
# Paso 8: Mostrar el gráfico
plt.show()
Fig. 11: Gráfico de escalera mostrando cambios discretos en la temperatura
Gráficos de Tallo
Descubre los gráficos de tallo (stem plots) para mostrar la distribución de datos discretos con una representación visual simple pero efectiva. Esta técnica es útil para visualizar funciones matemáticas y distribuciones de datos de manera clara y directa.
Los gráficos de tallo muestran la distribución de datos discretos, similares a histogramas pero más simples.
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Generar datos para la función exponencial
# Crear puntos x desde 0.1 hasta 4 con paso 0.1
x = np.arange(0.1, 4, 0.1)
# Calcular exp(-x) para cada punto
y = np.exp(-x)
# Paso 2: Crear la figura
plt.figure(figsize=(10, 6))
# Paso 3: Crear gráfico de tallo
# stem: crea gráfico con líneas verticales desde base hasta puntos
# linefmt: formato de las líneas verticales ('b-': azul sólido)
# markerfmt: formato de los marcadores ('bo': círculos azules)
# basefmt: formato de la línea base ('k-': negro sólido)
markerline, stemlines, baseline = plt.stem(x, y, linefmt='b-', markerfmt='bo',
basefmt='k-', label='Datos')
# Paso 4: Personalizar apariencia de los elementos
# Configurar grosor de las líneas verticales
plt.setp(stemlines, linewidth=1.5)
# Configurar tamaño de los marcadores
plt.setp(markerline, markersize=6)
# Paso 5: Configurar etiquetas y título
plt.xlabel('x') # Variable independiente
plt.ylabel('exp(-x)') # Función exponencial
plt.title('Gráfico de Tallo: Función Exponencial')
# Paso 6: Agregar cuadrícula y leyenda
plt.grid(True, alpha=0.3) # Cuadrícula
plt.legend() # Mostrar leyenda
# Paso 7: Mostrar el gráfico
plt.show()
Fig. 12: Gráfico de tallo mostrando la función exponencial
Combinando Múltiples Tipos
Aprende técnicas avanzadas para combinar diferentes tipos de gráficos en una sola visualización, utilizando múltiples ejes Y, leyendas compartidas y layouts complejos. Esta sección es esencial para crear dashboards informativos que muestren múltiples aspectos de los datos simultáneamente.
A menudo es útil combinar diferentes tipos de gráficos en una misma visualización.
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Preparar datos de múltiples métricas
meses = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun'] # 6 meses
ventas = [120, 150, 180, 200, 250, 300] # Ventas en $
clientes = [45, 52, 48, 61, 55, 67] # Número de clientes
satisfaccion = [4.2, 4.1, 4.3, 4.4, 4.5, 4.6] # Satisfacción 1-5
# Paso 2: Crear figura con eje Y principal
fig, ax1 = plt.subplots(figsize=(12, 8))
# Paso 3: Crear gráfico de barras para ventas (eje Y izquierdo)
bars = ax1.bar(meses, ventas, color='lightblue', alpha=0.7, label='Ventas ($)')
ax1.set_xlabel('Mes') # Etiqueta eje X
ax1.set_ylabel('Ventas ($)', color='blue') # Etiqueta eje Y izquierdo
ax1.tick_params(axis='y', labelcolor='blue') # Color ticks izquierdo
# Paso 4: Crear segundo eje Y para clientes
ax2 = ax1.twinx() # Compartir eje X con ax1
line = ax2.plot(meses, clientes, 'r-o', linewidth=2, label='Clientes')
ax2.set_ylabel('Número de Clientes', color='red') # Etiqueta eje Y derecho
ax2.tick_params(axis='y', labelcolor='red') # Color ticks derecho
# Paso 5: Crear tercer eje Y para satisfacción (desplazado)
ax3 = ax1.twinx() # Otro eje Y compartido
ax3.spines['right'].set_position(('outward', 60)) # Desplazar 60 puntos
scatter = ax3.scatter(meses, satisfaccion, c='green', s=100, label='Satisfacción', marker='s')
ax3.set_ylabel('Satisfacción (1-5)', color='green') # Etiqueta tercer eje Y
ax3.tick_params(axis='y', labelcolor='green') # Color ticks
ax3.set_ylim(3.5, 5) # Límite del eje Y
# Paso 6: Configurar título y cuadrícula
plt.title('Análisis de Ventas, Clientes y Satisfacción')
ax1.grid(True, alpha=0.3) # Cuadrícula en eje principal
# Paso 7: Combinar todas las leyendas
# Obtener handles y labels de cada eje
lines1, labels1 = ax1.get_legend_handles_labels() # Barras
lines2, labels2 = ax2.get_legend_handles_labels() # Línea
lines3, labels3 = ax3.get_legend_handles_labels() # Puntos
# Combinar y mostrar todas las leyendas
ax1.legend(lines1 + lines2 + lines3, labels1 + labels2 + labels3, loc='upper left')
# Paso 8: Mostrar el gráfico
plt.show()
Fig. 13: Combinación de barras, líneas y dispersión en múltiples ejes Y
Casos de Uso Prácticos
Aplica todos los conocimientos aprendidos en escenarios reales del mundo profesional. Esta sección incluye ejemplos completos de análisis de ventas, visualización de datos científicos y creación de dashboards, mostrando cómo combinar múltiples técnicas para resolver problemas reales de visualización de datos.
1. Análisis de Tendencias de Ventas
import matplotlib.pyplot as plt
import numpy as np
# Paso 1: Generar datos sintéticos de ventas
np.random.seed(42) # Para reproducibilidad
meses = np.arange(1, 13) # Meses del 1 al 12
# Tendencia lineal: ventas base + 50 por mes
ventas_base = 1000 + 50 * meses
# Agregar variabilidad realista
ruido = np.random.normal(0, 100, 12) # Ruido gaussiano
ventas = ventas_base + ruido
# Paso 2: Crear figura grande para dashboard
plt.figure(figsize=(15, 10)) # 15x10 pulgadas
# Paso 3: Primer subplot - Tendencia temporal
plt.subplot(2, 2, 1) # 2 filas, 2 columnas, posición 1
plt.plot(meses, ventas, 'b-o', linewidth=2, markersize=6)
plt.xlabel('Mes')
plt.ylabel('Ventas ($)')
plt.title('Tendencia de Ventas Mensuales')
plt.grid(True, alpha=0.3)
# Paso 4: Segundo subplot - Distribución (Histograma)
plt.subplot(2, 2, 2) # Posición 2
plt.hist(ventas, bins=6, edgecolor='black', alpha=0.7)
plt.xlabel('Rango de Ventas')
plt.ylabel('Frecuencia')
plt.title('Distribución de Ventas')
plt.grid(True, alpha=0.3)
# Paso 5: Tercer subplot - Relación Mes-Ventas
plt.subplot(2, 2, 3) # Posición 3
plt.scatter(meses, ventas, s=100, alpha=0.6, c=ventas, cmap='viridis')
plt.xlabel('Mes')
plt.ylabel('Ventas ($)')
plt.title('Relación Mes-Ventas')
plt.colorbar(label='Ventas ($)') # Barra de colores
plt.grid(True, alpha=0.3)
# Paso 6: Cuarto subplot - Barras por mes
plt.subplot(2, 2, 4) # Posición 4
meses_str = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun',
'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']
plt.bar(meses_str, ventas, color='skyblue', edgecolor='navy')
plt.xlabel('Mes')
plt.ylabel('Ventas ($)')
plt.title('Ventas por Mes')
plt.xticks(rotation=45) # Rotar etiquetas 45 grados
plt.grid(True, alpha=0.3, axis='y')
# Paso 7: Ajustar layout y mostrar
plt.tight_layout() # Ajustar automáticamente los espacios
plt.show()
Fig. 14: Dashboard completo de análisis de ventas con múltiples tipos de gráficos
2. Visualización de Datos Científicos
import matplotlib.pyplot as plt
import numpy as np
# Simular datos de experimento científico
np.random.seed(42)
tiempo = np.linspace(0, 100, 1000)
senal = np.sin(0.1 * tiempo) + 0.5 * np.sin(0.5 * tiempo) + 0.1 * np.random.randn(1000)
# Crear visualización científica
plt.figure(figsize=(15, 10))
# Señal temporal
plt.subplot(2, 2, 1)
plt.plot(tiempo, senal, 'b-', linewidth=1, alpha=0.8)
plt.xlabel('Tiempo (s)')
plt.ylabel('Amplitud')
plt.title('Señal Temporal')
plt.grid(True, alpha=0.3)
# Histograma de la señal
plt.subplot(2, 2, 2)
plt.hist(senal, bins=50, edgecolor='black', alpha=0.7, density=True)
plt.xlabel('Amplitud')
plt.ylabel('Densidad de Probabilidad')
plt.title('Distribución de Amplitud')
plt.grid(True, alpha=0.3)
# Espectro de frecuencia (simplificado)
plt.subplot(2, 2, 3)
frecuencias = np.fft.fftfreq(len(tiempo), tiempo[1] - tiempo[0])
espectro = np.abs(np.fft.fft(senal))
plt.plot(frecuencias[:len(frecuencias)//2], espectro[:len(espectro)//2], 'r-')
plt.xlabel('Frecuencia (Hz)')
plt.ylabel('Magnitud')
plt.title('Espectro de Frecuencia')
plt.grid(True, alpha=0.3)
# Diagrama de dispersión con densidad
plt.subplot(2, 2, 4)
plt.scatter(tiempo[::10], senal[::10], alpha=0.6, s=20, c=senal[::10], cmap='coolwarm')
plt.xlabel('Tiempo (s)')
plt.ylabel('Amplitud')
plt.title('Diagrama de Dispersión con Densidad')
plt.colorbar(label='Amplitud')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
Fig. 15: Visualización científica completa con señal temporal, histograma, espectro y dispersión
¡Has aprendido los tipos de gráficos básicos más importantes en Matplotlib! Ahora puedes crear visualizaciones efectivas para diferentes tipos de datos y casos de uso.
En el próximo tutorial aprenderás sobre Personalización de Gráficos para hacer tus visualizaciones aún más atractivas y profesionales.
No hay comentarios aún
Sé el primero en comentar este tutorial.