fastplotlib/fastplotlib

Roadmap 2025

kushalkolar opened this issue ยท 0 comments

This is our roadmap for 2024 and 2025. The goal is that when this roadmap is complete, or nearly complete, we will have a near-stable beta v1.0.0 release of fastplotlib. The roadmap is subject to change as the project grows and evolves, but we think that the items laid out here are the core components for fastplotlib to become a fully fledged and unique scientific plotting library.

We are always looking for new contributors! Items marked with a ๐ŸŸข are easy first PRs for newcomers with all levels of experience! If you have other ideas, or better ideas, feel free to open an issue or PR ๐Ÿ˜„ !

API basics

  • module reorganization, #53
  • arrive at a stable API for a v1.0.0 beta, related #121
  • Use matplotlib-like names for some aspects of the API, like vmin vmax for familiarity #88
  • ๐ŸŸข #384
  • UI elements, explore pyimgui, kivy, etc. Will probably have to be implemented in pygfx

Layouts

  • Arbitrary subplot sizes and positions, with resizable separators between them, some ideas in #315
    • pyimgui might help with this too
  • Add a row or column to existing Gridplot

Graphics

  • #129
  • better handling of color args, done in #78
  • Heatmap needs to work with larger array, see pygfx/pygfx#360
  • #389
  • #487
    • Some selector tools could just inhereit from this and BaseSelector
  • 3D Graphics
    • Polyhedron
    • Ellipsoid
    • Volume images #50
    • Arbitrary polyhedrons and surface meshes
    • Unfirom API for non-orthogonal slicing for all 3D graphics
  • Graphic Collections
    • LineCollection
    • LineStack
    • PolygonCollection

Interactivity tools and events

  • interactivity to define events between Graphics #93
  • more complex interactivity defined in in #100
  • Selectors #142
    • LinearSelector
    • LinearRegionSelector
    • ๐ŸŸข RectangleRegionSelection
    • PolygonRegionSelection
    • Volume selector tools, cubes and slices
  • #456
  • ๐ŸŸข #380

More Text control

  • Decide on API
  • Size of text for plot titles, etc.

Subplot/View area

  • refactor Subplot, create a new class ViewArea which is used by both Subplot and DockedViewport #30
  • Axes with ticks and labels, waiting for pygfx/pygfx#492
  • #80
  • "Docked" viewports #30
  • ๐ŸŸข toolbar buttons to change controllers and camera FOV for subplots, maybe an "advanced" options area with even more toolbar-accessbile configurations (theme, log axes, etc.).

Things in docked viewports

  • Lineplot that displays histogram with LinearRegionSelector to adjust vmin vmax for image data
  • #403

Widgets

  • #51
  • Do we need more types of widgets? Line plots? Scatter plots? The ImageWidget is due to the complex n-dimensional nature of imaging data.
    • I think the answer to this is something like a seaborn-type API, higher level than graphics, related #395
      • neurowidgets library is also kinda related but tailored to neuroscience
  • #149

Test suite

  • basics framework to run desktop examples and notebook examples with screenshots
  • ๐ŸŸข notebook tests for everything
  • meta issue - #229
  • emulate Events #374
  • selectors
  • think about #362

Docs, tutorials and examples

  • basic docs, #49
  • #316
  • #292
  • #486
  • ๐ŸŸข more docs
  • ๐ŸŸข #339
  • ๐ŸŸข tutorials: the basics within jupyter, using in ipython with %gui qt, use to make Qt applications
    • domain specific tutorials, within this repo so that it's maintained under one CI roof
    • neuroscience with pynapple with a smaller dataset, or stream from DANDI, adapt from: https://github.com/fastplotlib/fastplotlib-sfn2023
    • deeplabcut and other behavior tools
    • developmental biology
    • general fluorescence microscopy
    • astronomy
    • displaying live data streams from acquisition devices using zmq or multiprocessing

Project Website

  • home page for newcomers to learn about us, how to contribute, our documentation, and community involvement
  • host our previous talks/tutorials

pygfx wishlist:

  • LOD - Level of detail
  • render bundles