PlotPy 2.8.4__tar.gz → 2.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plotpy-2.8.4 → plotpy-2.10.0}/PKG-INFO +7 -5
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/PKG-INFO +7 -5
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/SOURCES.txt +9 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/requires.txt +1 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/README.md +5 -3
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/items/overview.rst +7 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/items/reference.rst +6 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.07.md +3 -0
- plotpy-2.10.0/doc/release_notes/release_2.09.md +58 -0
- plotpy-2.10.0/doc/release_notes/release_2.10.md +34 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/requirements.rst +8 -2
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/__init__.py +1 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/curvemarker.py +71 -3
- plotpy-2.10.0/plotpy/data/icons/items/quiver.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/io.py +7 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/__init__.py +2 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/curve/errorbar.py +4 -4
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/__init__.py +1 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/base.py +49 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/misc.py +89 -6
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/standard.py +5 -28
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/transform.py +5 -1
- plotpy-2.10.0/plotpy/items/quiver.py +513 -0
- plotpy-2.10.0/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/mathutils/arrayfuncs.py +16 -4
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/mathutils/geometry.py +6 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/plot/base.py +58 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/plot/interactive.py +28 -4
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/axes.py +24 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/base.py +5 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/shape.py +14 -3
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_pyplot.py +7 -0
- plotpy-2.10.0/plotpy/tests/features/test_quiver.py +75 -0
- plotpy-2.10.0/plotpy/tests/unit/test_arrayfuncs.py +49 -0
- plotpy-2.10.0/plotpy/tests/unit/test_autoscale_strategy.py +116 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_geometry.py +14 -0
- plotpy-2.10.0/plotpy/tests/unit/test_image_log_set_data.py +70 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_io.py +30 -1
- plotpy-2.10.0/plotpy/tests/unit/test_snapshot_original_size.py +169 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_styles.py +24 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/vistools.py +2 -2
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/base.py +13 -7
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/curve.py +9 -9
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/image.py +13 -7
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/misc.py +34 -3
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/colormap/manager.py +47 -2
- {plotpy-2.8.4 → plotpy-2.10.0}/pyproject.toml +1 -1
- {plotpy-2.8.4 → plotpy-2.10.0}/requirements.txt +4 -3
- {plotpy-2.8.4 → plotpy-2.10.0}/src/histogram2d.c +249 -253
- {plotpy-2.8.4 → plotpy-2.10.0}/src/mandelbrot.c +248 -252
- plotpy-2.8.4/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/LICENSE +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/MANIFEST.in +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/dependency_links.txt +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/entry_points.txt +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/PlotPy.egg-info/top_level.txt +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/colormaps/README.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/colormaps/_cm.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/colormaps/colormap.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/colormaps/matplotlib_cmaps.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/_static/favicon.ico +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/conf.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/build.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/contribute.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/gitworkflow.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/guiqwt_to_plotpy.csv +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/guiqwt_to_plotpy.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/platforms.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/v1_to_guidata_v3.csv +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/v1_to_v2.csv +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/dev/v1_to_v2.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/colormapmanager.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/events.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/fit.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/fliprotate.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/imagefile.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/io.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/items/builder.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/items/examples.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/items/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/mathutils/colormaps.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/mathutils/geometry.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/mathutils/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/mathutils/scaler.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/panels/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/panels/overview.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/panels/reference.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/plot/examples.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/plot/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/plot/overview.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/plot/reference.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/pyplot.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/resizedialog.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/rotatecrop.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/selectdialog.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/signals.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/styles/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/styles/overview.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/styles/reference.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/tools/examples.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/tools/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/tools/overview.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/features/tools/reference.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/my_plot_manager.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/my_plot_manager.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/panorama-vertical.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/panorama-vertical.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/panorama.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/panorama.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/plot_widgets.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/plot_widgets.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/plotpy-banner.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/plotpy-vertical.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/__init__.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/computations.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/contrast.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/cross_section.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/cross_section2.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/dotarraydemo.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/filtertest1.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/filtertest2.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/fit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/get_point.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/hist2d.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/image_plot_tools.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/imagefilter.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/imagesuperp.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/imagexy.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/manager.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/mandelbrot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/pcolor.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/plot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/simple_dialog.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/simple_window.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/images/screenshots/transform.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/examples.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/installation.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/licenses.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/motivation.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/intro/overview.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/index.rst +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.00.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.01.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.02.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.03.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.04.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.05.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.06.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/doc/release_notes/release_2.08.md +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/annotation.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/label.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/plot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/builder/shape.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/config.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/constants.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/coords.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/colormaps_default.json +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/apply.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/arredit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/arrow_down.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/arrow_up.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/autorefresh.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/autoscale.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/axes.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/busy.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/cell_edit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/center.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/cmap_edit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/contrast.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/copy.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/copytoclipboard.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csapplylut.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csautoscale.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csection.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csection_a.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csection_line.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csection_oblique.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/csperimage.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curve_downsample.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvestyles/dots.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvestyles/lines.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvestyles/steps.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvestyles/sticks.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvetypes/xfy.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/curvetypes/yfx.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/delete.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/edit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/edit_point_selection.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/edit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/edit_add.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/editcopy.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/editdelete.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/editpaste.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/fileimport.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/filesave.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/imshow.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/insert.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/plot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/editors/rename.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/eliminate_outliers.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/eraser.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/exit.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/expander_down.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/expander_right.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/export.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/file.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/fileclose.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/fileimport.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filenew.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/fileopen.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filesave.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filesaveas.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/doc.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/gif.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/html.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/jpg.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/pdf.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/png.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/pps.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/ps.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/tar.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/tgz.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/tif.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/txt.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/xls.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/filetypes/zip.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/font.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/full_range.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/funct.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/hcursor.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/hflip.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/imagestats.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/item_list.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/annotation.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/curve.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/errorbar.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/grid.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/histogram.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/histogram2d.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/image.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/label.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/legend.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/items/polygonmap.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/magnifier.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/cross.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/diamond.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/ellipse.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/hexagon.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/point.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/square.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/star.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/triangle_d.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/triangle_l.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/triangle_r.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/triangle_u.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markers/xcross.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/mask/mask_circle.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/mask/mask_tool.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/max.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/min.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/move.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/multipoint_selection.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/none.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/not_found.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/on_curve.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/crosspattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/horpattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/nobrush.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/solidpattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/patterns/verpattern.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/plotpy-banner.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/plotpy-vertical.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/plotpy.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/point_selection.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/print.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/python.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/quickview.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/refresh.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/save_all.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/scales/lin_lin.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/scales/lin_log.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/scales/log_lin.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/scales/log_log.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/select.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/select_area.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/settings.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shape.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/circle.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/contour.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/gtaxes.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/marker.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/point_shape.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/polygon.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/polyline.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/rectangle.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/segment.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/xrange.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/shapes/yrange.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/snapshot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/styles/dash.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/styles/dashdot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/styles/dashdotdot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/styles/dot.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/styles/solid.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/trash.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/trimage_lock.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/trimage_unlock.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/vcursor.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/vflip.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/xcursor.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/xmax.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/xmin.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/data/icons/zlog.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/events.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_generic_range_slider.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_generic_slider.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_labeled.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_misc.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_range_style.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/external/sliders/_sliders.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/interfaces/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/interfaces/items.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/interfaces/panel.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/interfaces/plotmanager.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/annotation.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/contour.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/curve/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/curve/base.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/grid.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/histogram.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/filter.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/image/masked.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/label.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/polygonmap.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/axis.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/base.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/ellipse.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/marker.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/point.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/polygon.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/range.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/rectangle.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/segment.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/items/shape/svg.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/lutrange.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/mathutils/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/mathutils/colormap.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/mathutils/scaler.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/base.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/contrastadjustment.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/csection/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/csection/csitem.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/csection/csplot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/csection/cswidget.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/panels/itemlist.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/plot/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/plot/manager.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/plot/plotwidget.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/pyplot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/curve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/errorbar.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/histogram.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/label.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/styles/polygonmap.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/test_bigcurves.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/test_large_number_of_annotations.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/conftest.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/brain.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/brain_cylinder.png +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/datetime.txt +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/mr-brain.dcm +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/svg_target.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data/svg_tool.svg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/data.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_auto_curve_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_builder.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_colormap_editor.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_colormap_manager.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_computations.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_contrast.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_cursors.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_data_update_curve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_data_update_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_dicom_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_fit.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_fit_locked_params.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_image_coords.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_image_filter.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_image_superp.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_manager.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_no_auto_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_plot_log.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_plot_time.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_plot_types.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_plot_yreverse.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/features/test_resize.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_annotated_range.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_annotations.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_curves.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_curves_highdpi.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_hist2d.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_histogram.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_aspect_ratio.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_contour.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_masked.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_masked_xy.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_rgb.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_image_xy.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_mandelbrot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_pcolor.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_polygons.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_svgshapes.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_to_bins.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/items/test_transform.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_actiontool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_cross_section.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_cross_section_line.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_cyclic_import.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_downsample_curve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_edit_point.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_get_point.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_get_points.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_get_rectangle.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_get_segment.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_stats_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/tools/test_zaxislog.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_annotation_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_baseplot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_builder_annotation.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_builder_curve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_builder_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_builder_shape.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_contour.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_cursor_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_curve_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_datetime_axis.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_events.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_fontparam.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_line.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_manipulate_selection.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_mask_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_masked_dtype_change.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_multiline_tools.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_plot_curve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_plot_image.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_rect_zoom.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_seg_dist.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/test_tools_export.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/unit/utils.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_filtertest1.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_filtertest2.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_fliprotate.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_simple_window.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_syncplot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tests/widgets/test_theme.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/annotation.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/axes.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/cross_section.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/cursor.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/item.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/label.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/plot.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/selection.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/tools/shape.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/about.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/basetransform.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/colormap/__init__.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/colormap/_slider.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/colormap/editor.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/colormap/widget.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/fit.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/fliprotate.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/imagefile.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/qtdesigner.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/resizedialog.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/rotatecrop.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy/widgets/selectdialog.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/plotpy-tests.desktop +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/qtdesigner/plotplugin.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/setup.cfg +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/setup.py +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/arrays.hpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/debug.hpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/histogram2d.pyx +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/mandelbrot.pyx +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/pcolor.cpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/points.hpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/scaler.cpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/scaler.hpp +0 -0
- {plotpy-2.8.4 → plotpy-2.10.0}/src/traits.hpp +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.0
|
|
4
4
|
Summary: Curve and image plotting tools for Python/Qt applications
|
|
5
5
|
Author-email: Codra <p.raybaut@codra.fr>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -63,7 +63,7 @@ Requires-Python: <4,>=3.9
|
|
|
63
63
|
Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
|
65
65
|
Requires-Dist: guidata>=3.14.1
|
|
66
|
-
Requires-Dist: PythonQwt>=0.
|
|
66
|
+
Requires-Dist: PythonQwt>=0.16
|
|
67
67
|
Requires-Dist: numpy>=1.22
|
|
68
68
|
Requires-Dist: SciPy>=1.7.3
|
|
69
69
|
Requires-Dist: scikit-image>=0.19
|
|
@@ -114,6 +114,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
114
114
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
115
115
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
116
116
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
117
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
118
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
117
119
|
|
|
118
120
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
119
121
|
|
|
@@ -121,7 +123,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
121
123
|
|
|
122
124
|
Copyrights and licensing:
|
|
123
125
|
|
|
124
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
126
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
125
127
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
126
128
|
|
|
127
129
|
## Features
|
|
@@ -132,7 +134,7 @@ General plotting features:
|
|
|
132
134
|
|
|
133
135
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
134
136
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
135
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
137
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
136
138
|
|
|
137
139
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
138
140
|
|
|
@@ -141,7 +143,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
141
143
|
* Customizable aspect ratio for images
|
|
142
144
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
143
145
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
144
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
146
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
145
147
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
146
148
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
147
149
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.0
|
|
4
4
|
Summary: Curve and image plotting tools for Python/Qt applications
|
|
5
5
|
Author-email: Codra <p.raybaut@codra.fr>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -63,7 +63,7 @@ Requires-Python: <4,>=3.9
|
|
|
63
63
|
Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
|
65
65
|
Requires-Dist: guidata>=3.14.1
|
|
66
|
-
Requires-Dist: PythonQwt>=0.
|
|
66
|
+
Requires-Dist: PythonQwt>=0.16
|
|
67
67
|
Requires-Dist: numpy>=1.22
|
|
68
68
|
Requires-Dist: SciPy>=1.7.3
|
|
69
69
|
Requires-Dist: scikit-image>=0.19
|
|
@@ -114,6 +114,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
114
114
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
115
115
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
116
116
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
117
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
118
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
117
119
|
|
|
118
120
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
119
121
|
|
|
@@ -121,7 +123,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
121
123
|
|
|
122
124
|
Copyrights and licensing:
|
|
123
125
|
|
|
124
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
126
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
125
127
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
126
128
|
|
|
127
129
|
## Features
|
|
@@ -132,7 +134,7 @@ General plotting features:
|
|
|
132
134
|
|
|
133
135
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
134
136
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
135
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
137
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
136
138
|
|
|
137
139
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
138
140
|
|
|
@@ -141,7 +143,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
141
143
|
* Customizable aspect ratio for images
|
|
142
144
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
143
145
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
144
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
146
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
145
147
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
146
148
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
147
149
|
|
|
@@ -116,6 +116,8 @@ doc/release_notes/release_2.05.md
|
|
|
116
116
|
doc/release_notes/release_2.06.md
|
|
117
117
|
doc/release_notes/release_2.07.md
|
|
118
118
|
doc/release_notes/release_2.08.md
|
|
119
|
+
doc/release_notes/release_2.09.md
|
|
120
|
+
doc/release_notes/release_2.10.md
|
|
119
121
|
plotpy/__init__.py
|
|
120
122
|
plotpy/config.py
|
|
121
123
|
plotpy/constants.py
|
|
@@ -249,6 +251,7 @@ plotpy/data/icons/items/image.png
|
|
|
249
251
|
plotpy/data/icons/items/label.png
|
|
250
252
|
plotpy/data/icons/items/legend.png
|
|
251
253
|
plotpy/data/icons/items/polygonmap.png
|
|
254
|
+
plotpy/data/icons/items/quiver.png
|
|
252
255
|
plotpy/data/icons/markers/cross.png
|
|
253
256
|
plotpy/data/icons/markers/diamond.png
|
|
254
257
|
plotpy/data/icons/markers/ellipse.png
|
|
@@ -325,6 +328,7 @@ plotpy/items/grid.py
|
|
|
325
328
|
plotpy/items/histogram.py
|
|
326
329
|
plotpy/items/label.py
|
|
327
330
|
plotpy/items/polygonmap.py
|
|
331
|
+
plotpy/items/quiver.py
|
|
328
332
|
plotpy/items/curve/__init__.py
|
|
329
333
|
plotpy/items/curve/base.py
|
|
330
334
|
plotpy/items/curve/errorbar.py
|
|
@@ -418,6 +422,7 @@ plotpy/tests/features/test_plot_time.py
|
|
|
418
422
|
plotpy/tests/features/test_plot_types.py
|
|
419
423
|
plotpy/tests/features/test_plot_yreverse.py
|
|
420
424
|
plotpy/tests/features/test_pyplot.py
|
|
425
|
+
plotpy/tests/features/test_quiver.py
|
|
421
426
|
plotpy/tests/features/test_resize.py
|
|
422
427
|
plotpy/tests/items/__init__.py
|
|
423
428
|
plotpy/tests/items/test_annotated_range.py
|
|
@@ -458,7 +463,9 @@ plotpy/tests/tools/test_stats_tools.py
|
|
|
458
463
|
plotpy/tests/tools/test_zaxislog.py
|
|
459
464
|
plotpy/tests/unit/__init__.py
|
|
460
465
|
plotpy/tests/unit/test_annotation_tools.py
|
|
466
|
+
plotpy/tests/unit/test_arrayfuncs.py
|
|
461
467
|
plotpy/tests/unit/test_aspect_ratio_tool.py
|
|
468
|
+
plotpy/tests/unit/test_autoscale_strategy.py
|
|
462
469
|
plotpy/tests/unit/test_baseplot.py
|
|
463
470
|
plotpy/tests/unit/test_builder_annotation.py
|
|
464
471
|
plotpy/tests/unit/test_builder_curve.py
|
|
@@ -472,6 +479,7 @@ plotpy/tests/unit/test_display_coords_tool.py
|
|
|
472
479
|
plotpy/tests/unit/test_events.py
|
|
473
480
|
plotpy/tests/unit/test_fontparam.py
|
|
474
481
|
plotpy/tests/unit/test_geometry.py
|
|
482
|
+
plotpy/tests/unit/test_image_log_set_data.py
|
|
475
483
|
plotpy/tests/unit/test_io.py
|
|
476
484
|
plotpy/tests/unit/test_line.py
|
|
477
485
|
plotpy/tests/unit/test_line_cross_section_tool.py
|
|
@@ -484,6 +492,7 @@ plotpy/tests/unit/test_plot_curve.py
|
|
|
484
492
|
plotpy/tests/unit/test_plot_image.py
|
|
485
493
|
plotpy/tests/unit/test_rect_zoom.py
|
|
486
494
|
plotpy/tests/unit/test_seg_dist.py
|
|
495
|
+
plotpy/tests/unit/test_snapshot_original_size.py
|
|
487
496
|
plotpy/tests/unit/test_styles.py
|
|
488
497
|
plotpy/tests/unit/test_tools_export.py
|
|
489
498
|
plotpy/tests/unit/utils.py
|
|
@@ -20,6 +20,8 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
|
|
|
20
20
|
* [guidata](https://pypi.python.org/pypi/guidata) automatic GUI generation library
|
|
21
21
|
* [PythonQwt](https://pypi.python.org/pypi/PythonQwt) plotting widgets library
|
|
22
22
|
* [NumPy](https://pypi.python.org/pypi/NumPy) and [SciPy](https://pypi.python.org/pypi/SciPy) scientific computing libraries
|
|
23
|
+
* [scikit-image](https://pypi.python.org/pypi/scikit-image) image processing library
|
|
24
|
+
* [Pillow](https://pypi.python.org/pypi/Pillow) imaging library and [tifffile](https://pypi.python.org/pypi/tifffile) TIFF I/O library
|
|
23
25
|
|
|
24
26
|
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
|
|
25
27
|
|
|
@@ -27,7 +29,7 @@ See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details o
|
|
|
27
29
|
|
|
28
30
|
Copyrights and licensing:
|
|
29
31
|
|
|
30
|
-
* Copyright © 2023 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
32
|
+
* Copyright © 2023-2026 [CEA](https://www.cea.fr), [Codra](https://codra.net/), [Pierre Raybaut](https://github.com/PierreRaybaut).
|
|
31
33
|
* Licensed under the terms of the BSD 3-Clause (see [LICENSE](https://github.com/PlotPyStack/PlotPy/blob/master/LICENSE)).
|
|
32
34
|
|
|
33
35
|
## Features
|
|
@@ -38,7 +40,7 @@ General plotting features:
|
|
|
38
40
|
|
|
39
41
|
* Ready-to-use [plot widgets and dialog boxes](https://plotpy.readthedocs.io/en/latest/features/plot/index.html)
|
|
40
42
|
* [pyplot](https://plotpy.readthedocs.io/en/latest/features/pyplot.html): interactive plotting widgets, equivalent to `matplotlib.pyplot`, at least for the implemented functions
|
|
41
|
-
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, labels, shapes, annotations, ...
|
|
43
|
+
* Supported [plot items](https://plotpy.readthedocs.io/en/latest/features/items/index.html): curves, images, contours, histograms, vector fields (quiver plots), labels, shapes, annotations, ...
|
|
42
44
|
|
|
43
45
|
Interactive features (i.e. not only programmatic plotting but also with mouse/keyboard):
|
|
44
46
|
|
|
@@ -47,7 +49,7 @@ Interactive features (i.e. not only programmatic plotting but also with mouse/ke
|
|
|
47
49
|
* Customizable aspect ratio for images
|
|
48
50
|
* Tons of ready-to-use tools: plot canvas export to image file, image snapshot, interval selection, image rectangular filter, etc.
|
|
49
51
|
* Curve fitting tool with automatic fit, manual fit with sliders, ...
|
|
50
|
-
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, ...
|
|
52
|
+
* Contrast adjustment panel for images: select the LUT by moving a range selection object on the image levels histogram, eliminate outliers, invert colormaps, ...
|
|
51
53
|
* X-axis and Y-axis cross-sections: support for multiple images, average cross-section tool on a rectangular area, ...
|
|
52
54
|
* Apply any affine transform to displayed images in real-time (rotation, magnification, translation, horizontal/vertical flip, ...)
|
|
53
55
|
|
|
@@ -41,6 +41,13 @@ The following image items are available:
|
|
|
41
41
|
* :py:func:`.get_plot_qrect`
|
|
42
42
|
* :py:func:`.get_image_from_plot`
|
|
43
43
|
|
|
44
|
+
Flow fields
|
|
45
|
+
^^^^^^^^^^^
|
|
46
|
+
|
|
47
|
+
The following flow field items are available:
|
|
48
|
+
|
|
49
|
+
* :py:class:`.QuiverItem`: a flow field item with arrows
|
|
50
|
+
|
|
44
51
|
Grid
|
|
45
52
|
^^^^
|
|
46
53
|
|
|
@@ -14,6 +14,9 @@ Other changes:
|
|
|
14
14
|
|
|
15
15
|
* Updated `guidata` dependency to V3.10.0
|
|
16
16
|
* Using new `guidata` translation utility based on `babel`
|
|
17
|
+
* Development environment:
|
|
18
|
+
* Historically, the default Python interpreter for development was handled by the `PPSTACK_PYTHONEXE` environment variable, for example to run VS Code tasks with the correct Python interpreter.
|
|
19
|
+
* This approach has been replaced by relying on the virtual environment management as provided by VS Code itself, which is more standard and compatible with various tools.
|
|
17
20
|
|
|
18
21
|
## PlotPy Version 2.7.4 (2025-04-26) ##
|
|
19
22
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Version 2.9 #
|
|
2
|
+
|
|
3
|
+
## PlotPy Version 2.9.0 ##
|
|
4
|
+
|
|
5
|
+
💥 New features:
|
|
6
|
+
|
|
7
|
+
* Added `QuiverItem` for displaying 2D vector fields (quiver plots), similar to
|
|
8
|
+
Matplotlib's `quiver`. This closes
|
|
9
|
+
[Issue #54](https://github.com/PlotPyStack/PlotPy/issues/54):
|
|
10
|
+
* New `QuiverItem` plot item class supporting X, Y, U, V arrays (1D or 2D)
|
|
11
|
+
* Auto-meshgrid expansion when X, Y are 1D and U, V are 2D
|
|
12
|
+
* Configurable arrow scale, head size, and color
|
|
13
|
+
* New `make.quiver()` builder method for easy item creation
|
|
14
|
+
* New `quiver()` function in the interactive plotting interface (`plotpy.pyplot`)
|
|
15
|
+
* Integrated with plot autoscale (initial zoom and middle-click reset)
|
|
16
|
+
* Item icon displayed in the item list widget
|
|
17
|
+
* Added "Invert colormap" checkbox directly in the Colormap Manager dialog. This
|
|
18
|
+
closes [Issue #53](https://github.com/PlotPyStack/PlotPy/issues/53):
|
|
19
|
+
* Reflects the current inversion state when the dialog is opened
|
|
20
|
+
* Allows toggling inversion from the colormap selection widget
|
|
21
|
+
* Updates the colormap preview in real-time when toggled
|
|
22
|
+
* Inversion is treated as a display parameter, independent of the colormap
|
|
23
|
+
definition (toggling does not mark the colormap as having unsaved changes)
|
|
24
|
+
|
|
25
|
+
🛠️ Bug fixes:
|
|
26
|
+
|
|
27
|
+
* Fixed marker style parameters being overwritten when updating selected markers:
|
|
28
|
+
* `MarkerParam.update_param` now correctly reads back the selected or unselected
|
|
29
|
+
visual state into the matching parameter set, instead of overwriting the base
|
|
30
|
+
(normal) style with the selected style
|
|
31
|
+
* This preserves distinct normal and selected appearance for markers
|
|
32
|
+
* Fixed error-bar curve cursor snapping: clicking near an error-bar bound on an
|
|
33
|
+
`ErrorBarCurveItem` now correctly returns the closest bar end coordinate.
|
|
34
|
+
Previously a typo (`abs(y - y)` / `abs(x - x)` instead of `abs(y - yi)` /
|
|
35
|
+
`abs(x - xi)`) made the snap-to-bound branches dead code, so the closest
|
|
36
|
+
coordinate was always the central curve point regardless of cursor position
|
|
37
|
+
* Fixed image export via `Figure.print_` (`plotpy.pyplot`) leaking the underlying
|
|
38
|
+
`QPainter`: the painter is now always released, even when an axis fails to
|
|
39
|
+
render. This avoids "QPainter::begin: A paint device can only be painted by
|
|
40
|
+
one painter at a time" warnings, GDI/GL resource leaks, and truncated output
|
|
41
|
+
files on subsequent paints
|
|
42
|
+
* Fixed `vector_projection` raising a division-by-zero warning and returning NaN
|
|
43
|
+
coordinates when the two reference points A and B coincided. The function now
|
|
44
|
+
detects the degenerate zero-length AB vector and returns point B
|
|
45
|
+
* Fixed `scale_data_to_dtype` (`plotpy.io`) producing NaN values when the input
|
|
46
|
+
array was constant (`dmax == dmin`). The function now returns a finite
|
|
47
|
+
constant array set to the target dtype's minimum value instead of dividing by
|
|
48
|
+
zero
|
|
49
|
+
* Fixed `get_nan_min` / `get_nan_max` (`plotpy.mathutils.arrayfuncs`) raising
|
|
50
|
+
`ValueError` on empty arrays and emitting `RuntimeWarning` on all-NaN inputs.
|
|
51
|
+
Both helpers now return NaN for empty or fully-NaN arrays without warnings
|
|
52
|
+
|
|
53
|
+
🔧 Other changes:
|
|
54
|
+
|
|
55
|
+
* CI: gate PyPI deployment on test suite passing
|
|
56
|
+
* Development environment: improved `scripts/run_with_env.py` to support multiple
|
|
57
|
+
Python environment contexts (WinPython, venv, etc.) with legacy support for the
|
|
58
|
+
`WINPYDIRBASE` environment variable
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Version 2.10 #
|
|
2
|
+
|
|
3
|
+
## PlotPy Version 2.10.0 ##
|
|
4
|
+
|
|
5
|
+
✨ New features:
|
|
6
|
+
|
|
7
|
+
* **Per-axis autoscale strategy**: Added configurable autoscale behavior for each axis via the axis parameters dialog. Three strategies are available: *Auto* (default — compute bounds from items), *Fixed range* (apply user-defined Min/Max values) and *Disabled* (leave the axis untouched on autoscale). New API: `BasePlot.set_axis_autoscale_strategy()` / `BasePlot.get_axis_autoscale_strategy()` (closes [Issue #63](https://github.com/PlotPyStack/PlotPy/issues/63), partial)
|
|
8
|
+
* **Symbol border width**: Added an `edgewidth` parameter to `SymbolParam` for customizable marker border thickness — previously the border was always 1 pixel wide
|
|
9
|
+
|
|
10
|
+
🛠️ Bug fixes:
|
|
11
|
+
|
|
12
|
+
* **Rectangular snapshot tool** — Fixed the "Original size" computation (closes [Issue #57](https://github.com/PlotPyStack/PlotPy/issues/57)):
|
|
13
|
+
* The preview no longer displays negative dimensions when the X or Y axis is
|
|
14
|
+
reversed
|
|
15
|
+
* The "Original size" is now computed from pixel coordinates instead of axis
|
|
16
|
+
units, so it is correct for `XYImageItem` (and any item with non-uniform
|
|
17
|
+
axis scaling) regardless of axis orientation
|
|
18
|
+
* The `ValueError` raised by the resize dialog when the selection produced
|
|
19
|
+
negative dimensions on a reversed axis is gone
|
|
20
|
+
* Selecting a region larger than the plotted image now reports the same
|
|
21
|
+
native pixel resolution for both `ImageItem` and `XYImageItem`
|
|
22
|
+
(previously `XYImageItem` reported ``shape - 1`` while `ImageItem`
|
|
23
|
+
reported the full oversized resolution): exporting at "Original size"
|
|
24
|
+
now consistently preserves the source pixel density and avoids
|
|
25
|
+
upsampling, regardless of the item type
|
|
26
|
+
* **Snapshot tool cursor** — Fixed the mouse cursor remaining stuck as a cross (`+`) outside the plot canvas (axes, toolbar) after using the snapshot tool. The modal dialogs are now opened after Qt has released the implicit pointer grab, so the cursor is correctly restored (closes [Issue #58](https://github.com/PlotPyStack/PlotPy/issues/58))
|
|
27
|
+
* **Z-axis log tool** — Fixed the `ZAxisLogTool` being always disabled for non-`ImageItem` image types (`XYImageItem`, `MaskedImageItem`, `MaskedXYImageItem`, `TrImageItem`, `RGBImageItem`). The Z-axis log API (`get_zaxis_log_state` / `set_zaxis_log_state`) was moved from `ImageItem` up to `BaseImageItem` so all image item types support it. This notably fixes the tool being permanently greyed out in DataLab's image panel (closes [Issue #59](https://github.com/PlotPyStack/PlotPy/issues/59))
|
|
28
|
+
* **Z-axis log data update** — Fixed image data not being recomputed when calling `set_data()` while Z-axis log scale is active — the log-transformed data is now refreshed and the LUT range preserved in log mode
|
|
29
|
+
* **`YRangeCursorTool`** — Fixed incorrect inequality display and negative ∆y when the Y-range cursors are inverted (dragging the top cursor below the bottom one). Values are now sorted and ∆y is always positive (closes [Issue #55](https://github.com/PlotPyStack/PlotPy/issues/55))
|
|
30
|
+
* **`CurveStatsTool`** — Replaced `min`/`max`/`mean`/`std`/`sum` with their NaN-safe equivalents (`nanmin`, `nanmax`, `nanmean`, `nanstd`, `nansum`) so that signal statistics are computed correctly when the data contains NaN values
|
|
31
|
+
|
|
32
|
+
⚙️ Dependencies:
|
|
33
|
+
|
|
34
|
+
* Bumped minimum PythonQwt version from 0.15 to **0.16** to benefit from the Qt6 performance optimizations (closes [Issue #22](https://github.com/PlotPyStack/PlotPy/issues/22) — see [PythonQwt#93](https://github.com/PlotPyStack/PythonQwt/issues/93) for the full optimization log)
|
|
@@ -11,10 +11,10 @@ The `PlotPy` package requires the following Python modules:
|
|
|
11
11
|
- >=3.9, <4
|
|
12
12
|
- Python programming language
|
|
13
13
|
* - guidata
|
|
14
|
-
- >= 3.
|
|
14
|
+
- >= 3.14.1
|
|
15
15
|
- Automatic GUI generation for easy dataset editing and display
|
|
16
16
|
* - PythonQwt
|
|
17
|
-
- >= 0.
|
|
17
|
+
- >= 0.16
|
|
18
18
|
- Qt plotting widgets for Python
|
|
19
19
|
* - numpy
|
|
20
20
|
- >= 1.22
|
|
@@ -75,6 +75,12 @@ Optional modules for development:
|
|
|
75
75
|
* - pre-commit
|
|
76
76
|
-
|
|
77
77
|
- A framework for managing and maintaining multi-language pre-commit hooks.
|
|
78
|
+
* - setuptools
|
|
79
|
+
-
|
|
80
|
+
- Most extensible Python build backend with support for C/C++ extension modules
|
|
81
|
+
* - wheel
|
|
82
|
+
-
|
|
83
|
+
- Command line tool for manipulating wheel files
|
|
78
84
|
|
|
79
85
|
Optional modules for building the documentation:
|
|
80
86
|
|
|
@@ -20,7 +20,7 @@ External resources:
|
|
|
20
20
|
.. _GitHub: https://github.com/PierreRaybaut/plotpy
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
__version__ = "2.
|
|
23
|
+
__version__ = "2.10.0"
|
|
24
24
|
__VERSION__ = tuple([int(number) for number in __version__.split(".")])
|
|
25
25
|
|
|
26
26
|
# --- Important note: DATAPATH and LOCALEPATH are used by guidata.configtools
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
# pylint: disable=C0103
|
|
7
7
|
|
|
8
8
|
"""
|
|
9
|
-
Curve/cursor/marker Item builder
|
|
10
|
-
|
|
9
|
+
Curve/cursor/marker/... Item builder
|
|
10
|
+
------------------------------------
|
|
11
11
|
|
|
12
12
|
This module provides a set of factory functions to simplify the creation of
|
|
13
|
-
curve, cursor and
|
|
13
|
+
curve, cursor, marker, histogram and flow field items.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
# Note: when adding method to builder classes, please do not forget to update the
|
|
@@ -32,6 +32,7 @@ from plotpy.items import (
|
|
|
32
32
|
ErrorBarCurveItem,
|
|
33
33
|
HistogramItem,
|
|
34
34
|
Marker,
|
|
35
|
+
QuiverItem,
|
|
35
36
|
XRangeSelection,
|
|
36
37
|
YRangeSelection,
|
|
37
38
|
)
|
|
@@ -1023,3 +1024,70 @@ class CurveMarkerCursorBuilder:
|
|
|
1023
1024
|
marker.set_movable(False)
|
|
1024
1025
|
marker.set_resizable(False)
|
|
1025
1026
|
return marker
|
|
1027
|
+
|
|
1028
|
+
def quiver(
|
|
1029
|
+
self,
|
|
1030
|
+
x: numpy.ndarray,
|
|
1031
|
+
y: numpy.ndarray,
|
|
1032
|
+
u: numpy.ndarray,
|
|
1033
|
+
v: numpy.ndarray,
|
|
1034
|
+
title: str = "",
|
|
1035
|
+
color: str | None = None,
|
|
1036
|
+
arrow_scale: float = 30.0,
|
|
1037
|
+
arrow_head_size: float = 6.0,
|
|
1038
|
+
headwidth: float = 0.7,
|
|
1039
|
+
xaxis: str = "bottom",
|
|
1040
|
+
yaxis: str = "left",
|
|
1041
|
+
) -> QuiverItem:
|
|
1042
|
+
"""Make a quiver (vector field) `plot item`
|
|
1043
|
+
|
|
1044
|
+
Displays arrows at grid positions (x, y) with direction and magnitude
|
|
1045
|
+
defined by (u, v) components, similar to Matplotlib's ``quiver``.
|
|
1046
|
+
|
|
1047
|
+
Args:
|
|
1048
|
+
x: 1D or 2D array of arrow X positions
|
|
1049
|
+
y: 1D or 2D array of arrow Y positions
|
|
1050
|
+
u: 1D or 2D array of arrow X components
|
|
1051
|
+
v: 1D or 2D array of arrow Y components
|
|
1052
|
+
title: plot item title. Default is ''
|
|
1053
|
+
color: arrow color name. Default is None (black)
|
|
1054
|
+
arrow_scale: scale factor for arrow length in pixels.
|
|
1055
|
+
Default is 30.0. Larger values produce longer arrows.
|
|
1056
|
+
arrow_head_size: size of arrow heads in pixels.
|
|
1057
|
+
Default is 6.0
|
|
1058
|
+
headwidth: arrow head width as multiple of head size.
|
|
1059
|
+
Default is 0.7
|
|
1060
|
+
xaxis: x axis name. Default is 'bottom'
|
|
1061
|
+
yaxis: y axis name. Default is 'left'
|
|
1062
|
+
|
|
1063
|
+
Returns:
|
|
1064
|
+
:py:class:`.QuiverItem` object
|
|
1065
|
+
|
|
1066
|
+
Example::
|
|
1067
|
+
|
|
1068
|
+
import numpy as np
|
|
1069
|
+
x = np.linspace(-2, 2, 10)
|
|
1070
|
+
y = np.linspace(-2, 2, 10)
|
|
1071
|
+
X, Y = np.meshgrid(x, y)
|
|
1072
|
+
U, V = -Y, X # Rotational field
|
|
1073
|
+
quiver(X, Y, U, V, title="Rotation", color="blue")
|
|
1074
|
+
"""
|
|
1075
|
+
if color is None:
|
|
1076
|
+
color = "black"
|
|
1077
|
+
item = QuiverItem(
|
|
1078
|
+
x,
|
|
1079
|
+
y,
|
|
1080
|
+
u,
|
|
1081
|
+
v,
|
|
1082
|
+
color=color,
|
|
1083
|
+
arrow_scale=arrow_scale,
|
|
1084
|
+
arrow_head_size=arrow_head_size,
|
|
1085
|
+
headwidth=headwidth,
|
|
1086
|
+
)
|
|
1087
|
+
if title:
|
|
1088
|
+
item.setTitle(title)
|
|
1089
|
+
else:
|
|
1090
|
+
item.setTitle(_("Vector field"))
|
|
1091
|
+
item.setXAxis(BasePlot.AXIS_NAMES[xaxis])
|
|
1092
|
+
item.setYAxis(BasePlot.AXIS_NAMES[yaxis])
|
|
1093
|
+
return item
|
|
Binary file
|
|
@@ -64,6 +64,12 @@ def scale_data_to_dtype(data: np.ndarray, dtype: np.dtype) -> np.ndarray:
|
|
|
64
64
|
info = np.iinfo(dtype)
|
|
65
65
|
dmin = data.min()
|
|
66
66
|
dmax = data.max()
|
|
67
|
+
if dmax == dmin:
|
|
68
|
+
# Constant data: avoid 0/0 division (which would yield NaN). Map every
|
|
69
|
+
# sample to the dtype range minimum so downstream image rendering keeps
|
|
70
|
+
# working instead of seeing NaNs.
|
|
71
|
+
data = np.full_like(data, float(info.min))
|
|
72
|
+
return np.array(data, dtype)
|
|
67
73
|
data -= dmin
|
|
68
74
|
data = data * float(info.max - info.min) / (dmax - dmin)
|
|
69
75
|
data = data + float(info.min)
|
|
@@ -594,6 +600,7 @@ register_serializable_items(
|
|
|
594
600
|
"plotpy.items",
|
|
595
601
|
[
|
|
596
602
|
"CurveItem",
|
|
603
|
+
"QuiverItem",
|
|
597
604
|
"PolygonMapItem",
|
|
598
605
|
"ErrorBarCurveItem",
|
|
599
606
|
"RawImageItem",
|
|
@@ -33,6 +33,7 @@ from .image import (
|
|
|
33
33
|
XYImageFilterItem,
|
|
34
34
|
XYImageItem,
|
|
35
35
|
assemble_imageitems,
|
|
36
|
+
compute_image_items_original_size,
|
|
36
37
|
compute_trimageitems_original_size,
|
|
37
38
|
get_image_from_plot,
|
|
38
39
|
get_image_from_qrect,
|
|
@@ -55,6 +56,7 @@ from .label import (
|
|
|
55
56
|
SelectedLegendBoxItem,
|
|
56
57
|
)
|
|
57
58
|
from .polygonmap import PolygonMapItem
|
|
59
|
+
from .quiver import QuiverItem
|
|
58
60
|
from .shape import (
|
|
59
61
|
AbstractShape,
|
|
60
62
|
Axes,
|
|
@@ -221,13 +221,13 @@ class ErrorBarCurveItem(CurveItem):
|
|
|
221
221
|
xi = self.dsamp(self._x)[i]
|
|
222
222
|
yi = self.dsamp(self._y)[i]
|
|
223
223
|
xmin, xmax, ymin, ymax = self.get_minmax_arrays()
|
|
224
|
-
if abs(y -
|
|
224
|
+
if abs(y - yi) > abs(y - ymin[i]):
|
|
225
225
|
yi = ymin[i]
|
|
226
|
-
elif abs(y -
|
|
226
|
+
elif abs(y - yi) > abs(y - ymax[i]):
|
|
227
227
|
yi = ymax[i]
|
|
228
|
-
if abs(x -
|
|
228
|
+
if abs(x - xi) > abs(x - xmin[i]):
|
|
229
229
|
xi = xmin[i]
|
|
230
|
-
elif abs(x -
|
|
230
|
+
elif abs(x - xi) > abs(x - xmax[i]):
|
|
231
231
|
xi = xmax[i]
|
|
232
232
|
return xi, yi
|
|
233
233
|
|
|
@@ -132,6 +132,12 @@ class BaseImageItem(QwtPlotItem):
|
|
|
132
132
|
self._filename = None # The file this image comes from
|
|
133
133
|
|
|
134
134
|
self.histogram_cache = None
|
|
135
|
+
|
|
136
|
+
# Z-axis logarithmic scale support
|
|
137
|
+
self._log_data: np.ndarray | None = None
|
|
138
|
+
self._lin_lut_range: tuple[float, float] | None = None
|
|
139
|
+
self._is_zaxis_log = False
|
|
140
|
+
|
|
135
141
|
if data is not None:
|
|
136
142
|
self.set_data(data)
|
|
137
143
|
self.param.update_item(self)
|
|
@@ -334,6 +340,15 @@ class BaseImageItem(QwtPlotItem):
|
|
|
334
340
|
"""
|
|
335
341
|
return self.get_x_values(i0, i1)
|
|
336
342
|
|
|
343
|
+
def _recompute_log_data(self) -> None:
|
|
344
|
+
"""Refresh the cached log10 data from the current ``self.data``.
|
|
345
|
+
|
|
346
|
+
Used both when toggling the Z-axis log scale on and when the underlying
|
|
347
|
+
data is replaced (e.g. via :meth:`set_data`) while the log scale is
|
|
348
|
+
already active.
|
|
349
|
+
"""
|
|
350
|
+
self._log_data = np.array(np.log10(self.data.clip(1)), dtype=np.float64)
|
|
351
|
+
|
|
337
352
|
def set_data(
|
|
338
353
|
self, data: np.ndarray, lut_range: tuple[float, float] | None = None
|
|
339
354
|
) -> None:
|
|
@@ -347,9 +362,15 @@ class BaseImageItem(QwtPlotItem):
|
|
|
347
362
|
self.histogram_cache = None
|
|
348
363
|
self.update_bounds()
|
|
349
364
|
self.update_border()
|
|
365
|
+
# Refresh the cached log10 data when log scale is active, otherwise the
|
|
366
|
+
# display would keep using the previous (now stale) log data.
|
|
367
|
+
if self.get_zaxis_log_state():
|
|
368
|
+
self._recompute_log_data()
|
|
350
369
|
if not self.param.keep_lut_range:
|
|
351
370
|
if lut_range is not None:
|
|
352
371
|
_min, _max = lut_range
|
|
372
|
+
elif self.get_zaxis_log_state():
|
|
373
|
+
_min, _max = get_nan_range(self._log_data)
|
|
353
374
|
else:
|
|
354
375
|
_min, _max = get_nan_range(data)
|
|
355
376
|
self.set_lut_range((_min, _max))
|
|
@@ -552,6 +573,34 @@ class BaseImageItem(QwtPlotItem):
|
|
|
552
573
|
"""
|
|
553
574
|
return get_nan_range(self.data)
|
|
554
575
|
|
|
576
|
+
# ---- Z-axis logarithmic scale --------------------------------------------
|
|
577
|
+
def get_zaxis_log_state(self) -> bool:
|
|
578
|
+
"""Return True if Z-axis is in logarithmic scale"""
|
|
579
|
+
return self._is_zaxis_log
|
|
580
|
+
|
|
581
|
+
def set_zaxis_log_state(self, state: bool) -> None:
|
|
582
|
+
"""Set Z-axis logarithmic scale state
|
|
583
|
+
|
|
584
|
+
Args:
|
|
585
|
+
state: True to enable logarithmic scale, False otherwise
|
|
586
|
+
"""
|
|
587
|
+
self._is_zaxis_log = state
|
|
588
|
+
plot = self.plot()
|
|
589
|
+
if state:
|
|
590
|
+
self._lin_lut_range = self.get_lut_range()
|
|
591
|
+
if self._log_data is None:
|
|
592
|
+
self._recompute_log_data()
|
|
593
|
+
self.set_lut_range(get_nan_range(self._log_data))
|
|
594
|
+
dtype = self._log_data.dtype
|
|
595
|
+
else:
|
|
596
|
+
self._log_data = None
|
|
597
|
+
self.set_lut_range(self._lin_lut_range)
|
|
598
|
+
dtype = self.data.dtype
|
|
599
|
+
if self.interpolate[0] == INTERP_AA:
|
|
600
|
+
self.interpolate = (INTERP_AA, self.interpolate[1].astype(dtype))
|
|
601
|
+
if plot is not None:
|
|
602
|
+
plot.update_colormap_axis(self)
|
|
603
|
+
|
|
555
604
|
def get_lut_range_max(self) -> tuple[float, float]:
|
|
556
605
|
"""Get maximum range for this dataset
|
|
557
606
|
|