Projects page

List of self-contained, scoped projects that are suitable for funding through grants such as GSOC, GSOD, NUMFOCUS Small development grants, NASA ROSES, etc.

Documentation

Document exactly what our units system does now

  • units and ducktyping of array types (pandas, xarray, etc)
  • prose documentation
  • test suite that can validate converter classes

Document out of the box interactivity

Features

Expand Hatch API

Patch API could be much more expansive and users should be able to make patch patterns

Question: Should this be "hatch" instead of "patch"? I think this should have been "hatch" [TAC]

Line-stroke or brush API

Sometimes we want more than just dots and dashes

Alpha compositing

https://github.com/matplotlib/matplotlib/issues/6210

expanded annotation: Position artists relative to other artists

https://github.com/matplotlib/matplotlib/issues/22223

Improve non-linear grid lines

This is tied into astropy using contours https://github.com/astropy/astropy/pull/12447 / https://github.com/astropy/astropy/issues/12446 / https://github.com/matplotlib/matplotlib/issues/21569. There are similar hacks in metpy / cartopy for their map grid lines and skewT

Image resampling

  • we currently rely on Agg to do image interpolation and resampling. This has pretty signifcant limitations as Agg only works on numbers between 0 and 1.

    • project would consider re-implemmenting the sampling in python (numpy or using other image manipulation libraries) and/or our own C code.
  • scope:

    • well-defined as we have "working" implimentation to test against.
    • could be partial (i.e. just impliment some of the more popular interpolation routines, and track to those when possible, and the old routines when not)
  • Add interpolation stage 'norm': https://github.com/matplotlib/matplotlib/issues/21167

Axes 3: decrease white space/clean up margins

https://github.com/matplotlib/matplotlib/issues/19519#issuecomment-780002963

mathtext overhaul

text/font handling

  • Change postscript output to use the same mechanism as PDF and SVG, which
    allows text to be editable after export.
  • Related issues: #131, #11233
    • Font fallback in matplotlib. Use css-font fallback ideology to let user
      provide a list of (already-present) fonts (for non-shipped fonts, refer to 3rd idea),
      and render text-first route instead of font-first route. (a bit of surgery req.)
  • Related issues: #18883, #15260
    • Font subsetting in matplotlib. Currently all the PDFs and SVGs generated embed the entire font within them, subsetting is a way to just embed the glyphs required from the font files.
    • Related issues: #12636

Optimizations

Speed up the documentation build

Doc builds have become very slow, to an extent that negatively affects the workflow.

  • When writing documentation, building locally to see what it looks like is basically impractical as you have to wait many minutes for the result. Even for incremental builds and using multiple CPUs.
  • Doc builds are the slowest part in our CI pipeline, which slows down reviews and iterations.

In particular:

  • Reduce the build time for clean builds.
  • Reduce the build time for incremental builds.
    Some time ago, that was ~30s for me, now it's ~500s. Try to get that down again.
  • Add options for additional shortcuts, e.g. leaving out the gallery (we've documented make O=-Dplot_gallery=0 html but that doesn't have a significant impact)
    This will improve the workflow for local building.
  • This will likely need patches to sphinx, sphinx_gallery, pydata_sphinx_theme and may need coordination with them.

Test image refactor

Somehow don't have a huge repo full of images

Refactor dpi handling to be virtual until drawtime

MPL's base co-ordinate system should not be one that changes when the monitor a window is on changes.

External collabs

ipycanvas backend

https://github.com/jupyter-widgets-contrib/ipycanvas/issues/179

(TH) extensions on pytest-mpl