¿Las personas que estudian más horas sacan mejores notas? ¿Los departamentos más grandes cuestan más? Para explorar la relación entre dos variables numéricas, el scatter plot (gráfico de dispersión) es la herramienta indicada. Cada punto es una observación, y el patrón que forman los puntos en conjunto revela si existe una relación.
Crear un scatter plot
import matplotlib.pyplot as plt
horas_estudio = [1, 2, 3, 4, 5, 6, 7, 8]
nota = [35, 42, 50, 55, 62, 70, 75, 88]
plt.scatter(horas_estudio, nota, color='#0984e3')
plt.title('Horas de estudio vs Nota')
plt.xlabel('Horas de estudio')
plt.ylabel('Nota')
plt.show()
Cada punto representa a un estudiante: su posición horizontal indica cuántas horas estudió, y su posición vertical muestra la nota que obtuvo.
Tres patrones de correlación
Los puntos en un scatter plot tienden a formar uno de estos patrones:
Correlación positiva
Los puntos suben de izquierda a derecha: cuando X aumenta, Y también tiende a aumentar.
Ejemplos: horas de estudio y nota, tamaño de casa y precio, años de experiencia y salario.
Correlación negativa
Los puntos bajan de izquierda a derecha: cuando X aumenta, Y tiende a disminuir.
Ejemplos: precio y cantidad demandada, horas de TV y rendimiento académico.
Sin correlación
Los puntos están dispersos sin patrón visible. Las variables no están relacionadas.
Ejemplos: número de zapato y nota en un examen.
Transparencia para muchos datos
Con muchos puntos, se superponen y no puedes ver la densidad. Usa alpha para transparencia:
import matplotlib.pyplot as plt
import random
x = [random.gauss(50, 15) for _ in range(500)]
y = [xi * 0.8 + random.gauss(0, 10) for xi in x]
plt.scatter(x, y, alpha=0.4, color='#6c5ce7')
plt.title('Relación entre variables')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.show()
Con alpha=0.4, las zonas donde se acumulan más puntos aparecen más oscuras, revelando dónde se concentra la mayor parte de los datos.
Usar color para una tercera variable
Puedes agregar una dimensión más usando color para representar una categoría:
import matplotlib.pyplot as plt
# Estudiantes de dos secciones
horas_a = [2, 3, 4, 5, 6]
notas_a = [45, 55, 60, 70, 78]
horas_b = [1, 3, 5, 7, 8]
notas_b = [30, 48, 58, 72, 85]
plt.scatter(horas_a, notas_a, color='#0984e3', label='Sección A')
plt.scatter(horas_b, notas_b, color='#e17055', label='Sección B')
plt.title('Horas de estudio vs Nota por sección')
plt.xlabel('Horas de estudio')
plt.ylabel('Nota')
plt.legend()
plt.show()
Esto permite ver si la relación entre horas y notas es similar en ambas secciones o si hay diferencias.
Scatter vs línea
| Scatter plot | Gráfico de línea |
|---|---|
| Cada punto es una observación independiente | Los puntos tienen un orden secuencial |
| Muestra la relación entre dos variables | Muestra la evolución en el tiempo |
| No conecta puntos | Conecta puntos con líneas |
Si tus datos son "persona 1: (3 horas, 65 nota)", "persona 2: (5 horas, 78 nota)", usa scatter. Si tus datos son "enero: 100, febrero: 120, marzo: 115", usa línea.
Errores frecuentes
Asumir causalidad desde correlación: que dos variables estén correlacionadas no significa que una cause la otra. El número de helados vendidos y los ahogamientos en piscina están correlacionados porque ambos dependen de la temperatura, no porque los helados causen ahogamientos.
Usar scatter con pocas observaciones: con 4 o 5 puntos cualquier patrón puede ser coincidencia. Se necesitan al menos 20 o 30 observaciones para que un patrón sea confiable.
Ignorar outliers: un punto aislado puede distorsionar la percepción de la relación. Identifica los outliers antes de interpretar el patrón general.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de Visualización de Datos y recibes corrección inmediata de IA.
Comenzar gratis →