Introducción a los gráficos de datos en Python con Matplotlib

Figuras

Hasta ahora todo lo que hemos hecho con matplotlib ha sido dibujar gráficos en celdas, pero en la vida real necesitaremos manejar estos gráficos para poder exportarlos y utilizarlos en nuestros programas y aplicaciones web.

Para manejarlos se utilizan las figuras, la versión orientada a objetos de todo lo que hemos estado haciendo usando instancias y métodos. Cambia un poco la sintaxis así que tenedlo en cuenta:

# %%
# Gráficos usando figuras
import numpy as np
import matplotlib.pyplot as plt

# La figura crea un espacio donde dibujar el gráfico
fig = plt.figure()

# Necesitamos definir una relación de tamaños para el rectángulo del dibujo (l,b,w,h)
# Nota: En jupyter l(eft) y b(ottom) para el primer gráfico no se tienen en cuenta
rect = (0, 0, 1, 1)

# Añadimos los límites para crear un objeto de ejes sobre el que dibujar el gráfico
axes = fig.add_axes(rect)

# A partir de este objeto podremos crear nuestro gráfico como si fuera el clásico plt
axes.plot(np.random.randint(100, size=[6]), label="Pedro", color="green")
axes.plot(np.random.randint(100, size=[6]), label="Marta", color="red")
axes.plot(np.random.randint(100, size=[6]), label="Ana", color="cyan")

# La mayor diferencia ahora es a la hora de personalizar el gráfico, teniéndonos
# que referir a los métodos con la palabra set precediendo del nombre clásico
axes.set_ylim(0, 100)
axes.set_xlabel("Meses")
axes.set_ylabel("Cantidad en €")
axes.set_title("Ahorros del primer semestre")

# La parte de mapear los nombres cambia un poco y requiere usar dos métodos
meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio']
mapeado = range(len(meses))
axes.set_xticks(mapeado)
axes.set_xticklabels(meses)

# Finalmente mostramos la figura
fig.show()

¿Cuál es la gracia de todo esto? Pues que al ser un objeto independiente podemos modificar su tamaño estableciendo una relación de pulgadas en ancho/alto y una densidad de píxeles por pulgada (dpi):

fig = plt.figure(figsize=(1, 1), dpi=100)
fig = plt.figure(figsize=(4, 2), dpi=100)
fig = plt.figure(figsize=(3, 4), dpi=100)

Una vez tengamos los gráficos podemos guardarlos abriéndolos con doble clic y usando el botón de exportar que soporta png, svg y pdf.

Si os interesa añadir subgráficos en figuras también se puede hacerlo, os dejaré un enlace con un notebook donde explicación el proceso con un par de ejemplos.