QuieroProgramar por Rodri Gonzalez
Data Analysis · Lección 10 de 19

Matplotlib Básico

Un gráfico bien hecho comunica en 2 segundos lo que una tabla de números tarda 2 minutos. Matplotlib es la biblioteca de visualización más importante de Python — todo lo que ves en Seaborn, pandas plots, y la mayoría de gráficos científicos está construido sobre ella. Dominar Matplotlib es dominar la comunicación visual de datos.

90–120 min Prerrequisitos: Lección 09 (Estadística descriptiva)
01

Concepto teórico

La anatomía de un gráfico Matplotlib

Cada gráfico de Matplotlib tiene una estructura jerárquica que necesitás entender para poder personalizar cualquier aspecto:

Atención: Axes ≠ Axis. Axes (con 'e') es el gráfico completo (¡nombre confuso, pero así lo llama Matplotlib!). Axis (sin 'e') es un eje específico (X o Y). Si leés documentación, esta distinción es crítica.

Las dos interfaces de Matplotlib

Interfaz Estilo Cuándo usarla Ejemplo
pyplot (plt.) Simple, imperativo Gráficos rápidos, exploración plt.plot(x, y)
OO (fig, ax) Explícito, control total Gráficos complejos, subplots, personalización fig, ax = plt.subplots()
¿Cuál usar? Para aprender y explorar, plt.plot() es más rápido. Para gráficos de producción y reportes, la interfaz OO (fig, ax) te da control total. En esta lección usaremos plt para arrancar rápido, y la interfaz OO cuando necesitemos más control.

Los 5 gráficos esenciales

Tipo Método Uso
Líneas plt.plot() Tendencias temporales (ventas por mes)
Barras plt.bar() Comparar categorías (ventas por sucursal)
Dispersión plt.scatter() Relación entre 2 variables (ingreso vs gasto)
Histograma plt.hist() Distribución de datos (distribución de edades)
Torta plt.pie() Composición porcentual (market share)
Analogía del periodista: un periodista elige si escribe una noticia, una crónica o una entrevista según el tipo de historia que quiere contar. Un analista elige el tipo de gráfico según el tipo de pregunta que quiere responder. Las líneas cuentan "cómo evolucionó algo en el tiempo". Las barras responden "quién vendió más". El scatter pregunta "¿están relacionadas estas dos cosas?".
En el trabajo real: un dashboard ejecutivo típico tiene 4-6 gráficos: un line chart para la tendencia de ventas, un bar chart de ranking de sucursales, un pie chart de composición de cartera, y un scatter de riesgo vs retorno. Esos 5 tipos cubren el 90% de las visualizaciones que vas a necesitar.
02

Ejemplos explicados paso a paso

Ejemplo 1: Gráfico de líneas — Ventas mensuales

El gráfico más clásico para mostrar tendencias en el tiempo. Incluye título, labels y grid.

ejemplo_01_lineas.pyPython

        
Hacé clic en ▶ Ejecutar

Ejemplo 2: Gráfico de barras — Ranking de sucursales

Perfecto para comparar categorías. Agregamos colores condicionales y etiquetas de valor sobre cada barra.

ejemplo_02_barras.pyPython

        
Hacé clic en ▶ Ejecutar

Ejemplo 3: Scatter plot — Relación entre variables

¿Existe relación entre ingreso y gasto? El scatter plot muestra la distribución de puntos y permite detectar patrones.

ejemplo_03_scatter.pyPython

        
Hacé clic en ▶ Ejecutar

Ejemplo 4: Histograma — Distribución de datos

¿Los saldos se concentran en un rango o están dispersos? El histograma te muestra la forma de la distribución.

ejemplo_04_histograma.pyPython

        
Hacé clic en ▶ Ejecutar
Tip profesional — ¿cuántos bins? Demasiados bins crean ruido y el patrón desaparece. Muy pocos ocultan detalles. La regla de Sturges dice bins = 1 + log2(n). Para 250 datos ≈ 9 bins. Sin embargo, entre 20 y 30 bins suele funcionar bien en la práctica. Experimentá con el valor.

Ejemplo 5: Subplots — Múltiples gráficos en una figura

Un dashboard típico tiene varios gráficos lado a lado. La interfaz OO (fig, ax) te permite crearlos con subplots().

ejemplo_05_subplots.pyPython

        
Hacé clic en ▶ Ejecutar
03

Referencia rápida

Elemento Código Qué hace
Crear figura plt.figure(figsize=(8,4)) Tamaño del lienzo
Líneas plt.plot(x, y) Gráfico de líneas
Barras plt.bar(x, y) Barras verticales
Dispersión plt.scatter(x, y) Nube de puntos
Histograma plt.hist(data, bins=20) Distribución
Torta plt.pie(vals, labels=...) Composición %
Título plt.title("Texto") Título del gráfico
Ejes plt.xlabel() / ylabel() Labels de ejes
Grilla plt.grid(True, alpha=0.3) Líneas de referencia
Leyenda plt.legend() Identificar series
Subplots fig, ax = plt.subplots(r,c) Múltiples gráficos
Mostrar plt.show() Renderizar el gráfico
04

Ejercicios

Nivel 1 · Básico

Ejercicio 1: Gráfico de líneas simple

Graficá las ventas mensuales con plt.plot(). Agregá título y labels de ejes. Imprimí Gráfico generado.

ejercicio_01.pyDebe imprimir "Gráfico generado"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 2: Gráfico de barras

Creá un gráfico de barras con las ventas por ciudad. Imprimí Barras OK.

ejercicio_02.pyDebe imprimir "Barras OK"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 3: Histograma

Generá un histograma de los saldos con 10 bins. Imprimí Histograma listo.

ejercicio_03.pyDebe imprimir "Histograma listo"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 4: Barras con colores condicionales

Graficá las ganancias. Si la ganancia es positiva, color verde. Si es negativa, color rojo. Imprimí Colores aplicados.

ejercicio_04.pyDebe imprimir "Colores aplicados"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 5: Scatter plot con título y grid

Graficá la relación entre antigüedad e ingreso con plt.scatter(). Incluí título, labels, grid. Imprimí Scatter OK.

ejercicio_05.pyDebe imprimir "Scatter OK"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 6: Dos series en un mismo gráfico

Graficá ventas y gastos en el mismo gráfico de líneas. Usá leyenda para diferenciarlas. Imprimí Doble serie OK.

ejercicio_06.pyDebe imprimir "Doble serie OK"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 7: Histograma con mediana

Generá un histograma y agregá una línea vertical roja punteada en la mediana con plt.axvline(). Imprimí la mediana. Debe incluir 400.

ejercicio_07.pyDebe incluir "400"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 8: Barras horizontales ordenadas

Creá un plt.barh() horizontal con los vendedores ordenados de mayor a menor venta. Imprimí Ranking OK.

ejercicio_08.pyDebe imprimir "Ranking OK"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 9: Gráfico de torta con autopct

Creá un pie chart con distribución de canales. Usá autopct='%1.0f%%'. Imprimí Torta lista.

ejercicio_09.pyDebe imprimir "Torta lista"

          
Hacé clic en ▶ Ejecutar
Nivel 4 · Desafío

Ejercicio 10: Mini dashboard con subplots

Creá una figura con 2 subplots lado a lado: (1) barras de ventas por ciudad, (2) líneas de tendencia mensual. Imprimí Dashboard OK.

ejercicio_10_desafio.pyDebe imprimir "Dashboard OK"

          
Hacé clic en ▶ Ejecutar
05

Resumen y conexión

En la siguiente lección (11 · Seaborn: visualización estadística) vas a aprender a crear gráficos estadísticos avanzados con mucho menos código. Seaborn se construye sobre Matplotlib y automatiza la mayoría de la personalización.

Recursos: Matplotlib Quick Start · Galería de ejemplos