Algorithm name#

There are four possible algorithms to use for contouring which are identified by the name keyword argument passed to contour_generator(). For example:

>>> cont_gen = contour_generator(name="serial", ...)

The four names are mpl2005, mpl2014, serial and threaded. The default is serial, which you should use unless you have a good reason not to.

There are four optional features that the algorithms may support, which are corner_mask, quad_as_tri, threads and z_interp. This table indicates which algorithms supports which feature:

mpl2005

mpl2014

serial

threaded

supports_corner_mask

Yes

Yes

Yes

supports_quad_as_tri

Yes

Yes

supports_threads

Yes

supports_z_interp

Yes

Yes

Also, some algorithms only support a subset of the possible LineType and FillType enums; these are discussed in Line type and Fill type respectively.

mpl2005#

The original 2005 Matplotlib algorithm, modified to conform to the ContourPy API and so that it can be wrapped using pybind11. Does not support any of corner_mask, quad_as_tri, threads or z_interp.

Warning

This algorithm is in contourpy for historic comparison. No new features or bug fixes will be added to it, except for security-related bug fixes.

mpl2014#

The 2014 Matplotlib algorithm, a replacement of the original 2005 algorithm that added corner_mask and made the code easier to understand. Modified to conform to the ContourPy API and so that it can be wrapped using pybind11. Does not support quad_as_tri, threads or z_interp.

Warning

This algorithm is in contourpy for historic comparison. No new features or bug fixes will be added to it, except for security-related bug fixes.

serial#

The default algorithm for ContourPy, released in 2022, which supports all of the optional features except for threads. It combines lessons learnt from both of the previous algorithms as well as adding new features and performance improvements.

threaded#

This is a multithreaded version of the serial algorithm, and requires the domain to be divided into chunks. It shares the majority of its code with serial except:

  1. High-level processing of chunks occurs in parallel using a thread pool.

  2. Creation of NumPy arrays is limited to a single thread at a time.