Releases: PlotPyStack/PlotPy
v2.7.5
Version 2.7.5
🛠️ Bug fixes:
- Issue #44 - Incorrect calculation method for "∑(y)" in
CurveStatsTool
: replacedspt.trapezoid
withnp.sum
, which is more consistent with the summation operation - Fix
update_status
method in all cross-section tools (intensity profile tools):- Use
get_items
instead ofget_selected_items
to 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
guidata
dependency to V3.10.0 - Using new
guidata
translation utility based onbabel
v2.7.4
v2.7.3
In this release, test coverage is 80%.
🛠️ Bug fixes:
- Issue #40 - Z-axis logarithmic scale (
ZAxisLogTool
tool) 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 -
ValueError
when 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
canvasRect
type toQRectF
for intersection checks inCircleSVGShape
, following this bug fix inPythonQwt
V0.14.4 - Fixed regression with respect to
guiqwt
regarding plot items instantiation:guiqwt
was allowing to instantiate plot items without needing to create aQApplication
instance (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 aQApplication
instance - This has been fixed by removing the
QIcon
instantiation from the plot items constructors (call toQwtPlotItem.setIcon
method). Note that -in the meantime-QwtPlotItem.setIcon
andQwtPlotItem.icon
methods have also been removed in PythonQwt V0.14.3. Code relying on this feature should thus be updated to use the newget_icon_name
method 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
AnnotatedPolygon
annotation to items - Added
make.annotated_polygon
function toplotpy.builder
module - Customization of annotation information:
- Added
info_callback
argument to all annotation class constructors - Added
set_info_callback
method to all annotation classes - The
info_callback
is a function that takes the annotation object and returns a string with the information to display - Default
info_callback
is redirected to theget_infos
method of the annotation object (this makes the feature backward compatible)
- Added
🛠️ Bug fixes:
- Fixed
pydicom
support: usedcmread
instead ofread_file
to 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 -
OverflowError
with Contrast Adjustment panel for constant images - When updating image parameters (
ImageParam
) from the associated item object:- If
xmin
,xmax
,ymin
,ymax
attributes 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
_scaler
engine performance regression - PySide6 compatibility issues:
- Fixed deprecated call to
QMouseEvent
intests/unit/utils.py
- Added workaround for
QPolygonF
shape point slicing
- Fixed deprecated call to
- Issue #21 - PySide6 on Linux: segfault in test_colormap_editor.py
- Fixed
sliderMoved
signal connection inColorMapEditor
- Fixed
AssertionError
in test_rect_zoom.py (Linux, Python 3.12, PyQt6) - Fixed typing issues in
plotpy.events
module:- Event objects were not properly typed (
QtCore.QEvent
instead ofQtGui.QMouseEvent
) - Event position arguments were not properly typed (
QtCore.QPoint
instead 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
guidata
V3.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
size
toPlotDialog
,PlotWindow
classes, andmake.dialog
,make.window
functions 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
size
toPlotDialog
,PlotWindow
classes, andmake.dialog
,make.window
functions 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)