# How to Create a Contour Plot in Matplotlib

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 –

1. Import the required modules.
2. Generate the x and y values using the `numpy.linspace` method (refer this).
3. Create the meshgrid from the generated x and y values in step 2 using `numpy.meshgrid`
(refer this).
4. Generate the respective Z values using the equation `z = sin(x^2)+cos(y^2)`.
5. 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 –

1. Import the required modules.
2. Generate the x and y values using the `numpy.linspace` method (refer this).
3. Create the meshgrid from the generated x and y values in step 2 using `numpy.meshgrid`
(refer this).
4. Generate the respective Z values using the equation `z = sin(x^2)+cos(y^2)`.
5. 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 –

• 