[Matplotlib-announce] [ANN] Matplotlib 3.6.0

Hi all,

We are pleased to announce the release of Matplotlib 3.6.0.

Pre-built wheels are available for most major platforms, and can be installed using `pip install matplotlib==3.6.0`. Wheels are now available for PyPy 3.8/3.9 and Python 3.11. Other packages mayalso be available already; please check with your preferred source.

We thank the 174 authors for the 894 pull requests that comprise the 3.6.0 release.

Highlights of this release include:

  * Figure and Axes creation / management
      o |subplots|, |subplot_mosaic| accept /height_ratios/ and
        /width_ratios/ arguments
      o Constrained layout is no longer considered experimental
      o New |layout_engine| module
      o Compressed layout added for fixed-aspect ratio Axes
      o Layout engines may now be removed
      o |Axes.inset_axes| flexibility
      o WebP is now a supported output format
      o Garbage collection is no longer run on figure close
  * Plotting methods
      o Striped lines (experimental)
      o Custom cap widths in box and whisker plots in |bxp| and |boxplot|
      o Easier labelling of bars in bar plot
      o New style format string for colorbar ticks
      o Linestyles for negative contours may be set individually
      o Improved quad contour calculations via ContourPy
      o |errorbar| supports /markerfacecoloralt/
      o |streamplot| can disable streamline breaks
      o New axis scale |asinh| (experimental)
      o |stairs(..., fill=True)| hides patch edge by setting linewidth
      o Fix the dash offset of the |Patch| class
      o |Rectangle| patch rotation point
  * Colors and colormaps
      o Color sequence registry
      o Colormap method for creating a different lookup table size
      o Setting norms with strings
  * Titles, ticks, and labels
      o |plt.xticks| and |plt.yticks| support /minor/ keyword argument
  * Legends
      o Legend can control alignment of title and handles
      o /ncol/ keyword argument to |legend| renamed to /ncols/
  * Markers
      o |marker| can now be set to the string "none"
      o Customization of |MarkerStyle| join and cap style
  * Fonts and Text
      o Font fallback
      o List of available font names
      o |math_to_image| now has a /color/ keyword argument
      o Active URL area rotates with link text
  * rcParams improvements
      o Allow setting figure label size and weight globally and
        separately from title
      o Mathtext parsing can be disabled globally
      o Double-quoted strings in matplotlibrc
  * 3D Axes improvements
      o Standardized views for primary plane viewing angles
      o Custom focal length for 3D camera
      o 3D plots gained a 3rd "roll" viewing angle
      o Equal aspect ratio for 3D plots
  * Interactive tool improvements
      o Rotation, aspect ratio correction and add/remove state
      o |MultiCursor| now supports Axes split over multiple figures
      o |PolygonSelector| bounding boxes
      o Setting |PolygonSelector| vertices
      o |SpanSelector| widget can now be snapped to specified values
      o More toolbar icons are styled for dark themes
  * Platform-specific changes
      o Wx backend uses standard toolbar
      o Improvements to macosx backend
          + Modifier keys handled more consistently
          + |savefig.directory| rcParam support
          + |figure.raise_window| rcParam support
          + Full-screen toggle support
          + Improved animation and blitting support
      o macOS application icon applied on Qt backend
      o New minimum macOS version
      o Windows on ARM support

For further details, please see the What's new in Matplotlib 3.6.0 page:
and the milestone on GitHub:

For packagers, this release contains some changes to dependencies:

  * Python 3.8 is now required.
  * NumPy 1.19 is now required.
  * The ContourPy package is now required for contouring.

This release is signed by my GPG key. The fingerprint is:
23CA B59E 3332 F94D 26BE F037 8D86 E7FA E5EB 0C10
and it is also used to sign this message.