create contour plot in matplotlib

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.

create contour plot in matplotlib

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.

📚 Data Science Programs By Skill Level

Introductory

Intermediate ⭐⭐⭐

Advanced ⭐⭐⭐⭐⭐

🔎 Find Data Science Programs 👨‍💻 111,889 already enrolled

Disclaimer: Data Science Parichay is reader supported. When you purchase a course through a link on this site, we may earn a small commission at no additional cost to you. Earned commissions help support this website and its team of writers.

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:

the resulting contour plot

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:

contour plot with dashed lines of black color

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:

contour plot with custom levels

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:

the resulting filled contour plot

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:

filled contour plot with custom color map

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:

filled contour plot with a color bar

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

You might also be interested in –


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


Author

  • Chaitanya Betha

    I'm an undergrad student at IIT Madras interested in exploring new technologies. I have worked on various projects related to Data science, Machine learning & Neural Networks, including image classification using Convolutional Neural Networks, Stock prediction using Recurrent Neural Networks, and many more machine learning model training. I write blog articles in which I would try to provide a complete guide on a particular topic and try to cover as many different examples as possible with all the edge cases to understand the topic better and have a complete glance over the topic.

Scroll to Top