Plot a function as a contour map
#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
X, Y = np.meshgrid(np.linspace(-4, 4, 512), np.linspace(-4, 4, 512))
Z = (1 - X/2 + X**4 + Y**3) * np.exp(-X**2 - Y**2) * (1 - X/3 - Y **4) * (3 - Y + X **2)
levels = np.linspace(np.min(Z), np.max(Z), 20)
fig, ax = plt.subplots()
ax.contour(X, Y, Z, levels=levels)
plt.show()