Tiza Las materias del CBC
Practicar →

Pensamiento Computacional (090) · Unidad 6 — Bibliotecas de Python

Gráficos con Matplotlib

Un gráfico es la forma más rápida de entender un conjunto de datos. Con tres líneas ya tenés uno, pero sin títulos no sirve de nada.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

El gráfico mínimo

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()

El as plt es la convención, igual que np y pd. plot dibuja y show muestra. Sin show(), en muchos entornos no aparece nada.

Las dos listas tienen que tener la misma cantidad de elementos: cada punto es un x con su y. Si una tiene 4 y la otra 5, el error que tira no menciona eso claramente, así que conviene chequearlo antes con len().

Tipos de gráfico

plt.plot(x, y)     líneas       algo que evoluciona (el tiempo)
plt.bar(x, y)      barras       comparar categorías
plt.scatter(x, y)  puntos       ver si dos variables se relacionan
plt.hist(datos)    histograma   cómo se reparten los valores

Elegir bien importa: un gráfico de líneas entre categorías que no tienen orden sugiere una continuidad que no existe.

Sin títulos no se entiende

plt.plot(x, y)
plt.title("Notas por parcial")
plt.xlabel("Parcial")
plt.ylabel("Nota")
plt.show()
Un gráfico sin etiquetas de ejes no dice nada. El que lo mira no sabe qué mide cada eje ni en qué unidad. Es el punto que más se descuenta cuando piden un gráfico, y son tres líneas.

Varias series

plt.plot(x, y1, label="Curso A")
plt.plot(x, y2, label="Curso B")
plt.legend()   # sin esto los label no se ven
plt.show()

Cada plot antes del show se dibuja sobre el mismo gráfico. El legend() es el que hace aparecer la referencia.

Juntando todo

df = pd.read_csv("notas.csv")
plt.bar(df["nombre"], df["nota"])
plt.title("Notas del curso")
plt.ylabel("Nota")
plt.show()

Leer con Pandas y graficar con Matplotlib es la combinación estándar, y es a donde apunta toda la unidad: de un archivo de datos a una conclusión que se ve.

Ejemplo resuelto

Con un CSV de notas (columnas nombre y nota), hacer un gráfico de barras presentable.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("notas.csv")

plt.bar(df["nombre"], df["nota"])
plt.title("Notas del curso")
plt.xlabel("Estudiante")
plt.ylabel("Nota")
plt.ylim(0, 10)
plt.show()

Por qué barras y no líneas. Los nombres son categorías, no una secuencia. Una línea entre ana, luis y sol sugeriría que hay una evolución entre ellos, y no la hay.

Por qué ylim(0, 10). Sin eso, Matplotlib ajusta el eje al rango de los datos. Si todas las notas están entre 7 y 9, el eje arranca en 7 y las diferencias se ven enormes. Fijar la escala real de las notas evita exagerar sin querer.

Ese último punto es el que más se discute cuando se presentan datos: el eje elegido cambia la historia que cuenta el gráfico. No está mal recortar el eje, pero hay que hacerlo a propósito y saber qué efecto produce.

Control antes de entregar: ¿tiene título? ¿los dos ejes están etiquetados? ¿se entiende sin que nadie te lo explique? Si la respuesta a las tres es sí, está listo.

Dónde se cae la mayoría

Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.

Practicar Gráficos con Matplotlib →

Ver todos los temas de Pensamiento Computacional