matplotlib.pyplot.clabel() in Python

Contour plots or Level plots are a way to display a three-dimensional surface on a two-dimensional plane. It graphs as contours as one output variable z and two predictor variables x and y on the y-axis. Often such contours are also known as z-slices.
The clabel() method in mathplotlib.pyplot is used add labels to line contours in instances of the classes to support contour plotting.
 

Syntax:  matplotlib.pyplot.clabel(CS, levels=None, **kwargs)

Parameters: 

  • CS: The ContourSet to label.
  • levels: A list of level values, that should be labeled. The list must be a subset of CS.levels. If not given,all levels are labeled. It is an optional argument(default value is None).
  • fontsize: Size in points or relative size e.g., ‘smaller’, ‘x-large’. See Text.set_size for accepted string values.
  • colors: The label colors- 
    1. If None, the color of each label matches the color of the corresponding contour.
    2. If one string color, e.g., colors = ‘r’ or colors = ‘red’, all labels will be plotted in this color.
    3. If a tuple of matplotlib color args (string, float, rgb, etc), different labels will be plotted in different colors in the order specified.

Below are some programs to illustrate the use of matplotlib.pyplot.clabel() :

 
Example 1:  Create a simple contour plot with labels using default colors. The inline argument to clabel will control whether the labels are draw over the line segments of the contour, removing the lines beneath the label. 



Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the required libraries
import numpy 
import matplotlib.pyplot 
  
# creating the graph
delta = 0.025
x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)
X, Y = numpy.meshgrid(x, y)
  
Z1 = numpy.exp(-X**2 - Y**2)
Z2 = numpy.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
  
# adding labels to the line contours
fig, ax = matplotlib.pyplot.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, inline=1, fontsize=10)
ax.set_title('Simplest default with labels')

chevron_right


Output: 

Example 2: Contour labels can be placed manually by providing a list of positions (in data coordinate). See ginput_manual_clabel.py for interactive placement. 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the required libraries
import numpy 
import matplotlib.pyplot 
  
# creating the graph
delta = 0.025
x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)
X, Y = numpy.meshgrid(x, y)
  
Z1 = numpy.exp(-X**2 - Y**2)
Z2 = numpy.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
  
# adding labels to the line contours
fig, ax = matplotlib.pyplot.subplots()
CS = ax.contour(X, Y, Z)
manual_locations = [(-1, -1.4), (-0.62, -0.7), 
                    (-2, 0.5), (1.7, 1.2), 
                    (2.0, 1.4), (2.4, 1.7)]
  
ax.clabel(CS, inline=1, fontsize=10, manual=manual_locations)
ax.set_title('labels at selected locations')

chevron_right


Output: 

Example 3:  You can force all the contours to be the same color. 



Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the required libraries
import numpy 
import matplotlib.pyplot 
  
# creating the graph
delta = 0.025
x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)
X, Y = numpy.meshgrid(x, y)
  
Z1 = numpy.exp(-X**2 - Y**2)
Z2 = numpy.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
  
# adding labels to the line contours
fig, ax = matplotlib.pyplot.subplots()
CS = ax.contour(X, Y, Z, 6,
                 colors='k',
                 )
  
ax.clabel(CS, fontsize=9, inline=1)
ax.set_title('Single color - negative contours dashed')

chevron_right


Output:

Example 4: You can set negative contours to be solid instead of dashed: 
 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the required libraries
import numpy 
import matplotlib.pyplot 
  
# creating the graph
delta = 0.025
x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)
X, Y = numpy.meshgrid(x, y)
  
Z1 = numpy.exp(-X**2 - Y**2)
Z2 = numpy.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
  
# adding labels to the line contours
matplotlib.rcParams['contour.negative_linestyle'] = 'solid'
fig, ax = matplotlib.pyplot.subplots()
CS = ax.contour(X, Y, Z, 6,
                 colors='k',
                 )
  
ax.clabel(CS, fontsize=9, inline=1)
ax.set_title('Single color - negative contours solid')

chevron_right


Output:

Example 5: You can manually specify the colors of the contour. 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the required libraries
import numpy 
import matplotlib.pyplot 
  
# creating the graph
delta = 0.025
x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)
X, Y = numpy.meshgrid(x, y)
  
Z1 = numpy.exp(-X**2 - Y**2)
Z2 = numpy.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
  
# adding labels to the line contours
fig, ax = matplotlib.pyplot.subplots()
CS = ax.contour(X, Y, Z, 6,
                 linewidths=np.arange(.5, 4, .5),
                 colors=('r', 'green', 'blue',
                         (1, 1, 0), '#afeeee', '0.5')
                 )
  
ax.clabel(CS, fontsize=9, inline=1)
ax.set_title('Crazy lines')

chevron_right


Output:


Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.




My Personal Notes arrow_drop_up

If you only do what you can do, you will never be more than what you are ~Shifu

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.