Skip to content

Commit 6c8fb03

Browse files
committed
More why proplot updates
1 parent ffb90f7 commit 6c8fb03

File tree

1 file changed

+42
-34
lines changed

1 file changed

+42
-34
lines changed

docs/why.rst

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -395,66 +395,74 @@ designed to make your life easier.
395395
The following features are relevant for "1D" plotting commands like
396396
`~matplotlib.axes.Axes.plot` and `~matplotlib.axes.Axes.scatter`:
397397

398-
* The `cycle` :ref:`keyword argument <ug_apply_cycle>` changes the property cycle
399-
on-the-fly. It is interpreted by the `~proplot.constructor.Cycle`
400-
:ref:`constructor function <why_constructor>`, allowing for flexible specification.
401-
* The `colorbar` and `legend` keywords draw
402-
:ref:`colorbars and legends on-the-fly <ug_cbars_axes>`. Note that colorbars can
403-
now be easily drawn from :ref:`lists of artists <ug_cbars>`.
398+
* The `cycle` keyword is interpreted by the `~proplot.constructor.Cycle`
399+
:ref:`constructor function <why_constructor>` and applies
400+
:ref:`property cyclers <ug_apply_cycle>` on-the-fly. This permits succinct
401+
and flexible property cycler application.
402+
* The `legend` and `colorbar` keywords draw :ref:`on-the-fly legends and colorbars
403+
<ug_cbars_axes>` using the result of the plotting command. Note that colorbars can
404+
now be drawn from :ref:`lists of artists <ug_cbars>` (e.g., from a list of lines).
404405
* The `~matplotlib.axes.Axes.bar` and `~matplotlib.axes.Axes.barh` commands accept
405-
2D arrays and can :ref:`stack or group <ug_bar>` successive columns.
406-
The `~matplotlib.axes.Axes.fill_between` and `~matplotlib.axes.Axes.fill_betweenx`
407-
commands (also accessible via the shorthands `~proplot.axes.Axes.area` and
408-
`~proplot.axes.Axes.areax`) also accept 2D arrays and can
406+
2D arrays and can :ref:`stack or group <ug_bar>` successive columns. Likewise,
407+
the `~matplotlib.axes.Axes.fill_between` and `~matplotlib.axes.Axes.fill_betweenx`
408+
commands (accessible via the new shorthands `~proplot.axes.Axes.area` and
409+
`~proplot.axes.Axes.areax`) accept 2D arrays and can
409410
:ref:`stack or overlay <ug_bar>` successive columns.
410411
* The `~matplotlib.axes.Axes.bar`, `~matplotlib.axes.Axes.barh`,
411412
`~matplotlib.axes.Axes.vlines`, `~matplotlib.axes.Axes.hlines`,
412-
`~proplot.axes.Axes.fill_between`, and `~proplot.axes.Axes.fill_betweenx`
413+
`~matplotlib.axes.Axes.fill_between`, and `~matplotlib.axes.Axes.fill_betweenx`
413414
commands accept a `negpos` keyword argument that assigns different
414415
colors to "negative" and "positive" regions.
415-
* The `~matplotlib.axes.Axes.plot`, `~matplotlib.axes.Axes.scatter`, and
416-
`~matplotlib.axes.Axes.bar` commands can draw :ref:`on-the-fly error bars and
417-
"shading" <ug_errorbars>` using a variety of keyword arguments. This is often
416+
* The `~matplotlib.axes.Axes.plot`, `~proplot.axes.Axes.plotx`,
417+
`~matplotlib.axes.Axes.scatter`, `~proplot.axes.Axes.scatterx`,
418+
`~matplotlib.axes.Axes.bar`, and `~matplotlib.axes.Axes.barh` commands can draw
419+
:ref:`on-the-fly error bars and "shading" <ug_errorbars>` using a variety of keyword
420+
arguments. This is often
418421
more convenient than working with the `~matplotlib.axes.Axes.errorbar` command.
419422
* The new `~proplot.axes.Axes.plotx` and `~proplot.axes.Axes.scatterx` commands
420423
are just like `~proplot.axes.Axes.plot` and `~proplot.axes.Axes.scatter`, but
421424
single positional arguments are interpreted as *y* coordinates and multiple
422425
positional arguments are interpreted as (*y*, *x*) pairs.
423-
* The new `~proplot.axes.Axes.parametric` method can draw clean-looking
424-
:ref:`parametric lines <ug_parametric>` with the parametric coordinate
425-
denoted by colormap colors rather than text annotations.
426+
* The new `~proplot.axes.Axes.parametric` command draws clean-looking
427+
:ref:`parametric lines <ug_parametric>` by encoding the parametric coordinate
428+
with colormap colors rather than using text annotations.
426429

427430
The following features are relevant for "2D" plotting commands like
428431
`~matplotlib.axes.Axes.pcolor` and `~matplotlib.axes.Axes.contour`:
429432

430433
* The `cmap` and `norm` :ref:`keyword arguments <ug_apply_cmap>` are interpreted
431434
by the `~proplot.constructor.Colormap` and `~proplot.constructor.Norm`
432-
:ref:`constructor functions <why_constructor>`, allowing for flexible specification.
433-
* The `colorbar` keyword draw :ref:`on-the-fly colorbars <ug_cbars_axes>`.
434-
Note that "inset" colorbar locations can also be used, analogous to
435-
"inset" legends.
435+
:ref:`constructor functions <why_constructor>`. This permits succinct
436+
and flexible colormap and normalizer application.
437+
* The `colorbar` keyword draws on-the-fly :ref:`colorbars <ug_cbars_axes>`
438+
using the result of the plotting command. Note that "inset" colorbars can also
439+
be drawn, analogous to "inset" legends.
436440
* The `~matplotlib.axes.Axes.contour`, `~matplotlib.axes.Axes.contourf`,
437441
`~matplotlib.axes.Axes.pcolormesh`, and `~matplotlib.axes.Axes.pcolor` commands
438442
all accept a `labels` keyword. This draws :ref:`contour and grid box labels
439443
<ug_labels>` on-the-fly. Labels are automatically colored black or white
440444
according to the luminance of the underlying filled contour or grid box color.
445+
* The default `vmin` and `vmax` used to normalize colormaps now exclude data outside
446+
the *x* axis bounds `xlim` and *y* axis bounds `ylim` if they were explicitly set.
447+
This can be disabled by setting :rcraw:`image.inbounds` to ``False`` or passing
448+
``inbounds=False`` to plots.
441449
* The `~proplot.colors.DiscreteNorm` normalizer is paired with most colormaps by
442450
default and can easily divide colormaps into distinct levels, similar to
443451
`~matplotlib.axes.Axes.contourf`. This can be disabled by setting
444452
:rcraw:`image.discrete` to ``False`` or passing ``discrete=False`` to plots.
445-
* The `~proplot.colors.DivergingNorm` normalizer is perfect for data with a
453+
* The new `~proplot.colors.DivergingNorm` normalizer is perfect for data with a
446454
:ref:`natural midpoint <ug_norm>` and offers both "fair" and "unfair" scaling.
447-
The `~proplot.colors.LinearSegmentedNorm` normalizer can generate
448-
uneven color gradations useful for :ref:`unusually distributed <ug_norm>` data.
455+
The new `~proplot.colors.LinearSegmentedNorm` normalizer can generate
456+
uneven color gradations useful for :ref:`unusual data distributions <ug_norm>`.
449457
* The new `~proplot.axes.Axes.heatmap` command invokes
450-
`~matplotlib.axes.Axes.pcolormesh` then by default applies an :ref:`equal axes apect ratio
458+
`~matplotlib.axes.Axes.pcolormesh` then applies an :ref:`equal axes apect ratio
451459
<https://matplotlib.org/stable/gallery/subplots_axes_and_figures/axis_equal_demo.html>`,
452460
adds ticks to the center of each gridbox, and disables minor ticks and gridlines.
453461
This can be convenient for things like covariance matrices.
454-
* ProPlot transforms coordinate edges into "centers" when passed to commands
455-
like `~matplotlib.axes.Axes.contour`, and transforms coordinate centers to "edges"
456-
when passed to commands like `~matplotlib.axes.Axes.pcolor`. In matplotlib, `contour`
457-
requires centers, and `pcolor` truncates the data when it receives centers.
462+
* ProPlot transforms coordinate centers to "edges" when passed to commands like
463+
`~matplotlib.axes.Axes.pcolor`, and transforms coordinate edges to "centers" when
464+
passed to commands like `~matplotlib.axes.Axes.contour`. In matplotlib, `pcolor`
465+
truncates the data when it receives centers.
458466
* ProPlot fixes an irritating issue where saved vector graphics appear to have
459467
thin white lines between `filled contours
460468
<https://stackoverflow.com/q/8263769/4970632>`__, `pcolor patches
@@ -552,10 +560,10 @@ ProPlot reproduces many of the `xarray.DataArray.plot`,
552560
`pandas.DataFrame.plot`, and `pandas.Series.plot` features on the
553561
`~proplot.axes.Axes` plotting methods themselves. Passing a
554562
`~xarray.DataArray`, `~pandas.DataFrame`, or `~pandas.Series` through any
555-
plotting method automatically updates the axis tick labels, axis labels,
556-
subplot titles, and colorbar and legend labels from the metadata. This
557-
feature can be disabled by setting :rcraw:`autoformat` to ``False`` or
558-
passing ``autoformat=False`` to any plotting command.
563+
plotting command updates the axis tick labels, axis labels, subplot title, and
564+
colorbar and legend labels from the metadata. This feature can be disabled
565+
by setting :rcraw:`autoformat` to ``False`` or passing ``autoformat=False``
566+
to any plotting command.
559567

560568
As :ref:`described above <why_plotting>`, ProPlot also implements features
561569
that were originally only available from the `xarray.DataArray.plot`,
@@ -745,7 +753,7 @@ the :ref:`user guide <ug_proplotrc>` for details.
745753

746754
ProPlot also automatically loads colormaps, color cycles, colors, and font files
747755
saved in the ``~/.proplot/cmaps``, ``~/.proplot/cycles``, ``~/.proplot/colors``,
748-
and ``~/.proplot/fonts``, folders in your home directory. You can save colormaps and
756+
and ``~/.proplot/fonts`` folders in your home directory. You can save colormaps and
749757
color cycles to these folders simply by passing ``save=True`` to
750758
`~proplot.constructor.Colormap` and `~proplot.constructor.Cycle`. To *manually*
751759
load from these folders, e.g. if you have added files to these folders but you do

0 commit comments

Comments
 (0)