Contour plots also called level plots are a tool for doing multivariate analysis and visualizing 3-D plots in 2-D space. If we consider X and Y as our variables we want to plot then the response Z will be plotted as slices on the X-Y plane due to which contours are sometimes referred as Z-slices or iso-response.
Contour plots are widely used to visualize density, altitudes or heights of the mountain as well as in the meteorological department. Due to such wide usage matplotlib.pyplot provides a method contour to make it easy for us to draw contour plots.
matplotlib.pyplot.contour
The matplotlib.pyplot.contour() are usually useful when Z = f(X, Y) i.e Z changes as a function of input X and Y. A contourf() is also available which allows us to draw filled contours.
Syntax: matplotlib.pyplot.contour([X, Y, ] Z, [levels], **kwargs)
Parameters:
X, Y: 2-D numpy arrays with same shape as Z or 1-D arrays such that len(X)==M and len(Y)==N (where M and N are rows and columns of Z)
Z: The height values over which the contour is drawn. Shape is (M, N)
levels: Determines the number and positions of the contour lines / regions.Returns: QuadContourSet
Below examples illustrate the matplotlib.pyplot.contour() function in matplotlib.pyplot:
Example #1: Plotting of Contour using contour() which only plots contour lines.
# Implementation of matplotlib functionimport matplotlib.pyplot as pltimport numpy as np feature_x = np.arange(0, 50, 2)feature_y = np.arange(0, 50, 3) # Creating 2-D grid of features[X, Y] = np.meshgrid(feature_x, feature_y) fig, ax = plt.subplots(1, 1) Z = np.cos(X / 2) + np.sin(Y / 4) # plots contour linesax.contour(X, Y, Z) ax.set_title('Contour Plot')ax.set_xlabel('feature_x')ax.set_ylabel('feature_y') plt.show() |
Output:
Example #2: Plotting of contour using contourf() which plots filled contours.
# Implementation of matplotlib functionimport matplotlib.pyplot as pltimport numpy as np feature_x = np.linspace(-5.0, 3.0, 70)feature_y = np.linspace(-5.0, 3.0, 70) # Creating 2-D grid of features[X, Y] = np.meshgrid(feature_x, feature_y) fig, ax = plt.subplots(1, 1) Z = X ** 2 + Y ** 2 # plots filled contour plotax.contourf(X, Y, Z) ax.set_title('Filled Contour Plot')ax.set_xlabel('feature_x')ax.set_ylabel('feature_y') plt.show() |
Output:

