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"):
Esta función acepta otros parámetros:
El parámetro levels determina el número de curvas a mostrar:
alpha especifica el grado de transparencia de las curvas, y cmap el mapa de color a usar:
El parámetro linewidths controla el ancho de los contornos, y linestyles el estilo: solid, dashed, dashdot o dotted: