napari_plot
Plugin providing support for 1d plotting in napari
Plugin providing support for 1d plotting in napari.
This plugin is in very early stages of development and many things are still in a state of disarray. New features and bug fixes will be coming over the coming months.
Usage
You can use napari-plot alongside napari where it is embedded as a dock widget. If using this option, controls are relegated to a toolbar
where you can adjust layer properties like you would do in napari.

Or as a standalone app where only one-dimensional plotting is enabled. In this mode, controls take central stage and reflect napari's own
behaviour where layer controls are embedded in the main application.

Data selection is also permitted by enabling one of the available selection tools.

Roadmap:
This is only provisional list of features that I would like to see implemented. It barely scratches the surface of what plotting tool should cover so as soon as the basics are covered, focus will be put towards adding more exotic features. If there are features that you certainly wish to be included, please modify the list below or create a new issue
- [ ] Support for new layer types. Layers are based on
napari'sLayer, albeit in a two-dimensional setting. Supported and planned layers:- [x] Line Layer - simple line plot.
- [x] Scatter Layer - scatter plot (similar to
napari's Pointslayer). - [x] Centroids/Segments Layer - horizontal or vertical line segments.
- [x] InfLine Layer - infinite horizontal or vertical lines that span over very broad range. Useful for defining regions of interest.
- [x] Region Layer - infinite horizontal or vertical rectangular boxes that span over very broad range. Useful for defining regions of interest.
- [x] Shapes Layer -
napari'sownShapeslayer - [x] Points Layer -
napari'sownPointslayer - [x] Multi-line Layer - more efficient implementation of
Linelayer when multiple lines are necessary. - [ ] Bar - horizontal and vertical barchart (TODO)
- [x] Proper interactivity of each layer type (e.g. moving
RegionorInfLine, adding points, etc...) - [x] Intuitive interactivity.
napari-plotwill provide excellent level of interactivity with the plotted data. We plan to support several types ofToolsthat permit efficient interrogation of the data. We currently provide severalzoomandselecttools and hope to add few extras in the future.- [x] Box-zoom - standard zooming rectangle. Simply
left-mouse + drag/releasein the canvas on region of interest - [x] Horizontal span - zoom-in only in the y-axis by
Ctrl + left-mouse + drag/releasein the canvas. - [x] Vertical span - span-in only in the x-axis by
Shift + left-mouse + drag/releasein the canvas. - [x] Rectangle select - rectangle tool allowing sub-selection of data in the canvas. Similar to the
Box-zoombut without the zooming part. - [x] Polygon select - polygon tool allowing sub-selection of data in the canvas.
- [x] Lasso select - lasso tool allowing sub-selection of data in the canvas.
- [x] Box-zoom - standard zooming rectangle. Simply
- [ ] Interactive plot legend
- [ ] Customizable axis visuals.
- [x] Plot axis enabling customization of tick/label size and color
- [ ] Support for non-linear scale
- [ ] Add convenient plotting interface:
- [ ] Add
.plotfunctionality - [ ] Add
.scatterfunctionality - [ ] Add
.hbarand.vbarfunctionality - [ ] Add
.imshowfunctionality
- [ ] Add
This napari plugin was generated with Cookiecutter using with @napari's cookiecutter-napari-plugin template.
Installation
You can install napari-plot directly from PyPI via:
pip install napari-plot
or from the git repo:
git clone https://github.com/lukasz-migas/napari-plot.git
cd napari-plot
pip install -e '.[all]'
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the BSD-3 license, "napari-plot" is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Support
This project is supported by a Chan-Zuckerberg Initiative napari grant.
Version:
- 0.2.0
Last updated:
- 2025-10-27
First released:
- 2022-01-09
License:
- BSD 3-Clause
Operating system:
- Information not submitted
Requirements:
- napari-plugin-engine>=0.2.0
- numpy
- qtpy
- qtawesome>=1.2.0
- napari<=0.5.6; python_version <= "3.9"
- napari>=0.6.6; python_version >= "3.10"
- matplotlib
- vispy
- koyo
- qtextra
- PySide2!=5.15.0,>=5.13.2; (python_version < "3.11" and platform_machine != "arm64") and extra == "pyside2"
- PySide6<6.5; python_version < "3.12" and extra == "pyside6-experimental"
- PyQt6>6.5; extra == "pyqt6"
- PyQt6!=6.6.1; platform_system == "Darwin" and extra == "pyqt6"
- napari_plot[pyside2]; extra == "pyside"
- PyQt5!=5.15.0,>=5.13.2; extra == "pyqt5"
- napari_plot[pyqt5]; extra == "pyqt"
- napari_plot[pyqt]; extra == "qt"
- napari_plot[optional,pyqt]; extra == "all"
- napari-plugin-manager<0.2.0,>=0.1.3; extra == "all"
- triangle; platform_machine != "arm64" and extra == "optional"
- numba>=0.57.1; extra == "optional"
- zarr>=2.12.0; extra == "optional"
- babel>=2.9.0; extra == "testing"
- fsspec>=2023.10.0; extra == "testing"
- hypothesis>=6.8.0; extra == "testing"
- lxml[html_clean]>5; extra == "testing"
- matplotlib>=3.6.1; extra == "testing"
- numba>=0.57.1; extra == "testing"
- pooch>=1.6.0; extra == "testing"
- coverage>7; extra == "testing"
- docstring_parser>=0.15; extra == "testing"
- pretend>=1.0.9; extra == "testing"
- pyautogui>=0.9.54; extra == "testing"
- pytest-qt>=4.3.1; extra == "testing"
- pytest-pretty>=1.1.0; extra == "testing"
- pytest>=8.1.0; extra == "testing"
- tensorstore>=0.1.13; extra == "testing"
- virtualenv>=20.17; extra == "testing"
- xarray>=0.16.2; extra == "testing"
- zarr>=2.12.0; extra == "testing"
- IPython>=7.25.0; extra == "testing"
- qtconsole>=4.5.1; extra == "testing"
- rich>=12.0.0; extra == "testing"
- napari-plugin-manager<0.2.0,>=0.1.0a2; extra == "testing"
- torch>=1.7; extra == "testing-extra"
- PyGithub>=1.44.1; extra == "release"
- twine>=3.1.1; extra == "release"
- gitpython>=3.1.0; extra == "release"
- requests-cache>=0.9.2; extra == "release"
- ruff; extra == "dev"
- pdbpp; extra == "dev"
- check-manifest>=0.42; extra == "dev"
- pre-commit>=2.9.0; extra == "dev"
- pydantic[dotenv]; extra == "dev"
- napari_plot[testing]; extra == "dev"
- ruff; extra == "build"
- pyqt5; extra == "build"
- mkdocs; extra == "docs"
- mkdocs-material; extra == "docs"
- mkdocs-minify-plugin; extra == "docs"
- mkdocstrings; extra == "docs"
- mkdocstrings-python; extra == "docs"
- markdown-changelog; extra == "docs"

