Converge on a sensible data visualization package.
Currently data visualization is based on a mix of
- matplotlib
- pyqtgraph for live plotting
There are some issues with these packages that make them unsuitable as a fundament for quantify.
Although matplotlib is the de-facto standard for creating data visualizations in python, it is focused on static images only. Doing interactive or real-time updating visualizations does not work very well.
PyQTgraph has some other problems. Although it creates very fast visualizations, it has the following problems.
- Hard to install on different systems.
- Incompatible with spyder #83 (closed) .
- Visualization in a pop-up window making it incompatible with remote access through Jupyter.
- Changes in QT that are not friendly to us (https://www.qt.io/blog/qt-offering-changes-2020)
I have a pretty clear idea of what I think a future visualization framework should look like and what it should be based on. However, it is important that we are clear on what these requirements are and discuss them as there are many options that satisfy these requirements. I'd like to use this issue to discuss, and document, the different options available before converging on a choice.
The following text is from !45 (closed):
To be more precise on the requirements of a good visualization method, I think I have the following requirements (which we'll probably extend at some point.
- as few different frameworks as possible (matplotlib for static plotting, + preferably only 1 extra)
-
easy to install cross-platform (Windows, Mac, and Linux) -
Reasonably fast and responsive -
Realtime updates -
Basic interactivity (scrolling, panning, cell folding, etc.) -
Jupyterlab integration -
web-based
Nice-to-have
-
Declarative visualization (thinking forwards to the interactive data-browser).
The arguments for Jupyterlab integration are more with an eye to how we imagine people using the software. I expect that in the future use will move heavily towards remote working. Being integrated in Jupyterlab means that the visualization can then run locally at the user who uses a jupyter-hub type interface to interact with the experiment.
Web-based has to do with how I expect the industry to evolve, both in terms of what frameworks other fields (data-science etc.) will invest money in, and also what skill sets are available with people we might want to work with.