Code quality improvements:
- Using
qtpy
library instead of my own Qt5/6 mechanism - Using f-strings
- Extended API and docstrings, like on PlotManager.
- Arguments linked_curves and linked_plots are hinted as Sequence instead of as List
Added support:
- Support for Numpy 2.0
- Raise ImportError instead of general Exception
- Added link to notes on use-case: DAQ
- Minor edit: Using explicit arguments x and y to set the curve data and set the flag skipFiniteCheck=True. Both save (marginal) CPU time.
- Bug fix: Snapshot creation checks if internal buffer is of type RingBuffer and casts to numpy.ndarray. This resolves an intermittent error where the isfinite boolean return array was operating as mask on the RingBuffer, which fails. The boolean return array now always operates on numpy.ndarray.
- Fix for external bug in paintGL of pyqtgraphgraphicsItemsPlotCurveItem.py: Added explicit check to ensure that the curve is only drawn when it has more than 1 point.
- Added benchmark running python=3.10 and pyqtgraph==0.13.1
- Fixed bug when using PyQt6: QMessageBox.Yes --> QMessageBox.StandardButton.Yes
- Updated discussion on benchmarks
- The batch file for auto-creation of the conda environments found in the benchmark folder now uses the conda-forge channel.
- Neater mechanism to support both PyQt and PySide
- Added benchmarks
- Improved demos
- Added support for PyQt5, PyQt6, PySide2 and PySide6 as suggested via a pull request by Mathijs van Gorcum (https://github.com/mvgorcum).
- Removed redundant argument
capacity
from initPlotCurve()
. It is not using a ringbuffer and, hence, does not need a capacity.
Bug-fixes:
- The use of
typing.TypedDict
broke support under Python 3.6 and 3.7. Fixed by conditional importtyping_extensions
. - Curve plotting was broken when
setClipToView(True)
and the curve data extended past the viewbox limits, when not using OpenGL. The cause was my incorrect calculation ofconnect
. Fixed by commenting outconnect
again. Curves will now show continuously (linear interpolation) whenever a NaN is encountered, instead of as correctly fragmented. That's acceptable.
- Renamed parameter
LegendSelect.curves
toLegendSelect.linked_curves
- Changed base of class
LegendSelect()
fromQWidget
toQObject
- Added class
PlotManager()
- Workaround:
PyQt5 >= 5.12.3
causes a bug inPyQtGraph
where a curve won't render if it contains NaNs (but only in the case when OpenGL is disabled). The curve will now be displayed correctly, i.e., fragmented whenever a NaN is encountered. When OpenGL is enabled, linear interpolation will occur at the gaps as perpyqtgraph.plotCurveItem.paintGL()
.
- Method names are now conform the
PyQtGraph
naming style. I.e.setData()
vs.set_data()
, etc. - The default values of
PyQtGraph
are no longer being overwritten. - Added class
LegendSelect
- First release on PyPI