Merging "guidata" and "guiqwt" into a new library named...
Would it be too big of a library to simply merge all of these into your PythonQwt project?
Not at all, it would be possible and I was tempted to do so but I prefer to keep the low-level plotting API separated for various reasons:
- First,
PythonQwtcould benefit from other users who are looking for a replacement forPyQwt: API is 99% compatible with PyQwt ; keeping the library separate will probably keep this compatibility rate as it is. - Second, it will make easier a future evolution of guiqwt: in the future, we could be tempted to switch from the PythonQwt backend to another (OpenGL-based solution for example). Keeping the library separated will force us to maintain a clean interface between guiqwt and PythonQwt.
This being said, I'm really tempted to embed PythonQwt into this new library (which is not the same as merging it: a real merge would probably lead to a major API break in PythonQwt).
I asked this on the Google Group, but it's a little easier to read here:
What do you think the main use cases for this new library would be? guiqwt (depending on PyQwt at least) was very helpful for me when I needed to embed fast real time plotting widgets in a PyQt app. I really only had guidata installed because it was a dependency. Is the goal to make it very easy to explore by creating GUIs using a high level API (less Qt knowledge required) from scripts, or more to embed in PyQt apps?
I may have misled you with my original post on the Google Group. The merge is actually just a simple merge... I mean that the new library won't be something different. The new library will be exactly the same as guiqwt for the end-user, except for a cleaner API and a simpler way to install it.
Here is a copy of my answer on the Google Group:
Apart from the signal plotting performance, one could mention the huge gap between guiqwt and matplotlib in terms of image visualization performance (e.g. showing 20,000 x 20,000 images and zooming in/out continuously in real-time with your mouse is possible) and features (contrast adjustment, cross sections, mask tools, etc.).
As for the interactivity, I'm not comparing it to Bokeh since the end-user should not be the same:
- As far as I know, Bokeh is for plotting data inside a web page.
- guiqwt produces Qt widgets that can be used to plot signals or show images à la MATLAB but it is especially suited for embedding such widgets in Qt desktop applications (to develop signal and image processing software).
So, to sum-up the main uses of this library, I'd say that it's mainly for developping desktop Qt-based signal and image processing software requiring fast visualization and interactive tools
The guidata and guiqwt libraries were merged into "plotpy" in 2017. However, the resulting API was quite confusing. Moreover, some projects may require guidata (for data model) and not guiqwt for data visualization.
That's why the decision was made to roll back this change and separate guidata from plotpy.
In the end, guiqwt will be replaced by plotpy and guidata will survive!