In this tutorial, we’ll try to understand how to create a contour plot in matplotlib.

A contour plot is a type of plot that allows us to visualize three-dimensional data in two dimensions by using contours. Contours are concentric lines that represent a magnitude.

To create a contour plot in matplotib you can use the following methods available in the `matplotlib.pyplot`

module –

- The
`contour`

method – used to create contour plots (that are not filled). - The
`contourf`

method – used to create filled contour plots.

Let’s now look at both the above methods in detail.

## Method 1 – Using the `matplotlib.pyplot.contour()`

method

This method creates contour plots.

**Basic Syntax:**

matplotlib.pyplot.contour(*args, data=None, **kwargs)

**Parameters:**

**X, Y**: The coordinates of the values in Z. Note that X and Y both must both be 2-D with the same shape as Z (e.g. created via numpy.meshgrid).**Z**: The height values over which the contour is drawn.**levels**: Determines the number and positions of the contour lines/regions.

For more details about the parameters, refer this.

Now let us understand the above method using some worked out examples.

### Example 1 – Draw a simple contour plot

Let’s use the `matplotlib.pyplot.contour()`

function to create a simple contour plot.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contour(X,Y,Z)

Output:

In the above example, we –

- Import the required modules.
- Generate the x and y values using the
`numpy.linspace`

method (refer this). - Create the meshgrid from the generated x and y values in step 2 using
`numpy.meshgrid`

(refer this). - Generate the respective Z values using the equation
`z = sin(x^2)+cos(y^2)`

. - Plot the X, Y, and Z values on a contour plot.

### Example 2 – Simple contour plot with customizations

You can also customize the contour plot with additional keyword arguments to the `matplotlib.pyplot.contour()`

function. For example, let’s plot the above plot again but this time with black colored contours and having a linestyle of “dashdot”.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contour(X,Y,Z,colors = 'black', linestyles='dashdot')

Output:

Now, the contour plot is formatted according to our customizations.

### Example 3 – Simple contour plot with specifying levels

You can also choose the number of contour lines to use with the `levels`

parameter. For example, if you pass `n`

as an integer to the `levels`

parameter, the contours will have `n`

intervals.

Let’s look at an example.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contour(X,Y,Z, levels=10, cmap='Blues')

Output:

In this example, we set the `levels`

to `10`

and use the `Blues`

cmap for the contour lines.

## Method 2 – Using the `matplotlib.pyplot.contourf()`

method

If you want to create filled contour plots in matplotlib, use the `matpltolib.pyplot.contourf()`

function. The parameters of this function are similar to the `matplotlib.pyplot.contour()`

function.

**Basic Syntax:**

matplotlib.pyplot.contourf(*args, data=None, **kwargs)

**Parameters:**

**X, Y**: The coordinates of the values in Z.**Z**: The height values over which the contour is drawn.**levels**: Determines the number and positions of the contour lines/regions.

For more details about the parameters, refer this.

Now let us understand this method with the help of some worked out examples.

### Example 1 – Simple filled contour plot

Let’s plot a simple filled contour plot.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contourf(X,Y,Z)

Output:

In the above example, we –

- Import the required modules.
- Generate the x and y values using the
`numpy.linspace`

method (refer this). - Create the meshgrid from the generated x and y values in step 2 using
`numpy.meshgrid`

(refer this). - Generate the respective Z values using the equation
`z = sin(x^2)+cos(y^2)`

. - Plot the X, Y, and Z values on a filled contour plot.

### Example 2 – Simple contour plot with customizations

Similar to the `contourf()`

function, you can custom format the filled contour plots with the `contourf()`

function using additional arguments.

For example, let’s plot the above graph again but this time using a red color map.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contourf(X,Y,Z,cmap='Reds')

Output:

### Example 3 – Add a color bar to contour plot

You can use the `matplotlib.pyplot.colorbar()`

function to add a color bar to a plot in matplotib. Let’s add a color bar to the plot above.

import numpy as np import matplotlib.pyplot as plt #generating x and y values x = np.linspace(0, 5, 50) y = np.linspace(0, 5, 40) #creating the meshgrid X, Y = np.meshgrid(x, y) Z = np.sin(X*2) + np.cos(Y*5) #plotting the contour plot plt.contourf(X,Y,Z,cmap='Reds') plt.colorbar()

Output:

The color bar shows the magnitude of the values represented by the different shades of the color.

You might also be interested in –

- Pandas – Plot Multiple Dataframes in Subplots
- How to Create Multiple Matplotlib Plots in One Figure?
- How To Make a Bubble Plot in Python with Matplotlib?
- Matplotlib – Create a Plot with two Y Axes and shared X Axis

**Subscribe to our newsletter for more informative guides and tutorials. ****We do not spam and you can opt out any time.**