Releases: PlotPyStack/PlotPy
v2.4.0
Version 2.4.0
In this release, test coverage is 79%.
💥 New features / Enhancements:
- Contrast adjustment panel:
- New layout: the vertical toolbar (which was constrained in a small area on the
right side of the panel) is now a horizontal toolbar at the top of the panel,
beside the title - New "Set range" button: allows the user to set manually the minimum and maximum
values of the histogram range
- New layout: the vertical toolbar (which was constrained in a small area on the
- New Z-axis logarithmic scale feature:
- Added new tool
ZAxisLogToolto toggle the Z-axis logarithmic scale - The tool is registered by default in the plot widget, like the
ColormapTool - When enabled, the active image item is displayed after applying a base-10
logarithm to its pixel values
- Added new tool
- Curve statistics tool
CurveStatsToolis now customizable:- When adding the tool:
plot_widget.manager.add_tool(CurveStatsTool, labelfuncs=(...)) - Or after:
plot_widget.manager.get_tool(CurveStatsTool).set_labelfuncs(...) - The
labelfuncsparameter is a list of tuples(label, func)wherelabelis the
label displayed in the statistics table, andfuncis a function that takes the
curve data and returns the corresponding statistic value (see the documentation for
more details)
- When adding the tool:
- Image statistics tool
ImageStatsToolis now customizable:- When adding the tool:
plot_widget.manager.add_tool(ImageStatsTool, stats_func=...) - Or after:
plot_widget.manager.get_tool(ImageStatsTool).set_stats_func(...) - The
stats_funcparameter is a function that takes the image item and selected
rectangle coordinates, and returns a string with the statistics to display
- When adding the tool:
- New
SIG_AXIS_PARAMETERS_CHANGEDsignal emitted byBasePlotwhen the axes parameters
are changed (e.g. when the axes are inverted, or the scale is changed) - New "Reverse X axis" feature:
- Added new tool
ReverseXAxisToolto toggle the X-axis direction - The tool is registered by default in the plot widget, like its Y-axis counterpart
- Added new tool
🛠️ Bug fixes:
- Contrast adjustment panel:
- Fixed histogram update issues when no image was currently selected (even if the
an image was displayed and was selected before) - Histogram range was not updated when either the minimum or maximum value was set
using the "Minimum value" or "Maximum value" buttons (which have been renamed to
"Min." and "Max." in this release) - Histogram range was not updated when the "Set full range" button was clicked
- Fixed histogram update issues when no image was currently selected (even if the
- Image parameters: contrast range was not updated when the image Z axis bounds were
changed using the "Parameters" dialog
🧹 API cleanup:
- Deprecated
AnnotationParam.update_annotationmethod: useupdate_iteminstead - Deprecated
AxesShapeParam.update_axesmethod: useupdate_iteminstead - Deprecated
AxesParam.update_axesmethod: useupdate_iteminstead - Deprecated
ImageAxesParam.update_axesmethod: useupdate_iteminstead - Deprecated
LabelParam.update_labelmethod: useupdate_iteminstead - Deprecated
MarkerParam.update_markermethod: useupdate_iteminstead - Deprecated
RangeShapeParam.update_rangemethod: useupdate_iteminstead - Deprecated
ShapeParam.update_shapemethod: useupdate_iteminstead
v2.3.5
Version 2.3.5
This release is mainly intended to fix the Windows binary distribution, which was not
supporting NumPy 2.0.
🛠️ Bug fixes:
-
Moved back
conftest.pyto thetestsfolder (was in the root folder), so that
pytestcan be executed with proper configuration when running the test suite
from the installed package -
Removed benchmarks from automated test suite (not relevant for the end user):
addedplotpy-benchmarksscript to run the benchmarks
v2.3.4
Version 2.3.4
In this release, test coverage is 79%.
🛠️ Bug fixes:
-
Add support for NumPy 2.0:
- Updated build system to use NumPy 2.0 on Python > 3.8 and NumPy 1 on Python 3.8
- Use
numpy.asarrayinstead ofnumpy.array(..., copy=False) - Use
numpy.isininstead ofnumpy.in1d - Use
scipy.integrate.trapezoidinstead ofnumpy.trapz
-
ColorMapManager: fix segmentation fault with PySide6 on Linux
v2.3.3
Version 2.3.3
In this release, test coverage is 79%.
🛠️ Bug fixes:
- Moved up
LineCrossSectionimport for consistency with other cross-section panels - Unexpected behavior regarding
io.load_itemsandio.save_itemsfunctions:- Those functions were serializing and deserializing most of the parameters of the
plot items, but not their visibility state - This is now fixed: the visibility state of the plot items is now saved and restored
as expected
- Those functions were serializing and deserializing most of the parameters of the
ℹ️ Other changes:
- Explicitely exclude NumPy V2 from the dependencies (not compatible yet)
v2.3.2
Version 2.3.2
In this release, test coverage is 79%.
Version 2.3.2 fixes a blocking issue with the colormap editor unit test introduced
in version 2.3.1. The latter is a fugitive release that was not announced.
💥 New features / Enhancements:
- Colormap: added "Apply" button to the colormap manager
- Automated test suite:
- Test coverage has been improved from 75% to 79%
- The following features are now covered by unit tests:
- Panning with the mouse move events
- Zooming with the mouse wheel/move events
- Curve statistics tool
- Image rotation and translations via
SelectTool(simulating mouse events) - Masked areas in images and
ImageMaskTool LockTrImageTool- Cursor tools (
HCursorTool,VCursorTool,XCursorToolandHRangeTool) DisplayCoordsTool: simulation of 'Alt' and 'Ctrl' keys- Complete coverage for
MultiLineToolandFreeFormTool - Selection tools (
RectangularSelectionToolandSelectTool)
🛠️ Bug fixes:
- Image statistics tool: fixed "No available data" message when the tool rectangular
region top Y coordinate is above the image top Y coordinate - Label items (
LabelItem,LegendBoxItem,DataInfoLabel, ...) were not emitting
theSIG_ITEM_MOVEDsignal when moved interactively (with the mouse) if the item
anchor was attached to the canvas - Colormap: fixed context menu entry update (colormap icon was updated as expected, but
the colormap name was not) - Rotate/crop dialog: added missing toolbar on plot widget
- Flip/rotate dialog: added missing toolbar on plot widget
- Fixed issue with oblique averaged cross section computation (
AttributeErrorwhen
clicking on the empty cross section plot)
Version 2.3.0
In this release, test coverage is 75%.
💥 New features:
- Added support for colormap inversion:
- The user can now invert the colormap of an image item:
- From the image parameters dialog ("Invert colormap" checkbox)
- From the plot context menu (right-click on the image item)
BaseImageItem.set_color_mapmethod takes a newinvertparameter (which
defaults toNone, meaning that the behavior is unchanged)- New
ReverseColormapTool: registered by default in the plot widget, like the
ColormapTool(add the "Invert colormap" entry in the context menu of the image)
- The user can now invert the colormap of an image item:
🛠️ Bug fixes:
ErrorBarCurveItem: fixed NumPy deprecation warning
("Conversion of an array with ndim > 0 to a scalar is deprecated [...]")
ℹ️ Other changes:
- Image plot items deserialization:
- When an image plot item is deserialized, and needs to be reloaded from a file,
the file path is adapted to the current working directory if file is not found
(this is the legacy behavior). - An unnecessary call to
ImageIOHandler.adapt_pathmethod was removed from the
RawImageItem.deserializemethod: this issue has to be handled by the host
application, not by the PlotPy library. ImageIOHandler: removedadd_change_pathandadapt_pathmethods
- When an image plot item is deserialized, and needs to be reloaded from a file,
- Fix typo in
tests.features.test_colormap_editormodule: renamed function
test_colormap_managertotest_colormap_editor - Removed unnecessary
BaseImageItem.get_color_map_namemethod
v2.3.1
Version 2.3.1
In this release, test coverage is 79%.
💥 New features / Enhancements:
- Colormap: added "Apply" button to the colormap manager
- Automated test suite:
- Test coverage has been improved from 75% to 79%
- The following features are now covered by unit tests:
- Panning with the mouse move events
- Zooming with the mouse wheel/move events
- Curve statistics tool
- Image rotation and translations via
SelectTool(simulating mouse events) - Masked areas in images and
ImageMaskTool LockTrImageTool- Cursor tools (
HCursorTool,VCursorTool,XCursorToolandHRangeTool) DisplayCoordsTool: simulation of 'Alt' and 'Ctrl' keys- Complete coverage for
MultiLineToolandFreeFormTool - Selection tools (
RectangularSelectionToolandSelectTool)
🛠️ Bug fixes:
- Image statistics tool: fixed "No available data" message when the tool rectangular
region top Y coordinate is above the image top Y coordinate - Label items (
LabelItem,LegendBoxItem,DataInfoLabel, ...) were not emitting
theSIG_ITEM_MOVEDsignal when moved interactively (with the mouse) if the item
anchor was attached to the canvas - Colormap: fixed context menu entry update (colormap icon was updated as expected, but
the colormap name was not) - Rotate/crop dialog: added missing toolbar on plot widget
- Flip/rotate dialog: added missing toolbar on plot widget
- Fixed issue with oblique averaged cross section computation (
AttributeErrorwhen
clicking on the empty cross section plot)
Version 2.3.0
In this release, test coverage is 75%.
💥 New features:
- Added support for colormap inversion:
- The user can now invert the colormap of an image item:
- From the image parameters dialog ("Invert colormap" checkbox)
- From the plot context menu (right-click on the image item)
BaseImageItem.set_color_mapmethod takes a newinvertparameter (which
defaults toNone, meaning that the behavior is unchanged)- New
ReverseColormapTool: registered by default in the plot widget, like the
ColormapTool(add the "Invert colormap" entry in the context menu of the image)
- The user can now invert the colormap of an image item:
🛠️ Bug fixes:
ErrorBarCurveItem: fixed NumPy deprecation warning
("Conversion of an array with ndim > 0 to a scalar is deprecated [...]")
ℹ️ Other changes:
- Image plot items deserialization:
- When an image plot item is deserialized, and needs to be reloaded from a file,
the file path is adapted to the current working directory if file is not found
(this is the legacy behavior). - An unnecessary call to
ImageIOHandler.adapt_pathmethod was removed from the
RawImageItem.deserializemethod: this issue has to be handled by the host
application, not by the PlotPy library. ImageIOHandler: removedadd_change_pathandadapt_pathmethods
- When an image plot item is deserialized, and needs to be reloaded from a file,
- Fix typo in
tests.features.test_colormap_editormodule: renamed function
test_colormap_managertotest_colormap_editor - Removed unnecessary
BaseImageItem.get_color_map_namemethod
v2.3.0
In this release, test coverage is 75%.
💥 New features:
- Added support for colormap inversion:
- The user can now invert the colormap of an image item:
- From the image parameters dialog ("Invert colormap" checkbox)
- From the plot context menu (right-click on the image item)
BaseImageItem.set_color_mapmethod takes a newinvertparameter (which
defaults toNone, meaning that the behavior is unchanged)- New
ReverseColormapTool: registered by default in the plot widget, like the
ColormapTool(add the "Invert colormap" entry in the context menu of the image)
- The user can now invert the colormap of an image item:
🛠️ Bug fixes:
ErrorBarCurveItem: fixed NumPy deprecation warning
("Conversion of an array with ndim > 0 to a scalar is deprecated [...]")
ℹ️ Other changes:
- Image plot items deserialization:
- When an image plot item is deserialized, and needs to be reloaded from a file,
the file path is adapted to the current working directory if file is not found
(this is the legacy behavior). - An unnecessary call to
ImageIOHandler.adapt_pathmethod was removed from the
RawImageItem.deserializemethod: this issue has to be handled by the host
application, not by the PlotPy library. ImageIOHandler: removedadd_change_pathandadapt_pathmethods
- When an image plot item is deserialized, and needs to be reloaded from a file,
- Fix typo in
tests.features.test_colormap_editormodule: renamed function
test_colormap_managertotest_colormap_editor - Removed unnecessary
BaseImageItem.get_color_map_namemethod
v2.2.0
Version 2.2.0
In this release, test coverage is 75%.
New features:
- Added
SIG_ITEM_PARAMETERS_CHANGEDsignal toBasePlotclass:- This signal is emitted when the parameters of an item are changed using the
parameters dialog, or a specific tool (e.g. the colormap selection tool,
or the lock/unlock tool for image items) - This signal is emitted with the item as argument
- It is often emitted before the
SIG_ITEMS_CHANGEDsignal, which is global to all
items, but not necessarily. For example, when the colormap of an image is changed,
theSIG_ITEM_PARAMETERS_CHANGEDsignal is emitted for the image item, but the
SIG_ITEMS_CHANGEDsignal is not emitted.
- This signal is emitted when the parameters of an item are changed using the
- Added new colormap presets:
viridis,plasma,inferno,magma,cividisafmhotcoolwarm,bwr,seismicgnuplot2,CMRmap,rainbow,turbo
- Fixed all qualitative colormaps:
- All qualitative colormaps have been re-computed because they are not supposed to be
interpolated, which was the case and made them unusable - The qualitative colormaps are now usable and look like the ones from Matplotlib
- All qualitative colormaps have been re-computed because they are not supposed to be
- Colormap manager:
- Added a button to remove a custom colormap
- The preset colormaps and the currently selected colormap are read-only
- Added automatic unit tests for interactive tools:
AnnotatedCircleTool,AnnotatedEllipseTool,AnnotatedObliqueRectangleTool,
AnnotatedPointTool,AnnotatedRectangleTool,AnnotatedSegmentToolAverageCrossSectionTool,CrossSectionTool,ObliqueCrossSectionTool,
LineCrossSectionToolEditPointTool,SelectPointsTool,SelectPointToolAspectRatioTool,ImageStatsTool,SnapshotToolDisplayCoordsTool,RectZoomToolCircleTool,EllipseTool,FreeFormTool,MultiLineTool,
ObliqueRectangleTool,PointTool,RectangleTool,SegmentTool
- Internal package reorganization: moved icons to
plotpy/data/iconsfolder
v2.1.2
Version 2.1.2
New features:
- Added
Echelonalpha function to the image parameters:- The
Echelonalpha function is a step function, so that the alpha channel is
0 (full transparency) for the lowest value of the Lookup Table (LUT) and opaque
(transparency level set by theGlobal alphaparameter) for the other values - This feature is added to the other existing alpha functions:
Constant,Linear,
Sigmoid, andHyperbolic tangent
- The
Bug fixes:
- Compatibility with PythonQwt 0.12.
Version 2.1.1
Bug fixes:
- API breakage (unintentional) in V2.1.0:
- In V2.1.0,
mathutils.colormapmodule was renamed tomathutils.colormaps - Original
mathutils.colormapmodule naming is restored in this release
- In V2.1.0,
- Colormap selection from the toolbar was not triggering the
SIG_ITEMS_CHANGEDsignal
(every time an item parameter is changed, theSIG_ITEMS_CHANGEDsignal has to be
emitted by theBasePlotinstance to notify the application that the plot has been
modified)
Version 2.1.0
In this release, test coverage is 71%.
New features:
- Curve-related features:
- New
tools.SelectPointsToolto select graphically multiple points on a plot - New
tools.EditPointToolto edit graphically the position of a point on a plot - New downsampling feature:
- The user may enable it to reduce the number of points displayed on a curve
(e.g. when the curve is too dense) - The downsampling factor is adjustable
(default to 10, i.e. 1 point out of 10 is displayed) - The feature is disabled by default
- The user may enable it to reduce the number of points displayed on a curve
- New
- Image-related features:
- New "Colormap Manager":
- Before this release, the colormap selection was limited to presets (e.g. "gray",
"jet", etc.) - Now, the user can select a preset, edit it, or create a new one from scratch
thanks to the new "Colormap Manager" dialog
- Before this release, the colormap selection was limited to presets (e.g. "gray",
- New line cross section feature:
- Before this release, the cross section feature was limited to either horizontal
or vertical lines, or an average cross section withing a rectangle (aligned with
the axes, or oblique) - Now, the user can draw a line cross section with the new "Line Cross Section"
tool: the intensity profile associated to the drawn segment is displayed in a
dedicated plot
- Before this release, the cross section feature was limited to either horizontal
- New "Colormap Manager":
- Added support for gestures:
- Zooming in/out with the a two-finger pinch gesture
- Panning with a two-finger drag gesture
Documentation:
- Reorganized some sections
- Added sections on new features
Bug fixes:
- Fixed critical bug in oblique cross section feature (regression introduced in 2.0.0)
- Removed dependency to
pytest-qtfor the test suite (due to Qt6 compatibility issues)
v2.1.1
Version 2.1.1
Bug fixes:
- API breakage (unintentional) in V2.1.0:
- In V2.1.0,
mathutils.colormapmodule was renamed tomathutils.colormaps - Original
mathutils.colormapmodule naming is restored in this release
- In V2.1.0,
- Colormap selection from the toolbar was not triggering the
SIG_ITEMS_CHANGEDsignal
(every time an item parameter is changed, theSIG_ITEMS_CHANGEDsignal has to be
emitted by theBasePlotinstance to notify the application that the plot has been
modified)
Version 2.1.0
In this release, test coverage is 71%.
New features:
- Curve-related features:
- New
tools.SelectPointsToolto select graphically multiple points on a plot - New
tools.EditPointToolto edit graphically the position of a point on a plot - New downsampling feature:
- The user may enable it to reduce the number of points displayed on a curve
(e.g. when the curve is too dense) - The downsampling factor is adjustable
(default to 10, i.e. 1 point out of 10 is displayed) - The feature is disabled by default
- The user may enable it to reduce the number of points displayed on a curve
- New
- Image-related features:
- New "Colormap Manager":
- Before this release, the colormap selection was limited to presets (e.g. "gray",
"jet", etc.) - Now, the user can select a preset, edit it, or create a new one from scratch
thanks to the new "Colormap Manager" dialog
- Before this release, the colormap selection was limited to presets (e.g. "gray",
- New line cross section feature:
- Before this release, the cross section feature was limited to either horizontal
or vertical lines, or an average cross section withing a rectangle (aligned with
the axes, or oblique) - Now, the user can draw a line cross section with the new "Line Cross Section"
tool: the intensity profile associated to the drawn segment is displayed in a
dedicated plot
- Before this release, the cross section feature was limited to either horizontal
- New "Colormap Manager":
- Added support for gestures:
- Zooming in/out with the a two-finger pinch gesture
- Panning with a two-finger drag gesture
Documentation:
- Reorganized some sections
- Added sections on new features
Bug fixes:
- Fixed critical bug in oblique cross section feature (regression introduced in 2.0.0)
- Removed dependency to
pytest-qtfor the test suite (due to Qt6 compatibility issues)