Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 90b8ff2

Browse filesBrowse files
jklymakMeeseeksDev[bot]
authored andcommitted
Backport PR #11344: Improve docstring of Axes.pcolormesh
1 parent c692677 commit 90b8ff2
Copy full SHA for 90b8ff2

File tree

Expand file treeCollapse file tree

1 file changed

+137
-53
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+137
-53
lines changed

‎lib/matplotlib/axes/_axes.py

Copy file name to clipboardExpand all lines: lib/matplotlib/axes/_axes.py
+137-53Lines changed: 137 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5654,18 +5654,21 @@ def pcolor(self, *args, **kwargs):
56545654
the respective min/max values of *C* in case of the default linear
56555655
scaling).
56565656
5657-
edgecolors : {'none', None, color, color sequence}, optional
5657+
edgecolors : {'none', None, 'face', color, color sequence}, optional
56585658
The color of the edges. Defaults to 'none'. Possible values:
56595659
56605660
- 'none' or '': No edge.
56615661
- *None*: :rc:`patch.edgecolor` will be used. Note that currently
56625662
:rc:`patch.force_edgecolor` has to be True for this to work.
5663+
- 'face': Use the adjacent face color.
56635664
- An mpl color or sequence of colors will set the edge color.
56645665
56655666
The singular form *edgecolor* works as an alias.
56665667
56675668
alpha : scalar, optional, default: None
5668-
The alpha blending value, between 0 (transparent) and 1 (opaque).
5669+
The alpha blending value of the face color, between 0 (transparent)
5670+
and 1 (opaque). Note: The edgecolor is currently not affected by
5671+
this.
56695672
56705673
snap : bool, optional, default: False
56715674
Whether to snap the mesh to pixel boundaries.
@@ -5846,79 +5849,160 @@ def pcolor(self, *args, **kwargs):
58465849
@docstring.dedent_interpd
58475850
def pcolormesh(self, *args, **kwargs):
58485851
"""
5849-
Plot a quadrilateral mesh.
5852+
Create a pseudocolor plot with a non-regular rectangular grid.
58505853
5851-
Call signatures::
5854+
Call signature::
58525855
5853-
pcolormesh(C)
5854-
pcolormesh(X, Y, C)
5855-
pcolormesh(C, **kwargs)
5856+
pcolor([X, Y,] C, **kwargs)
58565857
5857-
Create a pseudocolor plot of a 2-D array.
5858+
*X* and *Y* can be used to specify the corners of the quadrilaterals.
58585859
5859-
pcolormesh is similar to :func:`~matplotlib.pyplot.pcolor`,
5860-
but uses a different mechanism and returns a different
5861-
object; pcolor returns a
5862-
:class:`~matplotlib.collections.PolyCollection` but pcolormesh
5863-
returns a
5864-
:class:`~matplotlib.collections.QuadMesh`. It is much faster,
5865-
so it is almost always preferred for large arrays.
5860+
.. note::
58665861
5867-
*C* may be a masked array, but *X* and *Y* may not. Masked
5868-
array support is implemented via *cmap* and *norm*; in
5869-
contrast, :func:`~matplotlib.pyplot.pcolor` simply does not
5870-
draw quadrilaterals with masked colors or vertices.
5862+
``pcolormesh()`` is similar to :func:`~Axes.pcolor`. It's much
5863+
faster and preferred in most cases. For a detailed discussion on
5864+
the differences see
5865+
:ref:`Differences between pcolor() and pcolormesh()
5866+
<differences-pcolor-pcolormesh>`.
58715867
5872-
Other Parameters
5873-
----------------
5874-
cmap : Colormap, optional
5875-
A :class:`matplotlib.colors.Colormap` instance. If ``None``, use
5876-
rc settings.
5868+
Parameters
5869+
----------
5870+
C : array_like
5871+
A scalar 2-D array. The values will be color-mapped.
58775872
5878-
norm : Normalize, optional
5879-
A :class:`matplotlib.colors.Normalize` instance is used to
5880-
scale luminance data to 0,1. If ``None``, defaults to
5881-
:func:`normalize`.
5873+
X, Y : array_like, optional
5874+
The coordinates of the quadrilateral corners. The quadrilateral
5875+
for ``C[i,j]`` has corners at::
58825876
5883-
vmin, vmax : scalar, optional
5884-
*vmin* and *vmax* are used in conjunction with *norm* to
5885-
normalize luminance data. If either is ``None``, it is autoscaled
5886-
to the respective min or max of the color array *C*.
5887-
If not ``None``, *vmin* or *vmax* passed in here override any
5888-
pre-existing values supplied in the *norm* instance.
5877+
(X[i+1, j], Y[i+1, j]) (X[i+1, j+1], Y[i+1, j+1])
5878+
+--------+
5879+
| C[i,j] |
5880+
+--------+
5881+
(X[i, j], Y[i, j]) (X[i, j+1], Y[i, j+1]),
5882+
5883+
Note that the column index corresponds to the
5884+
x-coordinate, and the row index corresponds to y. For
5885+
details, see the :ref:`Notes <axes-pcolormesh-grid-orientation>`
5886+
section below.
5887+
5888+
The dimensions of *X* and *Y* should be one greater than those of
5889+
*C*. Alternatively, *X*, *Y* and *C* may have equal dimensions, in
5890+
which case the last row and column of *C* will be ignored.
5891+
5892+
If *X* and/or *Y* are 1-D arrays or column vectors they will be
5893+
expanded as needed into the appropriate 2-D arrays, making a
5894+
rectangular grid.
5895+
5896+
cmap : str or `~matplotlib.colors.Colormap`, optional
5897+
A Colormap instance or registered colormap name. The colormap
5898+
maps the *C* values to colors. Defaults to :rc:`image.cmap`.
5899+
5900+
norm : `~matplotlib.colors.Normalize`, optional
5901+
The Normalize instance scales the data values to the canonical
5902+
colormap range [0, 1] for mapping to colors. By default, the data
5903+
range is mapped to the colorbar range using linear scaling.
5904+
5905+
vmin, vmax : scalar, optional, default: None
5906+
The colorbar range. If *None*, suitable min/max values are
5907+
automatically chosen by the `~.Normalize` instance (defaults to
5908+
the respective min/max values of *C* in case of the default linear
5909+
scaling).
58895910
5890-
shading : [ 'flat' | 'gouraud' ], optional
5891-
'flat' indicates a solid color for each quad. When
5892-
'gouraud', each quad will be Gouraud shaded. When gouraud
5893-
shading, *edgecolors* is ignored.
5911+
edgecolors : {'none', None, 'face', color, color sequence}, optional
5912+
The color of the edges. Defaults to 'none'. Possible values:
58945913
5895-
edgecolors : string, color, color sequence, optional
5896-
- If ``None``, the rc setting is used by default.
5897-
- If ``'None'``, edges will not be visible.
5898-
- If ``'face'``, edges will have the same color as the faces.
5914+
- 'none' or '': No edge.
5915+
- *None*: :rc:`patch.edgecolor` will be used. Note that currently
5916+
:rc:`patch.force_edgecolor` has to be True for this to work.
5917+
- 'face': Use the adjacent face color.
5918+
- An mpl color or sequence of colors will set the edge color.
58995919
5900-
An mpl color or sequence of colors will also set the edge color.
5920+
The singular form *edgecolor* works as an alias.
59015921
5902-
alpha : scalar, optional
5903-
Alpha blending value. Must be between 0 and 1.
5922+
alpha : scalar, optional, default: None
5923+
The alpha blending value, between 0 (transparent) and 1 (opaque).
5924+
5925+
shading : {'flat', 'gouraud'}, optional
5926+
The fill style, Possible values:
5927+
5928+
- 'flat': A solid color is used for each quad. The color of the
5929+
quad (i, j), (i+1, j), (i, j+1), (i+1, j+1) is given by
5930+
``C[i,j]``.
5931+
- 'gouraud': Each quad will be Gouraud shaded: The color of the
5932+
corners (i', j') are given by ``C[i',j']``. The color values of
5933+
the area in between is interpolated from the corner values.
5934+
When Gouraud shading is used, *edgecolors* is ignored.
5935+
5936+
snap : bool, optional, default: False
5937+
Whether to snap the mesh to pixel boundaries.
59045938
59055939
Returns
59065940
-------
5907-
matplotlib.collections.QuadMesh
5941+
mesh : `matplotlib.collections.QuadMesh`
5942+
5943+
Other Parameters
5944+
----------------
5945+
**kwargs
5946+
Additionally, the following arguments are allowed. They are passed
5947+
along to the `~matplotlib.collections.QuadMesh` constructor:
5948+
5949+
%(QuadMesh)s
5950+
59085951
59095952
See Also
59105953
--------
5911-
matplotlib.pyplot.pcolor :
5912-
For an explanation of the grid orientation
5913-
(:ref:`Grid Orientation <axes-pcolor-grid-orientation>`)
5914-
and the expansion of 1-D *X* and/or *Y* to 2-D arrays.
5954+
pcolor : An alternative implementation with slightly different
5955+
features. For a detailed discussion on the differences see
5956+
:ref:`Differences between pcolor() and pcolormesh()
5957+
<differences-pcolor-pcolormesh>`.
5958+
imshow : If *X* and *Y* are each equidistant, `~.Axes.imshow` can be a
5959+
faster alternative.
59155960
59165961
Notes
59175962
-----
5918-
kwargs can be used to control the
5919-
:class:`matplotlib.collections.QuadMesh` properties:
59205963
5921-
%(QuadMesh)s
5964+
**Masked arrays**
5965+
5966+
*C* may be a masked array. If ``C[i, j]`` is masked, the corresponding
5967+
quadrilateral will be transparent. Masking of *X* and *Y* is not
5968+
supported. Use `~.Axes.pcolor` if you need this functionality.
5969+
5970+
.. _axes-pcolormesh-grid-orientation:
5971+
5972+
**Grid orientation**
5973+
5974+
The grid orientation follows the standard matrix convention: An array
5975+
*C* with shape (nrows, ncolumns) is plotted with the column number as
5976+
*X* and the row number as *Y*.
5977+
5978+
.. _differences-pcolor-pcolormesh:
5979+
5980+
**Differences between pcolor() and pcolormesh()**
5981+
5982+
Both methods are used to create a pseudocolor plot of a 2-D array
5983+
using quadrilaterals.
5984+
5985+
The main difference lies in the created object and internal data
5986+
handling:
5987+
While `~.Axes.pcolor` returns a `.PolyCollection`, `~.Axes.pcolormesh`
5988+
returns a `.QuadMesh`. The latter is more specialized for the given
5989+
purpose and thus is faster. It should almost always be preferred.
5990+
5991+
There is also a slight difference in the handling of masked arrays.
5992+
Both `~.Axes.pcolor` and `~.Axes.pcolormesh` support masked arrays
5993+
for *C*. However, only `~.Axes.pcolor` supports masked arrays for *X*
5994+
and *Y*. The reason lies in the internal handling of the masked values.
5995+
`~.Axes.pcolor` leaves out the respective polygons from the
5996+
PolyCollection. `~.Axes.pcolormesh` sets the facecolor of the masked
5997+
elements to transparent. You can see the difference when using
5998+
edgecolors. While all edges are drawn irrespective of masking in a
5999+
QuadMesh, the edge between two adjacent masked quadrilaterals in
6000+
`~.Axes.pcolor` is not drawn as the corresponding polygons do not
6001+
exist in the PolyCollection.
6002+
6003+
Another difference is the support of Gouraud shading in
6004+
`~.Axes.pcolormesh`, which is not available with `~.Axes.pcolor`.
6005+
59226006
"""
59236007
if not self._hold:
59246008
self.cla()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.