Gráficos de líneas y de dispersión
Represente datos continuos con ax.plot() y puntos discretos con ax.scatter(), controlando el color, el marcador y el estilo de línea.
Gráficos de líneas y de dispersión es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
Líneas y dispersión: tipos de gráficos fundamentales
Los gráficos de líneas conectan puntos de datos consecutivos mediante una línea y son ideales para visualizar tendencias a lo largo del tiempo o funciones continuas. Los gráficos de dispersión muestran puntos individuales sin conectarlos mediante líneas, por lo que son perfectos para explorar relaciones entre dos variables numéricas. Ambos se crean en un objeto Axes de Matplotlib: ax.plot() para las líneas y ax.scatter() para los puntos de dispersión.
ax.plot() para gráficos de líneas
ax.plot(x, y) dibuja una línea que conecta los puntos de datos en orden. Pase los valores de x como primer argumento y los de y como segundo. Ambos pueden ser listas de Python, arrays de NumPy o Series de Pandas. Cuando se pasa un solo argumento, Matplotlib utiliza automáticamente el índice (0, 1, 2, ...) como eje x. El método devuelve una lista de objetos Artist Line2D.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, y) # basic line plot
ax.set_title('Sine Wave')
ax.set_xlabel('x')
ax.set_ylabel('sin(x)')
# plt.show()
plt.close()Control del estilo y el color de las líneas
Los argumentos con nombre más habituales de ax.plot() son: color (nombre, hexadecimal o tupla RGB), linewidth (o lw), linestyle (o ls): '-' continuo, '--' discontinuo, ':' de puntos, '-.' de guion y punto, marker (forma en cada punto de datos) y markersize. Combine linestyle y marker para mostrar simultáneamente la línea y los puntos de datos individuales.
fig, ax = plt.subplots(figsize=(7, 4))
# Solid blue line with circle markers
ax.plot(x, np.sin(x), color='steelblue', lw=2, ls='-',
marker='o', markersize=4, label='sin(x)')
# Dashed red line
ax.plot(x, np.cos(x), color='crimson', lw=1.5, ls='--', label='cos(x)')
ax.legend()
plt.close()Trazado de varias líneas
Llame a ax.plot() varias veces para superponer varias líneas en los mismos Axes. Matplotlib cambia automáticamente entre los colores de una paleta predeterminada. Pase siempre el argumento con nombre label para cada línea, de modo que ax.legend() pueda etiquetarlas automáticamente. Coloque la llamada a la leyenda después de todas las llamadas de trazado para asegurarse de que incluya todas las líneas.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
dates = pd.date_range('2024-01', periods=12, freq='ME')
fig, ax = plt.subplots(figsize=(8, 4))
for product in ['A', 'B', 'C']:
sales = np.random.randint(50, 200, 12)
ax.plot(dates, sales, marker='o', label=f'Product {product}')
ax.set_title('Monthly Sales by Product')
ax.legend()
plt.close()Trazado directo de DataFrames de Pandas
Los DataFrames de Pandas tienen un método .plot() que crea gráficos de Matplotlib directamente. Pase ax=ax para dibujar en un objeto Axes existente. df.plot(ax=ax) traza todas las columnas como líneas independientes utilizando el índice del DataFrame como eje x. Después, puede seguir aplicando todas las personalizaciones de Matplotlib en el objeto ax.
df = pd.DataFrame(
np.random.randn(12, 3),
index=pd.date_range('2024', periods=12, freq='ME'),
columns=['North', 'South', 'West']
).cumsum()
fig, ax = plt.subplots(figsize=(8, 4))
df.plot(ax=ax, linewidth=1.5)
ax.set_title('Cumulative Revenue by Region')
ax.set_ylabel('Revenue (cumulative)')
plt.close()ax.scatter() para gráficos de dispersión
ax.scatter(x, y) dibuja puntos individuales sin conectarlos mediante líneas. A diferencia de ax.plot(), scatter no presupone que los datos estén ordenados. Parámetros principales: c (color; puede ser un array para asignar colores por punto), s (tamaño del punto; también puede ser un array), cmap (mapa de colores cuando c es numérico) y alpha (transparencia de 0 a 1 para gestionar el solapamiento de puntos).
np.random.seed(42)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)
fig, ax = plt.subplots(figsize=(6, 5))
ax.scatter(x, y, color='steelblue', alpha=0.6, s=40)
ax.set_xlabel('Feature X')
ax.set_ylabel('Target Y')
ax.set_title('Feature vs Target')
plt.close()Colorear puntos de dispersión por categoría
Pase un array numérico al parámetro c y un mapa de colores cmap para colorear los puntos de dispersión según una tercera variable. Añada una barra de colores con plt.colorbar(scatter_obj) para proporcionar una escala. Esta técnica se denomina variante de gráfico de burbujas cuando el parámetro s (tamaño) también varía según una cuarta variable.
categories = np.random.choice([0, 1, 2], size=100)
fig, ax = plt.subplots(figsize=(6, 5))
scatter = ax.scatter(x, y, c=categories, cmap='Set1',
alpha=0.7, s=60, edgecolors='none')
fig.colorbar(scatter, ax=ax, label='Category')
ax.set_title('Scatter Coloured by Category')
plt.close()Añadir una línea de tendencia
Un gráfico de dispersión con una línea de tendencia ajustada muestra tanto los puntos de datos individuales como el patrón general. Use np.polyfit(x, y, 1) para calcular un ajuste lineal, evalúelo con np.poly1d(coeffs)(x_range) y superponga el resultado con ax.plot() sobre el gráfico de dispersión. La línea de tendencia debe ser más fina y tener un estilo diferente para distinguirla de los puntos de datos.
fig, ax = plt.subplots(figsize=(6, 5))
ax.scatter(x, y, alpha=0.4, s=30, color='steelblue', label='Data')
# Fit and plot linear trend line
coeffs = np.polyfit(x, y, 1)
x_line = np.linspace(x.min(), x.max(), 100)
y_line = np.poly1d(coeffs)(x_line)
ax.plot(x_line, y_line, color='red', lw=2, label='Linear fit')
ax.legend()
ax.set_title('Scatter with Trend Line')
plt.close()Sombreado de bandas de confianza con fill_between
ax.fill_between(x, y_lower, y_upper) rellena el área entre dos curvas. Se utiliza habitualmente para mostrar intervalos de confianza alrededor de una línea media, bandas de desviación estándar o envolventes de mínimos y máximos. Pase alpha para hacer que el sombreado sea semitransparente y los datos subyacentes sigan siendo visibles.
x_range = np.linspace(0, 2 * np.pi, 100)
mean = np.sin(x_range)
upper = mean + 0.2
lower = mean - 0.2
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_range, mean, color='steelblue', lw=2, label='Mean')
ax.fill_between(x_range, lower, upper,
color='steelblue', alpha=0.2, label='±0.2 band')
ax.legend()
ax.set_title('Line with Confidence Band')
plt.close()Límites de los ejes y líneas de cuadrícula
Controle el rango visible con ax.set_xlim(min, max) y ax.set_ylim(min, max). Active las líneas de cuadrícula con ax.grid(True). Personalice la cuadrícula con los argumentos con nombre linestyle, linewidth y alpha. Una cuadrícula sutil con alpha=0.3 facilita la lectura de valores exactos sin saturar el gráfico. Llame a ax.set_axisbelow(True) para dibujar la cuadrícula detrás de los puntos de datos.
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, np.sin(x), 'b-', lw=2)
ax.set_xlim(0, 2 * np.pi)
ax.set_ylim(-1.2, 1.2)
ax.grid(True, linestyle='--', alpha=0.5)
ax.set_axisbelow(True) # grid behind data
ax.set_title('Sine with Grid')
plt.close()Alpha y solapamiento de puntos
Cuando muchos puntos de datos se superponen en la misma zona de un gráfico de dispersión, los puntos individuales dejan de ser visibles; esto se denomina solapamiento de puntos. La solución más sencilla consiste en reducir la opacidad con alpha (0.0 = totalmente transparente, 1.0 = totalmente opaco). Establezca alpha=0.3 o un valor inferior para que las zonas densas aparezcan más oscuras (porque se acumulan varios puntos semitransparentes), mientras que las zonas dispersas permanecen claras. Para conjuntos de datos muy grandes (millones de puntos), considere usar hexbin o estimaciones de densidad por kernel.
np.random.seed(1)
x_dense = np.random.randn(1000)
y_dense = np.random.randn(1000)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
# Without alpha: overplotting hides density
ax1.scatter(x_dense, y_dense, s=10)
ax1.set_title('No alpha (overplotted)')
# With alpha: density visible
ax2.scatter(x_dense, y_dense, s=10, alpha=0.2)
ax2.set_title('alpha=0.2 (density visible)')
plt.tight_layout()
plt.close()Comprobación rápida
Compruebe su comprensión de los gráficos de líneas y de dispersión de Matplotlib explicados en esta lección.
Resumen de la lección
En esta lección ha aprendido que ax.plot() crea gráficos de líneas con control total del color, el estilo de línea y los marcadores; ax.scatter() crea gráficos de dispersión con color y tamaño por punto mediante c y s; ax.fill_between() añade bandas de confianza; y ax.grid() añade líneas de cuadrícula para facilitar la lectura. A continuación, crearemos gráficos de barras e histogramas para visualizar datos categóricos y distribuciones.
Aprende Python con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Gráficos de líneas y de dispersión» es gratis?
Sí — el texto completo de «Gráficos de líneas y de dispersión» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Gráficos de líneas y de dispersión»?
Represente datos continuos con ax.plot() y puntos discretos con ax.scatter(), controlando el color, el marcador y el estilo de línea. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Pandas & NumPy Academy?
No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Gráficos de líneas y de dispersión»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?
Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de Figure y Axes
- Gráficos de líneas y de dispersión
- Gráficos de barras e histogramas
- Etiquetas, títulos y guardado de figuras