Releases: PlotPyStack/PlotPy
v2.7.5
Version 2.7.5
🛠️ Bug fixes:
- Issue #44 - Incorrect calculation method for "∑(y)" in
CurveStatsTool: replacedspt.trapezoidwithnp.sum, which is more consistent with the summation operation - Fix
update_statusmethod in all cross-section tools (intensity profile tools):- Use
get_itemsinstead ofget_selected_itemsto retrieve the image items - This allows the tools to work properly when no image item is selected, but there are image items in the plot
- This closes Issue #47 - Intensity profile tools do not work when no image item is selected
- Use
Other changes:
- Updated
guidatadependency to V3.10.0 - Using new
guidatatranslation utility based onbabel
v2.7.4
v2.7.3
In this release, test coverage is 80%.
🛠️ Bug fixes:
- Issue #40 - Z-axis logarithmic scale (
ZAxisLogTooltool) is not compatible with anti-aliasing interpolation - Fix intersection check for destination rectangle in
XYImageFilterItem - Issue #36 - Image items are not properly scaling along Y-axis with logarithmic scale:
- Actually, image items do not support non-linear scales (this is an historical limitation)
- This is not documented at all, so we've added an explicit warning: a red colored message is displayed at the center of the image frame when any non-linear scale is applied to either X or Y axis
- When dealing with non-linear scales, PlotPy provides an alternative solution: the user may rely on
XYImageItem(e.g. by usingmake.xyimage) as this item supports arbitrary X and Y pixel coordinates
- Issue #34 -
ValueErrorwhen trying to plot 2D histogram items withPyQt6
Other changes:
- Replace deprecated icon files with new SVG icons for selection tools
v2.7.2
v2.7.1
Version 2.7.1
🛠️ Bug fixes:
- Fixed update
canvasRecttype toQRectFfor intersection checks inCircleSVGShape, following this bug fix inPythonQwtV0.14.4 - Fixed regression with respect to
guiqwtregarding plot items instantiation:guiqwtwas allowing to instantiate plot items without needing to create aQApplicationinstance (no GUI event loop was required)- This was not the case with
plotpy, so that it was not possible -for example- to serialize/deserialize plot items to JSON without creating aQApplicationinstance - This has been fixed by removing the
QIconinstantiation from the plot items constructors (call toQwtPlotItem.setIconmethod). Note that -in the meantime-QwtPlotItem.setIconandQwtPlotItem.iconmethods have also been removed in PythonQwt V0.14.3. Code relying on this feature should thus be updated to use the newget_icon_namemethod instead, i.e.get_icon(item.get_icon_name())instead ofitem.icon().
- Issue #26 - Item list panel should not allow to select a non-selectable item
v2.7.0
Version 2.7.0
Supported versions of Python have been updated (drop support for Python 3.8, add support for Python 3.13):
- PlotPy < 2.7.0: Python 3.8, 3.9, 3.10, 3.11 and 3.12
- PlotPy >= 2.7.0: Python 3.9, 3.10, 3.11, 3.12 and 3.13
Other dependencies have been updated:
- Updated versions to those available at the time of the release of the oldest supported Python version (3.9)
- Exception: Cython 3.0 is required for Python 3.13
💥 New features / Enhancements:
- Added
AnnotatedPolygonannotation to items - Added
make.annotated_polygonfunction toplotpy.buildermodule - Customization of annotation information:
- Added
info_callbackargument to all annotation class constructors - Added
set_info_callbackmethod to all annotation classes - The
info_callbackis a function that takes the annotation object and returns a string with the information to display - Default
info_callbackis redirected to theget_infosmethod of the annotation object (this makes the feature backward compatible)
- Added
🛠️ Bug fixes:
- Fixed
pydicomsupport: usedcmreadinstead ofread_fileto read DICOM files
v2.6.3
⚡ Ready-to-use packages for all platforms are available on PyPI
🧯 In this release, test coverage is 79%.
🛠️ Bug fixes:
- Issue #25 -
OverflowErrorwith Contrast Adjustment panel for constant images - When updating image parameters (
ImageParam) from the associated item object:- If
xmin,xmax,ymin,ymaxattributes are not yet set (i.e.None), do not update them with the image data bounds - Previous behavior was to update them with the image data bounds, which was leading to breaking the automatic bounds update when the image data is updated
- If
- Issue #24 - Colormap: side effect on image axes when changing the colormap
- Issue #23 - Windows: Image
_scalerengine performance regression - PySide6 compatibility issues:
- Fixed deprecated call to
QMouseEventintests/unit/utils.py - Added workaround for
QPolygonFshape point slicing
- Fixed deprecated call to
- Issue #21 - PySide6 on Linux: segfault in test_colormap_editor.py
- Fixed
sliderMovedsignal connection inColorMapEditor - Fixed
AssertionErrorin test_rect_zoom.py (Linux, Python 3.12, PyQt6) - Fixed typing issues in
plotpy.eventsmodule:- Event objects were not properly typed (
QtCore.QEventinstead ofQtGui.QMouseEvent) - Event position arguments were not properly typed (
QtCore.QPointinstead ofQtCore.QPointF)
- Event objects were not properly typed (
- Fix NumPy
FutureWarning: Format strings passed to MaskedConstant are ignored [...]when displaying masked pixel coordinates
v2.6.2
⚡ Ready-to-use packages for all platforms are available on PyPI
💥 New features / Enhancements:
- Added Wheel packages for all major platforms on PyPI:
- Windows (32/64bits), MacOS, Linux
- Python 3.8 to 3.12
🛠️ Bug fixes:
- Fixed color theme support (dark/light mode), leveraging the new
guidataV3.6 feature
v2.6.1
ℹ️ Release V2.6.0 was a fugitive release that was replaced by V2.6.1 due to a critical bug in the segment line cross section computation for masked images.
💥 New features / Enhancements:
- Added support for color theme change at execution (relies on guidata V3.6)
- Changed strategy for default plot widget size:
- No default size is applied to the plot widget anymore (before, the default size was 800x600 pixels)
- Added parameter
sizetoPlotDialog,PlotWindowclasses, andmake.dialog,make.windowfunctions to set the initial size of the plot widget
🛠️ Bug fixes:
- Fixed segment line cross section computation for masked images:
- Avoided warning message when encountering masked values in the image data
- Replacing masked values by NaNs when computing the segment line cross section (as before, but explicitely, to avoid the warning message)
v2.6.0
💥 New features / Enhancements:
- Added support for color theme change at execution (relies on guidata V3.6)
- Changed strategy for default plot widget size:
- No default size is applied to the plot widget anymore (before, the default size was 800x600 pixels)
- Added parameter
sizetoPlotDialog,PlotWindowclasses, andmake.dialog,make.windowfunctions to set the initial size of the plot widget
🛠️ Bug fixes:
- Fixed segment line cross section computation for masked images:
- Avoided warning message when encountering masked values in the image data
- Replacing masked values by NaNs when computing the segment line cross section (as before, but explicitely, to avoid the warning message)