A framework for inspecting data, based on flowcharts from pyqtgraph. plottr's main aim is to allow the user to define custom data processing flows and plotting. A particular use case is data filtering and plotting.
https://plottr.readthedocs.io (work in progress...)
Plottr is installable from pypi with pip install plottr
Plottr is a Qt application. At runtime it talks to Qt through
qtpy, so it works with any of the
supported Qt bindings, but you must install one yourself -- none is pulled
in automatically. Pick exactly one of:
| Binding | pip extra | Notes |
|---|---|---|
| PySide6 | pip install plottr[pyside6] |
Recommended (and what testing/type-checking use by default) |
| PyQt5 | pip install plottr[pyqt5] |
|
| PyQt6 | pip install plottr[pyqt6] |
|
| PySide2 | pip install plottr[pyside2] |
Older Qt5 binding |
For example, the recommended install is:
pip install plottr[pyside6]
If you have more than one binding installed, select which one plottr (via
qtpy) should use by setting the QT_API environment variable before starting,
e.g. QT_API=pyside6 (other valid values: pyqt5, pyqt6, pyside2).
If you installed pyqt from (Ana)Conda you should not use any of the pip
extras above; instead do pip install plottr (Qt comes from conda) or install
plottr from conda-forge:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install plottr
To install from source: clone the repo, and install using
pip install -e .[pyside6] (or another binding extra of your choice).
You can use the inspectr tool to get a simple overview over QCoDeS database
files, and plot datasets contained in the database.
To use: run plottr-inspectr [--dbpath <path to your .db file>]
As an alternative from the root of the cloned plottr repository, run python apps/inspectr.py [--dbpath <path to your .db file>]
For basic instructions, check out the Notebook Live plotting qcodes data under /doc/examples.
Note: this package is not compatible with the original plottr tool.
You might want to install freshly if you still use the old version.
- python >= 3.12
- the usual: numpy, mpl, ...
- pandas >= 0.22
- xarray
- pyqtgraph >= 0.12.1
- one Qt binding (PySide6 recommended; see Installation)
See the plottr GitHub Releases page for versions and their changelogs
- added a generalized way for fitting data (or similar procedures that generate analysis parameters from datasets) (#293)
- ... and more, see here https://github.com/toolsforexperiments/plottr/releases/tag/v0.10.0
- Fixed a crash bug with python 3.10 (#257)
- Add new analysis node for creating histogram of data by @wpfff in #241
- bugfix: prevent flushing when we are updating data. by @wpfff in #243
- fix type checking with mypy 920 by @jenshnielsen in #248
- Bump minimum version of pyqtgraph by @jenshnielsen in #247
- Test with python 3.10 and mark as supported (#238)
- add missing init file to config dir (#236)
- Use a regular install in tests (#237)
- Inspectr: tag a run with a star (⭐) or cross (❌) icon, filter by those, also show dataset metadata next to parameters and snapshot (#229)
- Improvements to monitr: more stability in adding data to ddh5, better performance by making data loading multithreaded and running reach plot window in a separate process (#219)
- Added pyqtgraph backend for plotting that can be used instead of matplotlib (Example for how to select can be found in test/apps/autoplot_app.py) (#215, #218)
- Fix/invaliddata: small fixes when data contains a lot of invalid entries (#226)
- Fix in shape recognition when adding data (#220)
- Add minimal versions to dependencies (#201)
- Make the .gitignore proper (#73)
- add dependabot (#208)
- Fix typechecking with mypy 0.9xx (#207)
- clarify install instructions wrt qt and mention conda forge (#202)
- refactoring the plotting system (#166)
- Add version log message to main
__init__(#175)
- Fix crop if less than one row is not nan (#198)
- Fix rgba error (#199)
- Allow empty dataset if datadict is none (#195)
- Modernize setup files (#194)
- packaging cleanups (#177)
- upgrade versioneer to 0.19 (#176)
- Add copy content features to inspectr and autoplot windows, specifically
- a new Copy pop up menu for copying content of cells in inspectr
- a new Copy metadata button in plot window for copying info about the dataset to clipboard
- remove redundant information between the optional "info" box on the plot and the plot title
- Drop support for Python 3.6 and support type-checking with qcodes 0.21.0
- Fix type-checking with numpy 1.20
- Fixed y-axis to not show axis-label if more than one plot is selected in 1D single-plot show.
- Workaround for bug with pyqt installed via conda that would result in blank icons.
- Add experimental support for using Pyside2 as an alternative to PyQt5
- Entry points for inspectr (plottr-inspectr) and autoplot (plottr-autoplot-ddh5)
- LICENSE file has been added (no change to license of the code)
- setup.py has been tweeked to ensure that sdist and bdist_wheel packages are generated correctly
- Usable version of hdf5 file support. can use the apps/monitr.py script to launch a tool that allows easy (live) plotting.
- there were several issues/annoyances that caused (minor) issues with grid handling and plotting in rare-ish circumstances. Most of them should be fixed now.
- A few docs and examples, mostly about grid usage.
- the main repo has now moved to to a different organization: https://github.com/toolsforexperiments/plottr the old repo (https://github.com/data-plottr/plottr) will be kept in sync for a while, but deleted eventually.