# 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 - https://github.com/matplotlib/matplotlib/issues/28722 ## 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 - https://github.com/matplotlib/matplotlib/issues?q=is%3Aissue+is%3Aopen+label%3A%22topic%3A+text%2Fmathtext%22 - Allow mathtext in matplotlib to use user-provided font. There are 2 ways to go about this: - (good) Add lualatex/xeetex like backends to work with extended DVI parser - (better) Add support to take font paths from user.(this will most probably require a working font-fallback idea, and may be taken as an extended goal for GSoC) - Related issues: [#2869](https://github.com/matplotlib/matplotlib/issues/2869) ### 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](https://github.com/matplotlib/matplotlib/issues/131), [#11233](https://github.com/matplotlib/matplotlib/issues/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](https://github.com/matplotlib/matplotlib/issues/18883), [#15260](https://github.com/matplotlib/matplotlib/issues/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](https://github.com/matplotlib/matplotlib/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 - inspired from https://github.com/matplotlib/matplotlib/issues/18168#issuecomment-671825627