pyqtgraph-0.11.0 (in development) New Features: - #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) 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(). - #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 Bugfixes: - #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 - #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 - #758: Fix remote graphicsview "ValueError: mmap length is greater than file size" on OSX. Maintenance: - Lots of new unit tests - Lots of code cleanup - #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 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.