Saltar a contenido

Introducción a Matplotlib

Importar las librerías

1
2
import matplotlib.pyplot as plt
import numpy as np

Representar una lista

1
2
plt.plot([1, 0, 4, 2])
plt.show()

png

Representar valores x vs y

1
2
plt.plot([-3, -2, 5, 0], [1, 6, 4, 3])
plt.show()

png

Representar una función

1
2
3
4
5
x = np.linspace(-2, 2, 500)
y = x**2

plt.plot(x, y)
plt.show()

png

Tamaño de los ejes

Llamamos al método axis pasándole los valores [xmin, xmax, ymin, ymax]

1
2
3
plt.plot([-3, -2, 5, 0], [1, 6, 4, 3])
plt.axis([-4, 6, 0, 7])
plt.show()

png

Título y etiqueta en los ejes

1
2
3
4
5
6
plt.plot(x, y)
plt.title("Square function")
plt.xlabel("x")
plt.ylabel("y = x**2")
plt.grid(True)
plt.show()

png

Tipo de línea y color

Opciones de estilo y color en la documentación.

1
2
plt.plot(x, y, "g--")
plt.show()

png

Otros parametros de interés

Propiedad Valores
color Cualquier color Matplotlib o tupla (R, G, B) entre 0 y 1.
linestyle o ls Tipo de línea: 'solid', 'dashed', 'dashdot', 'dotted'
linewidth o lw Ancho de la línea en puntos (valor entero)
marker Tipo de marcador
markersize o ms Tamaño del marcador (valor entero)
zorder Orden de superposición de gráficas
1
2
3
plt.plot([1, 0, 4, 2], color='red', linestyle='dashdot',
         linewidth = 2, marker='*', markersize=12)
plt.show()

png

Pintar gráficas superpuestas

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

png

Pintar gráficas superpuestas II

Opciones de estilo y color en la documentación.

1
2
3
x = np.linspace(-1.4, 1.4, 30)
plt.plot(x, x, 'g--', x, x**2, 'r:', x, x**3, 'b^')
plt.show()

png

Obtener referencias a líneas

1
2
3
4
5
x = np.linspace(-1.4, 1.4, 30)
line1, line2, line3 = plt.plot(x, x, 'g--', x, x**2, 'r:', x, x**3, 'b^')
line1.set_linewidth(3.0)
line3.set_alpha(0.2)
plt.show()

png

Añadir una leyenda

Posibles localizaciones (loc): 'upper left', 'upper right', 'lower left', 'lower right', 'upper center', 'lower center', 'center left', 'center right', 'center', 'best'.

Más información en la documentación.

1
2
3
4
5
6
x = np.linspace(-1.4, 1.4, 50)
plt.plot(x, x**2, "r--", label="Square function")
plt.plot(x, x**3, "g-", label="Cube function")
plt.legend(loc="best")
plt.grid(True)
plt.show()

png

Añadir textos

1
2
3
4
5
x = np.linspace(-1.4, 1.4, 30)
plt.plot(x, x**2)
plt.text(0, 1.5, "Square function\n$y = x^2$",
         fontsize=20, color='blue', horizontalalignment='center')
plt.show()

png

Añadir anotaciones

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
x = np.linspace(-1.4, 1.4, 30)
px = 0.8
py = px**2
plt.plot(x, x**2, px, py, "ro")

plt.text(px, py - 0.3, "x = %0.2f\ny = %0.2f"%(px, py), rotation=50, color='gray')

plt.annotate("The point", xy=(px, py), xytext=(px-1.0,py+0.5),
                           color="green", weight="heavy", fontsize=14,
                           arrowprops={"facecolor": "lightgreen"})
plt.show()

png

Otros gráficos: scatter

1
2
3
4
from numpy.random import rand
x, y = rand(2, 100)
plt.scatter(x, y)
plt.show()

png

Otros gráficos: histogram

1
2
3
data = np.random.randn(400)
plt.hist(data, bins=20)
plt.show()

png

Tamaño de una figura

1
2
3
4
x = np.linspace(-1.4, 1.4, 30)
plt.figure(figsize=(9,3))
plt.plot(x, x**2)
plt.show()

png

Guardar una figura

1
2
3
x = np.linspace(-1.4, 1.4, 30)
plt.plot(x, x**2)
plt.savefig("my_square_function.png", dpi=300, transparent=False)

png