pyqtgraph/CHANGELOG
2021-03-20 17:02:43 -07:00

991 lines
50 KiB
Plaintext

pyqtgraph-0.12.0
Deprecations:
- Qt < 5.12, Python < 3.6, and numpy < 1.17 not supported
New Features:
- Qt6 Compatibility (thank you so much @pijyoi !)
- #1497 Allow toggling visibility via mouse click on LegendItem
- #1520/#1518 i18n Localization support for dialogs
- #1527 Expand parameter tree documentation
- #1563 Fixes to FlowChart documentation
- #1534 Extend pixmaps for GraphIcons
- #1566 Redid ScatterPlotSpeedTest.py with toggle-able options
- #1572 Arbitrary scale center ROI
- #1581 Equilateral Triangle ROI
Performance enhancement:
- #1493 significant speedup to invertQTransform()
- #1501 various ImageItem performance improvements
- #1509 mkQApp will now have settings for better HiDPI settings
- #1518 Small Optimizations for functions.rescaleData()
- #1556 Reduce reallocation in dynamic range limiter
- #1560 Cache scatter-plot items by hashable properties
- #1564 Correct id-based keyring of scatter plot pixmap cache
- #1569 Fix ScatterPlotItem performance regression
- #1619 Stop PlotDataItem from always sending full style information to PlotCurveItem/ScatterPlotItem
- #1630 Combine levels and lut only if both are present
- #1632 workaround for np.clip regression since numpy 1.17
API/Behavior Change:
- #1476 Use log modulus transform for y-axis log scaling
- #1522 InfiniteLine emits clicked signal event
- #1525 Use QOpenGLWidget instead of QGLWidget
- #1540 Support siPrefix with no suffix in SpinBox
- #1541 Use qWaitForWindowExposed instead of qWaitForWindowShown
- #1554 Disable paint in GLScatterPlotItem if it has no data
- #1573/1576 Add deprecation warnings to portions of library
- #1587 qApp.property('darkMode') is now a dynamic property
- #1613 Added keys() method to Parameter class
- #1641 Introduce functions.clip_array as for np.clip performance regression
Bug Fixes:
- #1487 Fix InfiniteLabel object has not attribute 'updateText'
- #1491 LinearRegionItem would break with setSpan
- #1496 enableMenu setting now preserved when passing ViewBox to PlotItem
- #1498 PlotDataItem now signals on setPos()
- #1500 AlignCenter should have been AlignHCenter
- #1506 Fix "camerPosition" typo in GLViewWidget
- #1510 Fix RemoteGraphicsView mouse interactions on Qt 5.12
- #1517 Fix RemoteSpeedTest Shutdown Errors
- #1528 Support suffix for int parameters
- #1546 ImageView guards against key events when there is no time axis
- #1558 Fix Small Heights in ErrorBarItem
- #1567 Handle 0-d arrays in InfiniteLine.setPos()
- #1583 RawImageWidget fix port to QOpenGLWidget
- #1594 PlotItem removeItem regression fixed
- #1595 Workaround for CuPy Indexing Bug
- #1597 Fix RawImageWidget transpose did not handle luminance only images
- #1598 Remove references to self from lambdas for Signals
- #1618 Install sys.excepthook for PyQt6
- #1639 Fix transformations in GradientLegend
pyqtgraph-0.11.1
New Features:
- #800 Legend for bar graphs
- #1244 Arrow scatter symbols
- #161 Allow hiding individual points in scatter plot
- #395 LegendItem display options
- #1310 Added `Pa` to Units
- #1310 `debug.ThreadTrace` add support for thread names
- #117 Flow Chart Nodes now resized based on number of inputs/outputs
- #1154 `DateAxisItem`
- #1285 Improve control over ROI/handle pens
- #1273 `PColorMeshItem`
- #1397 `LegendItem` enable customization of label text size
- #1422 Permit entry of non-finite values into float `SpinBox`
- #1442 `TickSliderItem.allowRemote` property added
- #1441 `Tick.removeAllowed` is now a regular property and used with `TickSliderItem`
- #1388 Emit a signal when `GraphicsScene` `addItem` or `removeItem` methods called
Performance enhancement:
- #1240/#345 GLImageItem clear need update flag
- #977 Faster computation option for pseudoscatter
- #1297 Improve ArrowItem performance
- #1296 Update `h5py` deps in metaarray
- #1295 Improve TextItem performance
- #1283 Performance improvements to arrayToQPath
- #816 Avoid constructing shadow pens when no shadow pen is set
- #1311 HistogramLUTItem detect trivial gradients
- #1312 avoid extra work when setLabelAngle would have no effect
- #1391 cache viewRect of `GraphicsItem` to reduce CPU load
- #150 Slight speedup to ViewBox panning
- #1420 Many ScatterPlot Improvements
API/Behavior Change:
- #496 Always antialias lines between gradient and region in HistogramLUTItem
- #385 Add headWidth parameter to arrows
- #551 fps variable on ImageView
- #1251 Allow explicit utcOffset timezone in DateAxisItem
- #1310 Add `SignalProxy.block` for temporary disabling of signal forwarding
- #1310 `InfiniteLine.setPos` add support for array argument
- #1310 Rate-limit Qt event processing in ProgressDialog if it is modal
- #1289 Disable autoSIPrefix for DateAxisItem by default
- #1274 Add tickAlpha to AxisItem Style Options
- #402 Added `clear()` method to `GLViewWidget`
- #1264 Added exception to checkOpenGLVersion to highlight OpenGL ES incompatibility
- #1257 Make painter tick font dependent for AxisItem
- #1256 Added `setState`, `setState` and `saveState` to `ROI`
- #1324 Pass through kwargs from MultiPlotItem.plot to PlotItem.plot
- #1387 ScatterPlotItem: Make + and x symbols thicker
- #1362 Make flowchart.Terminal sortable
- #1360 Add "left" and "right" step Modes to PlotCurveItem and PlotDataItem
- #1414 Emit event with mouse clicks for some items
- #1413 `InfiniteLine.viewTransformChanged` now calls superclass-method
- #1411 Hide `WidgetParameterItem.defaultBtn` if param has no default
- #1410 add fontSize kwarg to `Dock`
- #159 Add wrapping option to `SpinBox`
- #330 Set parameter default button `autoDefault` value to `False`
- #157 Provide `WidgetGroupInterface` to `GradientWidget`
- #151 Optional provide custom `PlotItem` to `PlotWidget`
- #1140 Dynamic range limiting in `PlotDataItem`
- #1383 GraphicsView set a transparent background palette
- #1428 Add default color for `ColorMap` type in `ColorMapWidget`
Bug Fixes:
- #1239 Avoid adding PlotItem twice
- #508 siScale precision
- #503 Fix butg in RawImageWidget which resulted in mirrored image
- #1242,#1267 Add the mouse event to the sigClicked signal in PlotCurveItem
- #1247 Restore the now-deprecated PlotWindow and ImageWindow classes
- #1249 Remove ScatterPlotItem's SpotItems during addItem call
- #1252 Fix incorrect tick text boundaries calculation on axis by setting the font
- #1310 Fixed `Vector.__init__` when used with `QVector3D` argument
- #1310 Fix console exception filtering for python3
- #1310 BusyCursor only restore cursor after all nested levels have exited
- #1310 `SimpleParameter.setValue` coerces argument to int if parameter type is int
- #1307 Fixed `reload` methods for python3
- #1294 Various console fixes
- #1293 Various Python3 code fixes
- #1282 Handle Axis SI prefix scaling in MatplotlibExporter
- #1276 Fix problems with high frequency gaming mice
- #1270 Various fixes with AxisItem space being taken
- #1272 `LegendItem.clear()` fixed
- #1268 Check for container before setting dock orientation
- #1312 Avoid divide by 0 condition in TargetItem
- #1309 Properly retain and use hoverPen argument in _PolyLineSegment
- #1371 Explicitly set line width in PlotCurveItem when using OpenGL
- #1319 don't automatically reload modules without pyc
- #1319 make ptime.time on py3 return precision wall-clock time
- #1334 Edge case detection in PlotCurveItem
- #1339 fix handling of QVector3D args in Vector.__init__
- #1336 Make `parent` an explicit kwarg of ArrowItem.__init__, avoid passing into setStyle
- #1368 Disconnect from correct slots in Flowchart
- #1364 fix log scaling
- #963 Allow last image in stack to be selected by slider in ImageView
- #1045 Raise AttributeError in __getattr__ in TabWindow
- #960 Work around PySide setOverrideCursor bug in BusyCursor
- #309 Encode QPropertyAnimation property name if not passed as bytes
- #1072 Fix storing of ragged curves in HDF5Exporter
- #1275 Fix Parameter.hasDefault
- #1291 Get ImageView ROI working with both row and col major data
- #1377 Consolidate and fix downsample factor computation in ImageItem
- #1376 Fix PlotItem.setAxisItems
- #1392 SignalProxy: Correct initialization without slot argument
- #1306 Fix incorrect rendering of overlapping object in renderToArray()
- #1349 Avoid calling method on undefined attribute
- #1367 AxisItem: Account for empty strings in the visibility of text and units
- #1356 Fix `ParameterTree` tree name and title handling
- #1419 Fix `DataTreeWidget` dict sorting crash
- #1408 Fix mouse interaction issues with `DockLabel`
- #329 Fix bug where `int` and `float` parameter limits are not always set
- #158 Make `DockArea` compatible with Qt Designer
- #1405 Fix name setting in `ScatterPlotItem` options
- #1403 Do not apply transparent background to Qt4
- #1468 Allow zero step in `ImageItem`
- #1464 Remove `ViewBox.childGroup`'s `ItemClipsChildrenToShape` flag
- #1461 arrayToQPath revert to old behavior of `connect=ndarray` parameter
- #1459 Fix `TickSliderItem` to avoid ghost ticks
- #1456 Resolve issue with `PlotCurveItem` with merging PRs in an incorrect order
- #1287 Fill in non-finite plot values for Qt versions >= 5.12.3
- #1447 Clipped AxisItem tick value labels to prevent drawing artifacts
- #1435 Fix autosize not taking to the correct range with `TextItem` in view
- #1452 merge `InfiniteLine` caching calls
- #1446 Fix `PlotDataItem.setData([], [])`
- #1443 Fix Viewbox axis zoom in RectMode
- #1439 Fix `TickSliderItem.setTickValue` when it references a `GradientEditorItem` method
- #1361 Prevent item duplication in `Node` context menu
- #1423 Fix typo in `kwargs` for `GridItem.setTextPen`
- #1401 Fix width, height and background in SVG exporter
- #1416 Handle case in `ROI` when `shape`, `vectors`, or `origin` keywords are passed in
Maintenance:
- #389 Revert workaround for upstream QT bug regarding mouse events
- #1243 Ensure setPos in ROI is initialized correctly
- #1241 Pin pytest-xvfb version on py2
- #1310 Added tests for `functions.subArray`
- #1307 Add `ThreadSafeTimer` to `__init__.py`
- #467 derivatePlots cleanup
- #400 `ImageView.Timeline` better visibility
- #1265 Make the documentation reproducible
- #1319 clean up exception messages in console
- #356 Fix some NumPy warnings
- #1326 Improve docs for MultiPlotWidget and MultiPlotItem
- #1331 Migrate imports of PyQt5's sip module to new namespace
- #1370 Fix deprecation warning in multiprocess module
- #308 Fix opt name for SpinBox: range -> bounds in UnsharpMaskNode example
- #887 Update collections.abc imports
- #1142 Miscellaneous doc fixups
- #1169 Avoid using mutable default argument value
- #1073 Python3 fixes
- #1284 Update doc strings to clarify getArrayRegion API for ROI subclasses
- #1042 Close windows at the end of test functions
- #1374 Test warnings cleanup
- #1375 Add targeted Vector test coverage
- #1384 GLViewWidget.pan docstring typo
- #1382 Autoformat LegendItem
- #1396 Add tests for GraphicsView
- #1399 Disable mouse rate limiting on test_ROI
- #1409 Prepend conda-forge channel prior to env creation in CI
- #1302 Fix Example app now works with Qt4/Python2
- #1402 Handle case of version string having no `+`
- #1400 Fix sphinx warnings on `PColorMeshItem`
- #1328 Add docs build job to CI
- #1464 Use `conda-forge` on pyside2+linux
- #1448 Fixes for `examples/CustomPlot.py`
- #1432 ExampleApp fix to use `pg` module from directory
pyqtgraph-0.11.0
NOTICE: This is the _last_ feature release to support Python 2 and Qt 4 (PyQt4 or pyside 1)
New Features:
- #101: GridItem formatting options
- #410: SpinBox custom formatting options
- #415: ROI.getArrayRegion supports nearest-neighbor interpolation (especially handy for label images)
- #428: DataTreeWidget:
- Add DiffTreeWidget, which highlights differences between two DataTreeWidgets
- Improved support for displaying tracebacks
- Use TableWidget to represent arrays rather than plain text
- #446: Added Perceptually Uniform Sequential colormaps from the matplotlib 2.0 release
- #476: Add option to set composition mode for scatterplotitem
- #518: TreeWidget:
- Add new signals: sigItemCheckStateChanged, sigItemTextChanged, sigColumnCountChanged
- Allow setting expansion state of items before they are added to a treewidget
- Support for using TreeWidget.invisibleRootItem() (see also #592, #595)
- #542: Add collapsible QGroupBox widgets
- #543: Add TargetItem: simple graphicsitem that draws a scale-invariant circle + crosshair
- #544: Make DockArea.restoreState behavior configurable in cases where either a dock to be restored is
missing, or an extra dock exists that is not mentioned in the restore state.
- #545: Allow more types to be mapped through Transform3D
- #548: Adds a disconnect() function that allows to conditionally disconnect signals,
including after reload.
Also, a SignalBlock class used to temporarily block a signal-slot pair
- #557: Allow console stack to be set outside of exceptions (see also: pg.stack)
- #558: CanvasItem save/restore, make Canvas ui easier to embed
- #559: Image exporter gets option to invert value while leaving hue fixed
- #560: Add function to enable faulthandler on all threads, also allow Mutex to be used as
drop-in replacement for python's Lock
- #567: Flowchart
- Add several new data nodes
- Add floordiv node
- Add EvalNode.setCode
- Binary operator nodes can select output array type
- #568: LinearRegionItem
- InfiniteLine can draw markers attached to the line
- InfiniteLine can limit the region of the viewbox over which it is drawn
- LinearRegionItem gets customizable line swap behavior (lines can block or push each other)
- Added LinearRegionItem.setHoverBrush
- #580: Allow calling sip.setapi in subprocess before pyqtgraph is imported
- #582: Add ComboBox save/restoreState methods
- #586: ParameterTree
- Add GroupParameter.sigAddNew signal
- systemsolver: add method for checking constraints / DOF
- add systemsolver copy method
- Parameter.child raises KeyError if requested child name does not exist
- #587: Make PathButton margin customizable
- #588: Add PlotCurveItem composition mode
- #589: Add RulerROI
- #591: Add nested progress dialogs
- #597: Fancy new interactive fractal demo
- #621: RGB mode for HistogramLUTWidget
- #628,670: Add point selection in ScatterPlotWidget
- #635: PySide2 support
- #671: Add SVG export option to force non-scaling stroke
- #676: OpenGL allow for panning in the plane of the camera
- #683: Allow data filter entries to be updated after they are created
- #685: Add option to set enum default values in DataFilterWidget
- #710: Adds ability to rotate/scale ROIs by mouse drag on the ROI itself (using alt/shift modifiers)
- #813,814,817: Performance improvements
- #837: Added options for field variables in ColorMapWidget
- #840, 932: Improve clipping behavior
- #841: Set color of tick-labels separately
- #922: Curve fill for fill-patches
- #996: Allow the update of LegendItem
- #1023: Add bookkeeping exporter parameters
- #1072: HDF5Exporter handling of ragged curves with tests
- #1124: Syntax highlighting for examples.
- #1154: Date axis item
- #393: NEW show/hide gradient ticks NEW link gradientEditor to others
- #1211: Add support for running pyside2-uic binary to dynamically compile ui files
API / behavior changes:
- Deprecated graphicsWindow classes; these have been unnecessary for many years because
widgets can be placed into a new window just by calling show().
- #158: Make DockArea compatible with Qt Designer
- #406: Applying alpha mask on numpy.nan data values
- #566: ArrowItem's `angle` option now rotates the arrow without affecting its coordinate system.
The result is visually the same, but children of ArrowItem are no longer rotated
(this allows screen-aligned text to be attached more easily).
To mimic the old behavior, use ArrowItem.rotate() instead of the `angle` argument.
- #673: Integer values in ParameterTree are now formatted as integer (%d) by default, rather than
scientific notation (%g). This can be overridden by providing `format={value:g}` when
creating the parameter.
- #374: ConsoleWidget uses the console's namespace as both global and local scope, which
- #410: SpinBox siPrefix without suffix is not longer allowed, select only numerical portion of text on focus-in
allows functions defined in the console to access the global namespace.
- #479,521: ParameterTree simple parameters check types before setting value
- #555: multiprocess using callSync='sync' no longer returns a future in case of timeout
- #583: eq() no longer compares array values if they have different shape
- #589: Remove SpiralROI (this was unintentionally added in the first case)
- #593: Override qAbort on slot exceptions for PyQt>=5.5
- #657: When a floating Dock window is closed, the dock is now returned home
- #771: Suppress RuntimeWarning for arrays containing zeros in logscale
- #942: If the visible GraphicsView is garbage collected, a warning is issued.
- #958: Nicer Legend
- #963: Last image in image-stack can now be selected with the z-slider
- #992: Added a setter for GlGridItem.color.
- #999: Make outline around fillLevel optional.
- #1014: Enable various arguments as color in colormap.
- #1044: Raise AttributeError in __getattr__ in graphicsWindows (deprecated)
- #1055: Remove global for CONFIG_OPTIONS in setConfigOption
- #1066: Add RemoteGraphicsView to __init__.py
- #1069: Allow actions to display title instead of name
- #1074: Validate min/max text inputs in ViewBoxMenu
- #1076: Reset currentRow and currentCol on GraphicsLayout.clear()
- #1079: Improve performance of updateData PlotCurveItem
- #1082: Allow MetaArray.__array__ to accept an optional dtype arg
- #841: set color of tick-labels separately
- #1111: Add name label to GradientEditorItem
- #1145: Pass showAxRect keyword arguments to setRange
- #1184: improve SymbolAtlas.getSymbolCoords performance
- #1198: improve SymbolAtlas.getSymbolCoords and ScatterPlotItem.plot performance
- #1197: Disable remove ROI menu action in handle context menu
- #1188: Added support for plot curve to handle both fill and connect args
- #801: Remove use of GraphicsScene._addressCache in translateGraphicsItem
- Deprecates registerObject meethod of GraphicsScene
- Deprecates regstar argument to GraphicsScene.__init__
- #1166: pg.mkQApp: Pass non-empty string array to QApplication() as default
- #1199: Pass non-empty sys.argv to QApplication
- #1090: dump ExportDialog.exporterParameters
- #1173: GraphicsLayout: Always call layout.activate() after adding items
- #1097: pretty-print log-scale axes labels
- #755: Check lastDownsample in viewTransformChanged
- #1216: Add cache for mapRectFromView
- #444: Fix duplicate menus in GradientEditorItem
- #151: Optionally provide custom PlotItem to PlotWidget
- #1093: Fix aspectRatio and zoom range issues when zooming
- #390: moved some functionality from method 'export' to new method
- #468: Patch/window handling
- #392: new method 'getAxpectRatio' with code taken from 'setAspectLocked'
- #1206: Added context menu option to parametertree
- #1228: Minor improvements to LegendItem
Bugfixes:
- #88: Fixed image scatterplot export
- #356: Fix some NumPy warnings
- #408: Fix `cleanup` when the running qt application is not a QApplication
- #410: SpinBox fixes
- fixed bug with exponents disappearing after edit
- fixed parsing of values with junk after suffix
- fixed red border
- reverted default decimals to 6
- make suffix editable (but show red border if it's wrong)
- revert invalid text on focus lost
- siPrefix without suffix is no longer allowed
- fixed parametree sending invalid options to spinbox
- fix spinbox wrapping (merged #159 from @lidstrom83)
- fixed parametertree ignoring spinbox bounds (merged #329 from @lidstrom83)
- fixed spinbox height too small for font size
- ROI subclass getArrayRegion methods are a bit more consistent (still need work)
- #424: Fix crash when running pyqtgraph with python -OO
- #429: Fix fft premature slicing away of 0 freq bin
- #458: Fixed image export problems with new numpy API
- #478: Fixed PySide image memory leak
- #475: Fixed unicode error when exporting to SVG with non-ascii symbols
- #477: Fix handling of the value argument to functions.intColor
- #485: Fixed incorrect height in VTickGroup
- #514: Fixes bug where ViewBox emits sigRangeChanged before it has marked its transform dirty.
- #516,668: Fix GL Views being half size on hidpi monitors
- #526: Fix autorange exception with empty scatterplot
- #528: Prevent image downsampling causing exception in makeQImage
- #530: Fixed issue where setData only updated opts if data is given
- #541: Fixed issue where render would error because 'mapToDevice' would return None if the view size was too small.
- #553: Fixed legend size after remove item
- #555: Fixed console color issues, problems with subprocess closing
- #559: HDF5 exporter: check for ragged array length
- #563: Prevent viewbox auto-scaling to items that are not in the same scene. (This could
happen if an item that was previously added to the viewbox is then removed using scene.removeItem().
- #564: Allow console exception label to wrap text (prevents console
growing too large for long exception messages)
- #565: Fixed AxisItem preventing mouse events reaching the ViewBox if it is displaying grid lines
and has its Z value set higher than the ViewBox.
- #567: fix flowchart spinbox bounds
- #569: PlotItem.addLegend will not try to add more than once
- #570: ViewBox: make sure transform is up to date in all mapping functions
- #577: Fix bargraphitem plotting horizontal bars
- #581: Fix colormapwidget saveState
- #586: ParameterTree
- Make parameter name,value inint args go through setValue and setName
- Fix colormapwidget saveState
- #589: Fix click area for small ellipse/circle ROIs
- #592,595: Fix InvisibleRootItem issues introduced in #518
- #596: Fix polyline click causing lines to bedrawn to the wrong node
- #598: Better ParameterTree support for dark themes
- #599: Prevent invalid list access in GraphicsScene
- #623: Fix PyQt5 / ScatterPlot issue with custom symbols
- #626: Fix OpenGL texture state leaking to wrong items
- #627: Fix ConsoleWidget stack handling on python 3.5
- #633: Fix OpenGL cylinder geometry
- #637: Fix TypeError in isosurface
- #641,642: Fix SVG export on Qt5 / high-DPI displays
- #645: ScatterPlotWidget behaves nicely when data contains infs
- #653: ScatterPlotItem: Fix a GC memory leak due to numpy issue 6581
- #648: fix color ignored in GLGridItem
- #671: Fixed SVG export failing if the first value of a plot is nan
- #674: Fixed parallelizer leaking file handles
- #675: Gracefully handle case where image data has size==0
- #679: Fix overflow in Point.length()
- #682: Fix: mkQApp returned None if a QApplication was already created elsewhere
- #689: ViewBox fix: don't call setRange with empty args
- #693: Fix GLLinePlotItem setting color
- #696: Fix error when using PlotDataItem with both stepMode and symbol
- #697: Fix SpinBox validation on python 3
- #699: Fix nan handling in ImageItem.setData
- #713: ConsoleWidget: Fixed up/down arrows sometimes unable to get back to the original
(usually blank) input state
- #715: Fix file dialog handling in Qt 5
- #718: Fix SVG export with items that require option.exposedRect
- #721: Fixes mouse wheel ignoring disabled mouse axes -- although the scaling was correct,
it was causing auto range to be disabled.
- #723: Fix axis ticks when using self.scale
- #739: Fix handling of 2-axis mouse wheel events
- #742: Fix Metaarray in python 3
- #758: Fix remote graphicsview "ValueError: mmap length is greater than file size" on OSX.
- #763: Fix OverflowError when using Auto Downsampling.
- #767: Fix Image display for images with the same value everywhere.
- #770: Fix GLVieWidget.setCameraPosition ignoring first parameter.
- #782: Fix missing FileForwarder thread termination.
- #787: Fix encoding errors in checkOpenGLVersion.
- #793: Fix wrong default scaling in makeARGB
- #815: Fixed mirroring of x-axis with "invert Axis" submenu.
- #824: Fix several issues related with mouse movement and GraphicsView.
- #832: Fix Permission error in tests due to unclosed filehandle.
- #836: Fix tickSpacing bug that lead to axis not being drawn.
- #861: Fix crash of PlotWidget if empty ErrorBarItem is added.
- #868: Fix segfault on repeated closing of matplotlib exporter.
- #875,876,887,934,947,980: Fix deprecation warnings.
- #886: Fix flowchart saving on python3.
- #888: Fix TreeWidget.topLevelItems in python3.
- #924: Fix QWheelEvent in RemoteGraphicsView with pyqt5.
- #935: Fix PlotItem.addLine with 'pos' and 'angle' parameter.
- #949: Fix multiline parameters (such as arrays) reading from config files.
- #951: Fix event firing from scale handler.
- #952: Fix RotateFree handle dragging
- #953: Fix HistogramLUTWidget with background parameter
- #968: Fix Si units in AxisItem leading to an incorrect unit.
- #970: Always update transform when setting angle of a TextItem
- #971: Fix a segfault stemming from incorrect signal disconnection.
- #972: Correctly include SI units for log AxisItems
- #974: Fix recursion error when instancing CtrlNode.
- #987: Fix visibility reset when PlotItems are removed.
- #998: Fix QtProcess proxy being unable to handle numpy arrays with dtype uint8.
- #1010: Fix matplotlib/CSV export.
- #1012: Fix circular texture centering
- #1015: Iterators are now converted to NumPy arrays.
- #1016: Fix synchronisation of multiple ImageViews with time axis.
- #1017: Fix duplicate paint calls emitted by Items on ViewBox.
- #1019: Fix disappearing GLGridItems when PlotItems are removed and readded.
- #1024: Prevent element-wise string comparison
- #1031: Reset ParentItem to None on removing from PlotItem/ViewBox
- #1044: Fix PlotCurveItem.paintGL
- #1048: Fix bounding box for InfiniteLine
- #1062: Fix flowchart context menu redundant menu
- #1062: Fix a typo
- #1073: Fix Python3 compatibility
- #1083: Fix SVG export of scatter plots
- #1085: Fix ofset when drawing symbol
- #1101: Fix small oversight in LegendItem
- #1113: Correctly call hasFaceIndexedData function
- #1139: Bug fix in LegendItem for `setPen`, `setBrush` etc (Call update instead of paint)
- #1110: fix for makeARGB error after #955
- #1063: Fix: AttributeError in ViewBox.setEnableMenu
- #1151: ImageExporter py2-pyside fix with test
- #1133: compatibility-fix for py2/pyside
- #1152: Nanmask fix in makeARGB
- #1159: Fix: Update axes after data is set
- #1156: SVGExporter: Correct image pixelation
- #1169: Replace default list arg with None
- #770: Do not ignore pos argument of setCameraPosition
- #1180: Fix: AxisItem tickFont is defined in two places while only one is used
- #1168: GroupParameterItem: Did not pass changed options to ParameterItem
- #1174: Fixed a possible race condition with linked views
- #809: Fix selection of FlowchartWidget input/output nodes
- #1071: Fix py3 execution in flowchart
- #1212: Fix PixelVectors cache
- #1161: Correctly import numpy where needed
- #1218: Fix ParameterTree.clear()
- #1175: Fix: Parameter tree ignores user-set 'expanded' state
- #1219: Encode csv export header as unicode
- #507: Fix Dock close event QLabel still running with no parent
- #1222: py3 fix for ScatterPlotWidget.setSelectedFields
- #1203: Image axis order bugfix
- #1225: ParameterTree: Fix custom context menu
Maintenance:
- Lots of new unit tests
- Lots of code cleanup
- A lot of work on CI pipelines, test coverage and test passing (see e.g. #903,911)
- #546: Add check for EINTR during example testing to avoid sporadic test failures on travis
- #624: TravisCI no longer running python 2.6 tests
- #695: "dev0" added to version string
- #865,873,877 (and more): Implement Azure CI pipelines, fix Travis CI
- #991: Use Azure Pipelines to do style checks, Add .pre-commit-config.yaml
- #1042: Close windows at the end of test functions
- #1046: Establish minimum numpy version, remove legacy workarounds
- #1067: Make scipy dependency optional
- #1114: doc: Fix small mistake in introduction
- #1131: Update CI/tox and Enable More Tests
- #1142: Miscellaneous doc fixups
- #1179: DateAxisItem: AxisItem unlinking tests and doc fixed
- #1201: Get readthedocs working
- #1214: Pin PyVirtualDisplay Version
- #1215: Skip test when on qt 5.9
- #1221: Identify pyqt5 5.15 ci issue
- #1223: Remove workaround for memory leak in QImage
- #1217: Get docs version and copyright year dynamically
- #1229: Wrap text in tables in docs
- #1231: Update readme for 0.11 release
pyqtgraph-0.10.0
New Features:
- PyQt5 support
- Options for interpreting image data as either row-major or col-major
- InfiniteLine and LinearRegionItem can have attached labels
- DockArea:
- Dock titles can be changed after creation
- Added Dock.sigClosed
- Added TextItem.setColor()
- FillBetweenItem supports finite-connected curves (those that exclude nan/inf)
API / behavior changes:
- Improved ImageItem performance for some data types by scaling LUT instead of image
- Change the defaut color kwarg to None in TextItem.setText() to avoid changing
the color every time the text is changed.
- FFT plots skip first sample if x-axis uses log scaling
- Multiprocessing system adds bytes and unicode to the default list of no-proxy data types
- Version number scheme changed to be PEP440-compliant (only affects installations from non-
release git commits)
Bugfixes:
- Fix for numpy API change that caused casting errors for inplace operations
- Fixed git version string generation on python3
- Fixed setting default values for out-of-bound points in pg.interpolateArray
- Fixed plot downsampling bug on python 3
- Fixed invalid slice in ImageItem.getHistogram
- DockArea:
- Fixed adding Docks to DockArea after all Docks have been removed
- Fixed DockArea save/restoreState when area is empty
- Properly remove select box when export dialog is closed using window decorations
- Remove all modifications to python builtins
- Better Python 2.6 compatibility
- Fix SpinBox decimals
- Fixed numerous issues with ImageItem automatic downsampling
- Fixed PlotItem average curves using incorrect stepMode
- Fixed TableWidget eating key events
- Prevent redundant updating of flowchart nodes with multiple inputs
- Ignore wheel events in GraphicsView if mouse interaction is disabled
- Correctly pass calls to QWidget.close() up the inheritance chain
- ColorMap forces color inputs to be sorted
- Fixed memory mapping for RemoteGraphicsView in OSX
- Fixed QPropertyAnimation str/bytes handling
- Fixed __version__ string update when using `setup.py install` with newer setuptools
Maintenance:
- Image comparison system for unit testing plus tests for several graphics items
- Travis CI and coveralls/codecov support
- Add examples to unit tests
pyqtgraph-0.9.10
Fixed installation issues with more recent pip versions.
pyqtgraph-0.9.9
API / behavior changes:
- Dynamic import system abandoned; pg now uses static imports throughout.
- Flowcharts and exporters have new pluggin systems
- Version strings:
- __init__.py in git repo now contains latest release version string
(previously, only packaged releases had version strings).
- installing from git checkout that does not correspond to a release
commit will result in a more descriptive version string.
- Speed improvements in functions.makeARGB
- ImageItem is faster by avoiding makeQImage(transpose=True)
- ComboBox will raise error when adding multiple items of the same name
- ArrowItem.setStyle now updates style options rather than replacing them
- Renamed GraphicsView signals to avoid collision with ViewBox signals that
are wrapped in PlotWidget: sigRangeChanged => sigDeviceRangeChanged and
sigTransformChanged => sigDeviceTransformChanged.
- GLViewWidget.itemsAt() now measures y from top of widget to match mouse
event position.
- Made setPen() methods consistent throughout the package
- Fix in GLScatterPlotItem requires that points will appear slightly more opaque
(so you may need to adjust to lower alpha to achieve the same results)
New Features:
- Added ViewBox.setLimits() method
- Adde ImageItem downsampling
- New HDF5 example for working with very large datasets
- Removed all dependency on scipy
- Added Qt.loadUiType function for PySide
- Simplified Profilers; can be activated with environmental variables
- Added Dock.raiseDock() method
- ComboBox updates:
- Essentially a graphical interface to dict; all items have text and value
- Assigns previously-selected text after list is cleared and repopulated
- Get, set current value
- Flowchart updates
- Added Flowchart.sigChartChanged
- Custom nodes may now be registered in sub-menu trees
- ImageItem.getHistogram is more clever about constructing histograms
- Added FillBetweenItem.setCurves()
- MultiPlotWidget now has setMinimumPlotHeight method and displays scroll bar
when plots do not fit inside the widget.
- Added BarGraphItem.shape() to allow better mouse interaction
- Added MeshData.cylinder
- Added ViewBox.setBackgroundColor() and GLViewWidget.setBackgroundColor()
- Utilities / debugging tools
- Mutex used for tracing deadlocks
- Color output on terminal
- Multiprocess debugging colors messages by process
- Stdout filter that colors text by thread
- PeriodicTrace used to report deadlocks
- Added AxisItem.setStyle()
- Added configurable formatting for TableWidget
- Added 'stepMode' argument to PlotDataItem()
- Added ViewBox.invertX()
- Docks now have optional close button
- Added InfiniteLine.setHoverPen
- Added GLVolumeItem.setData
- Added PolyLineROI.setPoints, clearPoints, saveState, setState
- Added ErrorBarItem.setData
Bugfixes:
- PlotCurveItem now has correct clicking behavior--clicks within a few px
of the line will trigger a signal.
- Fixes related to CSV exporter:
- CSV headers include data names, if available
- Exporter correctly handles items with no data
- pg.plot() avoids creating empty data item
- removed call to reduce() from exporter; not available in python 3
- Gave .name() methods to PlotDataItem, PlotCurveItem, and ScatterPlotItem
- fixed ImageItem handling of rgb images
- fixed makeARGB re-ordering of color channels
- fixed unicode usage in AxisItem tick strings
- fixed PlotCurveItem generating exceptions when data has length=0
- fixed ImageView.setImage only working once
- PolyLineROI.setPen() now changes the pen of its segments as well
- Prevent divide-by-zero in AxisItem
- Major speedup when using ScatterPlotItem in pxMode
- PlotCurveItem ignores clip-to-view when auto range is enabled
- FillBetweenItem now forces PlotCurveItem to generate path
- Fixed import errors and py3 issues in MultiPlotWidget
- Isosurface works for arrays with shapes > 255
- Fixed ImageItem exception building histogram when image has only one value
- Fixed MeshData exception caused when vertexes have no matching faces
- Fixed GLViewWidget exception handler
- Fixed unicode support in Dock
- Fixed PySide crash caused by emitting signal from GraphicsObject.itemChange
- Fixed possible infinite loop from FiniteCache
- Allow images with NaN in ImageView
- MeshData can generate edges from face-indexed vertexes
- Fixed multiprocess deadlocks on windows
- Fixed GLGridItem.setSize
- Fixed parametertree.Parameter.sigValueChanging
- Fixed AxisItem.__init__(showValues=False)
- Fixed TableWidget append / sort issues
- Fixed AxisItem not resizing text area when setTicks() is used
- Removed a few cyclic references
- Fixed Parameter 'readonly' option for bool, color, and text parameter types
- Fixed alpha on GLScatterPlotItem spots (formerly maxed out at alpha=200)
- Fixed a few bugs causing exit crashes
pyqtgraph-0.9.8 2013-11-24
API / behavior changes:
- ViewBox will auto-range when ImageItem changes shape
- AxisItem:
- Smarter about deciding which ticks get text
- AxisItem.setScale(float) has the usual behavior, but .setScale(None)
is deprecated. Instead use:
AxisItem.enableAutoSIPrefix(bool) to enable/disable SI prefix scaling
- Removed inf/nan checking from PlotDataItem and PlotCurveItem; improved
performance
New Features:
- Support for dynamic downsampling and view clipping in PlotDataItem and
PlotItem
- Added 'connect' option to PlotDataItem and PlotCurveItem to affect which
line segments are drawn
- Support for FFT with non-uniform time sampling
- Added BarGraphItem
- OpenGL:
- Added export methods to GLViewWidget
- Wireframe meshes
- GLLinePLotItem gets antialiasing, accepts array of colors
- GLMeshItem accepts ShaderProgram or name of predefined program
- Added GLBarGraphItem
- LegendItem:
- User-draggable
- Allow custom ItemSamples
- Symbol support
- Support for removing items
- ScatterPlotWidget, ColorMapWidget, and DataFilterWidget are stable
- TableWidget:
- Made numerically sortable
- Added setEditable method
- AxisItem ability to truncate axis lines at the last tick
- arrayToQPath() added 'finite' connection mode which omits non-finite
values from connections
- pg.plot() and pg.PlotWidget() now accept background argument
- Allow QtProcess without local QApplication
- Support for dashing in mkPen()
- Added Dock.close()
- Added style options to flowchart connection lines
- Added parentChanged and viewChanged hooks to GraphicsItem
- Bidirectional pseudoScatter for beeswarm plots
- Added exit() function for working around PyQt exit crashes
- Added PolylineROI.getArrayRegion()
Bugfixes:
- Many Python 3 compatibility fixes
- AxisItem:
- Correctly handles scaling with values that are not power of 10
- Did not update grid line length when plot stretches
- Fixed unicode handling in AxisItem label
- ViewBox:
- Overhauled to fix issues with aspect locking
- ViewBox context menu elements are no longer deleted when using
flowchart with pyside
- Fixed view linking with inverted y axis
- Prevent auto-range disabling when dragging with one mouse axis diabled
- Ignore inf and nan when auto-ranging
- ParameterTree:
- fixed TextParameter editor disappearing after focus lost
- ListParameter: allow unhashable types as parameter values.
- Exporting:
- ImageExporter correctly handles QBrush with style=NoBrush
- SVGExporter text, gradients working correctly
- SVGExporter correctly handles coordinate corrections for groups with
mixed elements
- ImageView:
- Fixed auto-levelling when normalization options change
- Added autoHistogramRange argument to setImage
- ScatterPlotItem:
- Fixed crashes caused by ScatterPlotItem
- Fixed antialiasing
- arrayToQPath performance improved for python 3
- Fixed makeQImage on many platforms (notably, on newer PyQt APIs)
- Removed unnecessary scipy imports for faster import
- GraphItem reports pixel margins to improve auto-range
- Add backport ordereddict to repository; old OrderedDict class is removed
- Corrected behavior of GraphicsView.setBackground
- Fixed PySide bug listing image formats
- Fixed QString -> str conversions in flowchart
- Unicode file name support when exporting
- Fixed MatplotlibWidget + PySide
- Fixed 3D view updating after every scene change
- Fixed handling of non-native dtypes when optimizing with weave
- RemoteGraphicsView fixed for PyQt 4.10, Python 3
- Fixed GLLinePlotItem line width option
- HistogramLUTWidget obeys default background color
- ScaleBar complete rewrite
- GraphItem obeys antialiasing flag
- Workaround for PySide/QByteArray memory leak
- Fixed example --test on windows, python3
- Luke finished dissertation
pyqtgraph-0.9.7 2013-02-25
Bugfixes:
- ArrowItem auto range now works correctly
- Dock drag/drop fixed on PySide
- Made padding behavior consistent across ViewBox methods
- Fixed MeshData / python2.6 incompatibility
- Fixed ScatterPlotItem.setSize and .setPointData
- Workaround for PySide bug; GradientEditor fixed
- Prefer initially selecting PlotItem rather then ViewBox when exporting
- Fixed python3 import error with flowcharts
Cleaned up examples, made code editable from example loader
Minor documentation updates
Features:
- Added GraphItem class for displaying networks/trees
- Added ColorMap class for mapping linear gradients and generating lookup
tables
(Provides gradient editor functionality without the GUI)
- Added ColorMapWidget for complex user-defined color mapping
- Added ScatterPlotWidget for exploring relationships in multi-column
tables
- Added ErrorBarItem
- SVG and image exporters can now copy to clipboard
- PlotItem gets new methods: addLine, setLabels, and listDataItems
- AxisItem gets setTickFont method
- Added functions.arrayToQPath, shared between GraphItem and PlotCurveItem
- Added gradient editors to parametertree
- Expanded documentation, added beginning of Qt crash course
Bugfixes:
- Fixed auto-ranging bugs: ViewBox now properly handles pixel-padding
around data items
- ViewBox ignores bounds of zoom-rect when auto ranging
- Fixed AxisItem artifacts
- Fixed GraphicsItem.pixelVector caching bugs and simplified workaround for
fp-precision errors
- LinearRegionItem.hoverEvent obeys 'movable' flag
- Fixed PlotDataItem nan masking bugs
- Workaround for segmentation fault in QPainter.drawPixmapFragments
- multiprocess and RemoteGraphicsView work correctly in Windows.
- Expanded python 3 support
- Silenced weave errors by default
- Fixed " 'win' in sys.platform " occurrences matching 'darwin' (duh)
- Workaround for change in QImage API (PyQt 4.9.6)
- Fixed axis ordering bug in GLScatterPlotItem
pyqtgraph-0.9.6 2013-02-14
Features:
- Added GraphItem class for displaying networks/trees
- Added ColorMap class for mapping linear gradients and generating lookup
tables
(Provides gradient editor functionality without the GUI)
- Added ColorMapWidget for complex user-defined color mapping
- Added ScatterPlotWidget for exploring relationships in multi-column
tables
- Added ErrorBarItem
- SVG and image exporters can now copy to clipboard
- PlotItem gets new methods: addLine, setLabels, and listDataItems
- AxisItem gets setTickFont method
- Added functions.arrayToQPath, shared between GraphItem and PlotCurveItem
- Added gradient editors to parametertree
- Expanded documentation, added beginning of Qt crash course
Bugfixes:
- Fixed auto-ranging bugs: ViewBox now properly handles pixel-padding
around data items
- ViewBox ignores bounds of zoom-rect when auto ranging
- Fixed AxisItem artifacts
- Fixed GraphicsItem.pixelVector caching bugs and simplified workaround for
fp-precision errors
- LinearRegionItem.hoverEvent obeys 'movable' flag
- Fixed PlotDataItem nan masking bugs
- Workaround for segmentation fault in QPainter.drawPixmapFragments
- multiprocess and RemoteGraphicsView work correctly in Windows.
- Expanded python 3 support
- Silenced weave errors by default
- Fixed " 'win' in sys.platform " occurrences matching 'darwin' (duh)
- Workaround for change in QImage API (PyQt 4.9.6)
- Fixed axis ordering bug in GLScatterPlotItem
Plotting performance improvements:
- AxisItem shows fewer tick levels in some cases.
- Lots of boundingRect and dataBounds caching
(improves ViewBox auto-range performance, especially with multiple plots)
- GraphicsScene avoids testing for hover intersections with non-hoverable
items
(much less slowdown when moving mouse over plots)
Improved performance for remote plotting:
- reduced cost of transferring arrays between processes (pickle is too
slow)
- avoid unnecessary synchronous calls
Added RemoteSpeedTest example
pyqtgraph-0.9.5 2013-01-11
Plotting performance improvements:
- AxisItem shows fewer tick levels in some cases.
- Lots of boundingRect and dataBounds caching
(improves ViewBox auto-range performance, especially with multiple plots)
- GraphicsScene avoids testing for hover intersections with non-hoverable
items
(much less slowdown when moving mouse over plots)
Improved performance for remote plotting:
- reduced cost of transferring arrays between processes (pickle is too
slow)
- avoid unnecessary synchronous calls
Added RemoteSpeedTest example
Documentation:
- Added documentation on export system
- Added flowchart documentation and custom node example
Bugfixes:
- prevent PlotCurveItem drawing shadow when unnecessary
- deprecated flowchart.Node.__getattr__ -- causes too many problems.
pyqtgraph-0.9.4 2013-01-07
Documentation:
- Added documentation on export system
- Added flowchart documentation and custom node example
Bugfixes:
- prevent PlotCurveItem drawing shadow when unnecessary
- deprecated flowchart.Node.__getattr__ -- causes too many problems.
Bugfix: prevent adding invalid entry to sys.path when running examples
pyqtgraph-0.9.3 2012-12-29
Bugfix: prevent adding invalid entry to sys.path when running examples
Bugfixes:
- SVG export text elements use generic font-family as backup, corrected item
transformation issues
- Fixed RuntimeError caused when clearing item hierarchies from ViewBox
- Fixed example execution bug
Packaging maintenance:
- Added missing files to MANIFEST.in, fixed setup.py package detection
- Added debian control files for building source packages
- Fixed version numbering in doc, __init__.py
pyqtgraph-0.9.2 2012-12-29
Bugfixes:
- SVG export text elements use generic font-family as backup, corrected item
transformation issues
- Fixed RuntimeError caused when clearing item hierarchies from ViewBox
- Fixed example execution bug
Packaging maintenance:
- Added missing files to MANIFEST.in, fixed setup.py package detection
- Added debian control files for building source packages
- Fixed version numbering in doc, __init__.py
pyqtgraph-0.9.1 2012-12-27
Removed incorrect version numbers
Correction to setup.py - use install_requires to inform pip of dependencies.
Fixed doc version (again)
Added debian control files
bugfixes for new package structure
pyqtgraph-0.9.0 2012-12-27
* Initial release.