Curvas de nivel

La función matplotlib.contour (o su método equivalente) nos permite mostrar en una gráfica curvas de nivel de una forma muy sencilla. Los valores a pasar como argumentos son arrays bidimensionales con los valores x e y de los puntos (obtenidos con la función numpy.meshgrid) y un array, de las mismas dimensiones que x e y, con los valores en el eje z a representar. Veámoslo en la práctica:

Definimos, en primer lugar, la función que definirá el valor z para cada par de puntos x e y. A continuación, creamos las matrices X e Y y generamos los valores Z correspondientes:

def f(x, y):
    return np.sin(x) ** 2 + np.cos(5 + x * y) + 2 * np.cos(x)
    
x = np.linspace(0, 5, 100)
y = np.linspace(0, 5, 100)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)

A continuación basta ejecutar la función plt.contour con los valores X, Y y Z calculados (las siguientes imágenes son generadas trabajando con el estilo "default"):

Curvas de nivel

Esta función acepta otros parámetros:

El parámetro levels determina el número de curvas a mostrar:

Curvas de nivel

alpha especifica el grado de transparencia de las curvas, y cmap el mapa de color a usar:

Curvas de nivel

El parámetro linewidths controla el ancho de los contornos, y linestyles el estilo: solid, dashed, dashdot o dotted:

Curvas de nivel