# xarray.plot.contour

### xarray.plot.contour(darray, \*args, x=None, y=None, figsize=None, size=None, aspect=None, ax=None, row=None, col=None, col_wrap=None, xincrease=True, yincrease=True, add_colorbar=None, add_labels=True, vmin=None, vmax=None, cmap=None, center=None, robust=False, extend=None, levels=None, infer_intervals=None, colors=None, subplot_kws=None, cbar_ax=None, cbar_kwargs=None, xscale=None, yscale=None, xticks=None, yticks=None, xlim=None, ylim=None, norm=None, \*\*kwargs)[[source]](https://github.com/pydata/xarray/blob/main/xarray/plot/dataarray_plot.py#L1628-L1868)

Contour plot of 2D DataArray.

Wraps [`matplotlib.pyplot.contour()`](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contour.html#matplotlib.pyplot.contour).

* **Parameters:**
  * **darray** ([`DataArray`](xarray.DataArray.html.md#xarray.DataArray)) – Must be two-dimensional, unless creating faceted plots.
  * **x** (`Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Coordinate for *x* axis. If `None`, use `darray.dims[1]`.
  * **y** (`Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Coordinate for *y* axis. If `None`, use `darray.dims[0]`.
  * **figsize** (`Iterable` or [`float`](https://docs.python.org/3/builtins/functions.html#float) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – A tuple (width, height) of the figure in inches.
    Mutually exclusive with `size` and `ax`.
  * **size** ([scalar](../user-guide/terminology.html.md#term-scalar), *optional*) – If provided, create a new figure for the plot with the given size:
    *height* (in inches) of each plot. See also: `aspect`.
  * **aspect** (`"auto"`, `"equal"`, [scalar](../user-guide/terminology.html.md#term-scalar) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Aspect ratio of plot, so that `aspect * size` gives the *width* in
    inches. Only used if a `size` is provided.
  * **ax** ([`matplotlib axes object`](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes), *optional*) – Axes on which to plot. By default, use the current axes.
    Mutually exclusive with `size` and `figsize`.
  * **row** (`Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – If passed, make row faceted plots on this dimension name.
  * **col** (`Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – If passed, make column faceted plots on this dimension name.
  * **col_wrap** ([`int`](https://docs.python.org/3/builtins/functions.html#int), [`None`](https://docs.python.org/3/builtins/constants.html#None) or `"auto"`, *optional*) – “Wrap” the grid for the column variable after this number of columns,
    adding rows if `col_wrap` is less than the number of facets.
    If “auto” align the grid to the figsize or keep it as square as possible.
  * **xincrease** ([`None`](https://docs.python.org/3/builtins/constants.html#None), [`True`](https://docs.python.org/3/builtins/constants.html#True), or [`False`](https://docs.python.org/3/builtins/constants.html#False), *optional*) – Should the values on the *x* axis be increasing from left to right?
    If `None`, use the default for the Matplotlib function.
  * **yincrease** ([`None`](https://docs.python.org/3/builtins/constants.html#None), [`True`](https://docs.python.org/3/builtins/constants.html#True), or [`False`](https://docs.python.org/3/builtins/constants.html#False), *optional*) – Should the values on the *y* axis be increasing from top to bottom?
    If `None`, use the default for the Matplotlib function.
  * **add_colorbar** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Add colorbar to axes.
  * **add_labels** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Use xarray metadata to label axes.
  * **vmin** ([`float`](https://docs.python.org/3/builtins/functions.html#float) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Lower value to anchor the colormap, otherwise it is inferred from the
    data and other keyword arguments. When a diverging dataset is inferred,
    setting vmin or vmax will fix the other by symmetry around
    `center`. Setting both values prevents use of a diverging colormap.
    If discrete levels are provided as an explicit list, both of these
    values are ignored.
  * **vmax** ([`float`](https://docs.python.org/3/builtins/functions.html#float) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Upper value to anchor the colormap, otherwise it is inferred from the
    data and other keyword arguments. When a diverging dataset is inferred,
    setting vmin or vmax will fix the other by symmetry around
    `center`. Setting both values prevents use of a diverging colormap.
    If discrete levels are provided as an explicit list, both of these
    values are ignored.
  * **cmap** ([matplotlib colormap name](https://matplotlib.org/stable/gallery/color/colormap_reference.html) or [`colormap`](https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.Colormap.html#matplotlib.colors.Colormap), *optional*) – The mapping from data values to color space. If not provided, this
    will be either be `'viridis'` (if the function infers a sequential
    dataset) or `'RdBu_r'` (if the function infers a diverging dataset).
    See [Choosing Colormaps in Matplotlib](https://matplotlib.org/stable/users/explain/colors/colormaps.html)
    for more information.
    If *seaborn* is installed, `cmap` may also be a
    [seaborn color palette](https://seaborn.pydata.org/tutorial/color_palettes.html).
    Note: if `cmap` is a seaborn color palette and the plot type
    is not `'contour'` or `'contourf'`, `levels` must also be specified.
  * **center** ([`float`](https://docs.python.org/3/builtins/functions.html#float) or [`False`](https://docs.python.org/3/builtins/constants.html#False), *optional*) – The value at which to center the colormap. Passing this value implies
    use of a diverging colormap. Setting it to `False` prevents use of a
    diverging colormap.
  * **robust** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – If `True` and `vmin` or `vmax` are absent, the colormap range is
    computed with 2nd and 98th percentiles instead of the extreme values.
  * **extend** (`{'neither', 'both', 'min', 'max'}`, *optional*) – How to draw arrows extending the colorbar beyond its limits. If not
    provided, `extend` is inferred from `vmin`, `vmax` and the data limits.
  * **levels** ([`int`](https://docs.python.org/3/builtins/functions.html#int) or [array-like](https://numpy.org/doc/stable/glossary.html#term-array_like), *optional*) – Split the colormap (`cmap`) into discrete color intervals. If an integer
    is provided, “nice” levels are chosen based on the data range: this can
    imply that the final number of levels is not exactly the expected one.
    Setting `vmin` and/or `vmax` with `levels=N` is equivalent to
    setting `levels=np.linspace(vmin, vmax, N)`.
  * **infer_intervals** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Only applies to pcolormesh. If `True`, the coordinate intervals are
    passed to pcolormesh. If `False`, the original coordinates are used
    (this can be useful for certain map projections). The default is to
    always infer intervals, unless the mesh is irregular and plotted on
    a map projection.
  * **colors** ([`str`](https://docs.python.org/3/builtins/stdtypes.html#str) or [array-like](https://numpy.org/doc/stable/glossary.html#term-array_like) of [`color-like`](https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.is_color_like.html#matplotlib.colors.is_color_like), *optional*) – A single color or a sequence of colors. If the plot type is not `'contour'`
    or `'contourf'`, the `levels` argument is required.
  * **subplot_kws** ([`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict), *optional*) – Dictionary of keyword arguments for Matplotlib subplots. Only used
    for 2D and faceted plots.
    (see [`matplotlib.figure.Figure.add_subplot()`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.add_subplot.html#matplotlib.figure.Figure.add_subplot)).
  * **cbar_ax** ([`matplotlib axes object`](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes), *optional*) – Axes in which to draw the colorbar.
  * **cbar_kwargs** ([`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict), *optional*) – Dictionary of keyword arguments to pass to the colorbar
    (see [`matplotlib.figure.Figure.colorbar()`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.colorbar.html#matplotlib.figure.Figure.colorbar)).
  * **xscale** (`{'linear', 'symlog', 'log', 'logit'}` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specifies scaling for the x-axes.
  * **yscale** (`{'linear', 'symlog', 'log', 'logit'}` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specifies scaling for the y-axes.
  * **xticks** (`ArrayLike` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specify tick locations for x-axes.
  * **yticks** (`ArrayLike` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specify tick locations for y-axes.
  * **xlim** (`tuple[float`, `float]` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specify x-axes limits.
  * **ylim** (`tuple[float`, `float]` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specify y-axes limits.
  * **norm** ([`matplotlib.colors.Normalize`](https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.Normalize.html#matplotlib.colors.Normalize), *optional*) – If `norm` has `vmin` or `vmax` specified, the corresponding
    kwarg must be `None`.
  * **\*\*kwargs** (**optional**) – Additional keyword arguments to wrapped Matplotlib function.
* **Returns:**
  `artist` – The same type of primitive artist that the wrapped Matplotlib
  function returns.
