PlotPy 2.4.1__tar.gz → 2.4.2__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.4.1 → plotpy-2.4.2}/CHANGELOG.md +17 -0
- {plotpy-2.4.1/PlotPy.egg-info → plotpy-2.4.2}/PKG-INFO +2 -1
- {plotpy-2.4.1 → plotpy-2.4.2/PlotPy.egg-info}/PKG-INFO +2 -1
- {plotpy-2.4.1 → plotpy-2.4.2}/PlotPy.egg-info/SOURCES.txt +0 -3
- {plotpy-2.4.1 → plotpy-2.4.2}/PlotPy.egg-info/requires.txt +1 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/guiqwt_to_plotpy.rst +5 -3
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/__init__.py +1 -1
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/contour.py +26 -56
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data.py +11 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image.py +0 -3
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image_contour.py +3 -10
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_contour.py +6 -11
- {plotpy-2.4.1 → plotpy-2.4.2}/pyproject.toml +1 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/requirements.txt +1 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/setup.py +0 -7
- {plotpy-2.4.1 → plotpy-2.4.2}/src/contour2d.c +30066 -22235
- {plotpy-2.4.1 → plotpy-2.4.2}/src/histogram2d.c +93 -93
- {plotpy-2.4.1 → plotpy-2.4.2}/src/mandelbrot.c +93 -93
- plotpy-2.4.1/plotpy/tests/unit/test_highprecisionxy.py +0 -33
- plotpy-2.4.1/src/contour2d.pyx +0 -358
- {plotpy-2.4.1 → plotpy-2.4.2}/LICENSE +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/MANIFEST.in +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/PlotPy.egg-info/dependency_links.txt +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/PlotPy.egg-info/entry_points.txt +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/PlotPy.egg-info/top_level.txt +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/README.md +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/colormaps/README.md +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/colormaps/_cm.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/colormaps/colormap.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/colormaps/matplotlib_cmaps.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/_static/favicon.ico +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/changelog.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/conf.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/build.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/contribute.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/guiqwt_to_plotpy.csv +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/platforms.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/v1_to_guidata_v3.csv +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/v1_to_v2.csv +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/dev/v1_to_v2.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/colormapmanager.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/events.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/fit.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/fliprotate.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/imagefile.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/io.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/items/builder.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/items/examples.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/items/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/items/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/items/reference.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/mathutils/colormaps.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/mathutils/geometry.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/mathutils/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/mathutils/scaler.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/panels/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/panels/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/panels/reference.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/plot/examples.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/plot/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/plot/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/plot/reference.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/pyplot.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/resizedialog.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/rotatecrop.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/selectdialog.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/signals.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/styles/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/styles/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/styles/reference.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/tools/examples.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/tools/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/tools/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/features/tools/reference.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/my_plot_manager.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/my_plot_manager.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/panorama-vertical.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/panorama-vertical.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/panorama.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/panorama.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/plot_widgets.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/plot_widgets.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/plotpy-banner.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/plotpy-vertical.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/__init__.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/computations.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/contrast.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/cross_section.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/cross_section2.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/dotarraydemo.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/filtertest1.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/filtertest2.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/fit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/get_point.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/hist2d.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/image_plot_tools.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/imagefilter.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/imagesuperp.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/imagexy.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/manager.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/mandelbrot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/pcolor.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/plot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/simple_dialog.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/simple_window.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/images/screenshots/transform.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/examples.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/index.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/installation.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/licenses.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/motivation.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/intro/overview.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/requirements.rst +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/doc/update_requirements.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/annotation.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/curvemarker.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/label.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/plot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/builder/shape.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/config.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/constants.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/coords.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/colormaps_default.json +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/apply.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/arredit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/arrow_down.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/arrow_up.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/autorefresh.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/autoscale.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/axes.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/busy.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/cell_edit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/center.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/cmap_edit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/contrast.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/copy.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/copytoclipboard.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csapplylut.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csautoscale.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csection.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csection_a.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csection_line.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csection_oblique.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/csperimage.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curve_downsample.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvestyles/dots.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvestyles/lines.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvestyles/steps.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvestyles/sticks.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvetypes/xfy.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/curvetypes/yfx.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/delete.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/edit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/edit_point_selection.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/edit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/edit_add.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/editcopy.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/editdelete.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/editpaste.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/fileimport.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/filesave.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/imshow.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/insert.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/plot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/editors/rename.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/eliminate_outliers.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/eraser.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/exit.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/expander_down.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/expander_right.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/export.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/file.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/fileclose.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/fileimport.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filenew.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/fileopen.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filesave.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filesaveas.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/doc.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/gif.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/html.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/jpg.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/pdf.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/png.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/pps.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/ps.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/tar.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/tgz.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/tif.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/txt.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/xls.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/filetypes/zip.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/font.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/full_range.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/funct.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/hcursor.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/hflip.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/imagestats.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/item_list.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/annotation.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/curve.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/errorbar.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/grid.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/histogram.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/histogram2d.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/image.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/label.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/legend.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/items/polygonmap.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/magnifier.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/cross.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/diamond.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/ellipse.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/hexagon.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/point.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/square.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/star.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/triangle_d.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/triangle_l.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/triangle_r.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/triangle_u.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markers/xcross.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/mask/mask_circle.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/mask/mask_tool.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/max.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/min.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/move.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/multipoint_selection.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/none.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/not_found.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/on_curve.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/crosspattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/horpattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/nobrush.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/solidpattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/patterns/verpattern.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/plotpy-banner.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/plotpy-vertical.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/plotpy.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/point_selection.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/print.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/python.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/quickview.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/rectangular_select.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/refresh.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/save_all.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/scales/lin_lin.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/scales/lin_log.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/scales/log_lin.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/scales/log_log.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/selection.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/settings.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shape.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/circle.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/contour.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/freeform.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/gtaxes.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/marker.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/point_shape.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/polyline.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/rectangle.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/shapes/segment.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/snapshot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/styles/dash.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/styles/dashdot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/styles/dashdotdot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/styles/dot.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/styles/solid.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/trash.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/trimage_lock.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/trimage_unlock.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/vcursor.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/vflip.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/xcursor.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/xmax.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/xmin.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/xrange.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/data/icons/zlog.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/events.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_generic_range_slider.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_generic_slider.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_labeled.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_misc.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_range_style.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/external/sliders/_sliders.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/interfaces/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/interfaces/items.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/interfaces/panel.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/interfaces/plotmanager.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/io.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/annotation.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/curve/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/curve/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/curve/errorbar.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/grid.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/histogram.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/filter.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/image_items.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/masked.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/misc.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/image/transform.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/label.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/polygonmap.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/axis.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/ellipse.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/marker.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/point.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/polygon.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/range.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/rectangle.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/segment.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/items/shape/svg.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/lutrange.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/mathutils/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/mathutils/arrayfuncs.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/mathutils/colormap.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/mathutils/geometry.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/mathutils/scaler.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/contrastadjustment.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/csection/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/csection/csitem.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/csection/csplot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/csection/cswidget.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/panels/itemlist.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/plot/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/plot/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/plot/interactive.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/plot/manager.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/plot/plotwidget.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/pyplot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/axes.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/curve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/errorbar.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/histogram.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/label.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/polygonmap.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/styles/shape.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/benchmarks/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/conftest.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data/brain.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data/brain_cylinder.png +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data/mr-brain.dcm +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data/svg_target.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/data/svg_tool.svg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_auto_curve_image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_builder.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_colormap_editor.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_colormap_manager.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_computations.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_contrast.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_cursors.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_dicom_image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_fit.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_image_coords.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_imagefilter.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_imagesuperp.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_manager.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_no_auto_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_plot_log.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_plot_types.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_plot_yreverse.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_pyplot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/features/test_resize.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_annotations.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_curves.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_curves_highdpi.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_hist2d.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_histogram.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image_masked.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image_masked_xy.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image_rgb.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_image_xy.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_mandelbrot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_pcolor.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_polygons.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_svgshapes.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/items/test_transform.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_actiontool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_cross_section.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_cross_section_line.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_downsample_curve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_edit_point.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_get_point.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_get_points.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_get_rectangle.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_get_segment.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_stats_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/tools/test_zaxislog.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_annotation_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_baseplot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_builder_annotation.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_builder_curve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_builder_image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_builder_shape.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_cursor_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_curve_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_events.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_fontparam.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_geometry.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_io.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_line.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_manipulate_selection.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_mask_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_multiline_tools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_plot_curve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_plot_image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_rect_zoom.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_seg_dist.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_styles.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/test_tools_export.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/unit/utils.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/vistools.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_filtertest1.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_filtertest2.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_fliprotate.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_simple_window.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tests/widgets/test_syncplot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/annotation.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/axes.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/base.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/cross_section.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/cursor.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/curve.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/image.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/item.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/label.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/misc.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/plot.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/selection.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/tools/shape.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/about.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/basetransform.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/colormap/__init__.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/colormap/_slider.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/colormap/editor.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/colormap/manager.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/colormap/widget.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/fit.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/fliprotate.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/imagefile.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/qtdesigner.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/resizedialog.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/rotatecrop.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy/widgets/selectdialog.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/plotpy-tests.desktop +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/qtdesigner/plotplugin.py +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/setup.cfg +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/arrays.hpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/debug.hpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/histogram2d.pyx +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/mandelbrot.pyx +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/pcolor.cpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/points.hpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/scaler.cpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/scaler.hpp +0 -0
- {plotpy-2.4.1 → plotpy-2.4.2}/src/traits.hpp +0 -0
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog #
|
|
2
2
|
|
|
3
|
+
## Version 2.4.2 ##
|
|
4
|
+
|
|
5
|
+
In this release, test coverage is 79%.
|
|
6
|
+
|
|
7
|
+
🛠️ Bug fixes:
|
|
8
|
+
|
|
9
|
+
* [Issue #17](https://github.com/PlotPyStack/PlotPy/issues/17):
|
|
10
|
+
* Debian's Python team has reported that the contour unit test was failing on `arm64`
|
|
11
|
+
architecture
|
|
12
|
+
* This is the opportunity to replace the `contour2d` Cython extension by scikit-image's
|
|
13
|
+
`find_contours` function, thus avoiding to reinvent the wheel by relying on a more
|
|
14
|
+
robust and tested implementation
|
|
15
|
+
* The `contour2d` Cython extension is removed from the source code
|
|
16
|
+
* The contour related features remain the same, but the implementation is now based on
|
|
17
|
+
scikit-image's `find_contours` function
|
|
18
|
+
* The scikit-image dependency is added to the package requirements
|
|
19
|
+
|
|
3
20
|
## Version 2.4.1 ##
|
|
4
21
|
|
|
5
22
|
In this release, test coverage is 79%.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
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
|
|
@@ -66,6 +66,7 @@ Requires-Dist: guidata>=3.4
|
|
|
66
66
|
Requires-Dist: PythonQwt>=0.12.1
|
|
67
67
|
Requires-Dist: NumPy>=1.17
|
|
68
68
|
Requires-Dist: SciPy>=1.3
|
|
69
|
+
Requires-Dist: scikit-image>=0.18
|
|
69
70
|
Requires-Dist: Pillow
|
|
70
71
|
Requires-Dist: tifffile
|
|
71
72
|
Provides-Extra: dev
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PlotPy
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
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
|
|
@@ -66,6 +66,7 @@ Requires-Dist: guidata>=3.4
|
|
|
66
66
|
Requires-Dist: PythonQwt>=0.12.1
|
|
67
67
|
Requires-Dist: NumPy>=1.17
|
|
68
68
|
Requires-Dist: SciPy>=1.3
|
|
69
|
+
Requires-Dist: scikit-image>=0.18
|
|
69
70
|
Requires-Dist: Pillow
|
|
70
71
|
Requires-Dist: tifffile
|
|
71
72
|
Provides-Extra: dev
|
|
@@ -6,7 +6,6 @@ plotpy-tests.desktop
|
|
|
6
6
|
pyproject.toml
|
|
7
7
|
requirements.txt
|
|
8
8
|
setup.py
|
|
9
|
-
./src/contour2d.c
|
|
10
9
|
./src/histogram2d.c
|
|
11
10
|
./src/mandelbrot.c
|
|
12
11
|
./src/pcolor.cpp
|
|
@@ -452,7 +451,6 @@ plotpy/tests/unit/test_display_coords_tool.py
|
|
|
452
451
|
plotpy/tests/unit/test_events.py
|
|
453
452
|
plotpy/tests/unit/test_fontparam.py
|
|
454
453
|
plotpy/tests/unit/test_geometry.py
|
|
455
|
-
plotpy/tests/unit/test_highprecisionxy.py
|
|
456
454
|
plotpy/tests/unit/test_io.py
|
|
457
455
|
plotpy/tests/unit/test_line.py
|
|
458
456
|
plotpy/tests/unit/test_line_cross_section_tool.py
|
|
@@ -512,7 +510,6 @@ plotpy/widgets/colormap/widget.py
|
|
|
512
510
|
qtdesigner/plotplugin.py
|
|
513
511
|
src/arrays.hpp
|
|
514
512
|
src/contour2d.c
|
|
515
|
-
src/contour2d.pyx
|
|
516
513
|
src/debug.hpp
|
|
517
514
|
src/histogram2d.c
|
|
518
515
|
src/histogram2d.pyx
|
|
@@ -141,9 +141,11 @@ See demo script `tests/items/test_annotations.py`.
|
|
|
141
141
|
New contour features
|
|
142
142
|
~~~~~~~~~~~~~~~~~~~~
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
PlotPy integrates contour detection plot items, based on the contour detection
|
|
145
|
+
algorithm provided by the `scikit-image` library.
|
|
146
|
+
|
|
147
|
+
As a consequence, the applications that previously depended on `matplotlib` only for
|
|
148
|
+
contour detection can now drop this dependency.
|
|
147
149
|
|
|
148
150
|
See demo script `tests/items/test_contour.py`.
|
|
149
151
|
|
|
@@ -20,7 +20,7 @@ External resources:
|
|
|
20
20
|
.. _GitHub: https://github.com/PierreRaybaut/plotpy
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
__version__ = "2.4.
|
|
23
|
+
__version__ = "2.4.2"
|
|
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
|
|
@@ -26,9 +26,9 @@ import guidata.dataset as gds
|
|
|
26
26
|
import numpy as np
|
|
27
27
|
from guidata.configtools import get_icon
|
|
28
28
|
from guidata.utils.misc import assert_interfaces_valid
|
|
29
|
+
from skimage import measure
|
|
29
30
|
|
|
30
31
|
from plotpy.config import _
|
|
31
|
-
from plotpy.contour2d import contour_2d_grid, contour_2d_ortho
|
|
32
32
|
from plotpy.items.shape.polygon import PolygonShape
|
|
33
33
|
from plotpy.styles import ShapeParam
|
|
34
34
|
|
|
@@ -73,64 +73,33 @@ def compute_contours(
|
|
|
73
73
|
raise TypeError("Input z must be a 2D array.")
|
|
74
74
|
elif z.shape[0] < 2 or z.shape[1] < 2:
|
|
75
75
|
raise TypeError("Input z must be at least a 2x2 array.")
|
|
76
|
-
else:
|
|
77
|
-
Ny, Nx = z.shape
|
|
78
|
-
|
|
79
|
-
if X is None:
|
|
80
|
-
X = np.arange(Nx)
|
|
81
|
-
if Y is None:
|
|
82
|
-
Y = np.arange(Ny)
|
|
83
|
-
|
|
84
|
-
x = np.asarray(X, dtype=np.float64)
|
|
85
|
-
y = np.asarray(Y, dtype=np.float64)
|
|
86
|
-
|
|
87
|
-
if x.ndim != y.ndim:
|
|
88
|
-
raise TypeError("Number of dimensions of x and y should match.")
|
|
89
|
-
if x.ndim == 1:
|
|
90
|
-
(nx,) = x.shape
|
|
91
|
-
(ny,) = y.shape
|
|
92
|
-
if nx != Nx:
|
|
93
|
-
raise TypeError("Length of x must be number of columns in z.")
|
|
94
|
-
if ny != Ny:
|
|
95
|
-
raise TypeError("Length of y must be number of rows in z.")
|
|
96
|
-
elif x.ndim == 2:
|
|
97
|
-
if x.shape != z.shape:
|
|
98
|
-
raise TypeError(
|
|
99
|
-
"Shape of x does not match that of z: found "
|
|
100
|
-
"{0} instead of {1}.".format(x.shape, z.shape)
|
|
101
|
-
)
|
|
102
|
-
if y.shape != z.shape:
|
|
103
|
-
raise TypeError(
|
|
104
|
-
"Shape of y does not match that of z: found "
|
|
105
|
-
"{0} instead of {1}.".format(y.shape, z.shape)
|
|
106
|
-
)
|
|
107
|
-
else:
|
|
108
|
-
raise TypeError("Inputs x and y must be 1D or 2D.")
|
|
109
76
|
|
|
110
77
|
if isinstance(levels, np.ndarray):
|
|
111
78
|
levels = np.asarray(levels, dtype=np.float64)
|
|
112
79
|
else:
|
|
113
80
|
levels = np.asarray([levels], dtype=np.float64)
|
|
114
81
|
|
|
115
|
-
if
|
|
116
|
-
|
|
82
|
+
if X is None:
|
|
83
|
+
delta_x, x_origin = 1.0, 0.0
|
|
84
|
+
else:
|
|
85
|
+
delta_x, x_origin = X[0, 1] - X[0, 0], X[0, 0]
|
|
86
|
+
if Y is None:
|
|
87
|
+
delta_y, y_origin = 1.0, 0.0
|
|
117
88
|
else:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
lines.append(cline)
|
|
133
|
-
return lines
|
|
89
|
+
delta_y, y_origin = Y[1, 0] - Y[0, 0], Y[0, 0]
|
|
90
|
+
|
|
91
|
+
# Find contours in the binary image for each level
|
|
92
|
+
clines = []
|
|
93
|
+
for level in levels:
|
|
94
|
+
for contour in measure.find_contours(Z, level):
|
|
95
|
+
contour = contour.squeeze()
|
|
96
|
+
if len(contour) > 1: # Avoid single points
|
|
97
|
+
line = np.zeros_like(contour, dtype=np.float32)
|
|
98
|
+
line[:, 0] = contour[:, 1] * delta_x + x_origin
|
|
99
|
+
line[:, 1] = contour[:, 0] * delta_y + y_origin
|
|
100
|
+
cline = ContourLine.create(vertices=line, level=level)
|
|
101
|
+
clines.append(cline)
|
|
102
|
+
return clines
|
|
134
103
|
|
|
135
104
|
|
|
136
105
|
class ContourItem(PolygonShape):
|
|
@@ -179,11 +148,12 @@ def create_contour_items(
|
|
|
179
148
|
A list of :py:class:`.ContourItem` instances.
|
|
180
149
|
"""
|
|
181
150
|
items = []
|
|
182
|
-
|
|
183
|
-
|
|
151
|
+
|
|
152
|
+
contours = compute_contours(Z, levels, X, Y)
|
|
153
|
+
for cline in contours:
|
|
184
154
|
param = ShapeParam("Contour", icon="contour.png")
|
|
185
|
-
item = ContourItem(points=
|
|
155
|
+
item = ContourItem(points=cline.vertices, shapeparam=param)
|
|
186
156
|
item.set_style("plot", "shape/contour")
|
|
187
|
-
item.setTitle(_("Contour") + f"[Z={
|
|
157
|
+
item.setTitle(_("Contour") + f"[Z={cline.level}]")
|
|
188
158
|
items.append(item)
|
|
189
159
|
return items
|
|
@@ -164,3 +164,14 @@ def gen_2d_gaussian(size, dtype, x0=0, y0=0, mu=0.0, sigma=2.0, amp=None):
|
|
|
164
164
|
amp = np.iinfo(dtype).max * 0.5
|
|
165
165
|
t = (np.sqrt((x - x0) ** 2 + (y - y0) ** 2) - mu) ** 2
|
|
166
166
|
return np.array(amp * np.exp(-t / (2.0 * sigma**2)), dtype=dtype)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def gen_xyz_data():
|
|
170
|
+
"""Create a X, Y, Z data set for contour detection features"""
|
|
171
|
+
delta = 0.025
|
|
172
|
+
x, y = np.arange(-3.0, 3.0, delta), np.arange(-2.0, 2.0, delta)
|
|
173
|
+
X, Y = np.meshgrid(x, y)
|
|
174
|
+
Z1 = np.exp(-(X**2) - Y**2)
|
|
175
|
+
Z2 = np.exp(-((X - 1) ** 2) - (Y - 1) ** 2)
|
|
176
|
+
Z = (Z1 - Z2) * 2
|
|
177
|
+
return X, Y, Z
|
|
@@ -12,22 +12,15 @@ from guidata.qthelpers import qt_app_context
|
|
|
12
12
|
|
|
13
13
|
from plotpy.builder import make
|
|
14
14
|
from plotpy.tests import vistools as ptv
|
|
15
|
+
from plotpy.tests.data import gen_xyz_data
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def test_contour():
|
|
18
19
|
"""Contour plotting test"""
|
|
19
20
|
with qt_app_context(exec_loop=True):
|
|
20
|
-
|
|
21
|
-
delta = 0.025
|
|
22
|
-
x, y = np.arange(-3.0, 3.0, delta), np.arange(-2.0, 2.0, delta)
|
|
23
|
-
X, Y = np.meshgrid(x, y)
|
|
24
|
-
Z1 = np.exp(-(X**2) - Y**2)
|
|
25
|
-
Z2 = np.exp(-((X - 1) ** 2) - (Y - 1) ** 2)
|
|
26
|
-
Z = (Z1 - Z2) * 2
|
|
27
|
-
|
|
28
|
-
# show the image
|
|
21
|
+
_x, _y, z = gen_xyz_data()
|
|
29
22
|
_win = ptv.show_items(
|
|
30
|
-
[make.image(
|
|
23
|
+
[make.image(z)] + make.contours(z, np.arange(-2, 2, 0.5)),
|
|
31
24
|
wintitle=test_contour.__doc__,
|
|
32
25
|
curve_antialiasing=False,
|
|
33
26
|
lock_aspect_ratio=True,
|
|
@@ -3,6 +3,7 @@ import unittest
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
|
|
5
5
|
from plotpy.items.contour import compute_contours
|
|
6
|
+
from plotpy.tests.data import gen_xyz_data
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class ContourTest(unittest.TestCase):
|
|
@@ -14,18 +15,12 @@ class ContourTest(unittest.TestCase):
|
|
|
14
15
|
"""
|
|
15
16
|
|
|
16
17
|
def setUp(self):
|
|
17
|
-
|
|
18
|
-
self.x = np.arange(-3.0, 3.0, delta)
|
|
19
|
-
self.y = np.arange(-2.0, 2.0, delta)
|
|
20
|
-
self.X, self.Y = np.meshgrid(self.x, self.y)
|
|
21
|
-
Z1 = np.exp(-self.X**2 - self.Y**2)
|
|
22
|
-
Z2 = np.exp(-((self.X - 1) ** 2) - (self.Y - 1) ** 2)
|
|
23
|
-
self.Z = (Z1 - Z2) * 2
|
|
18
|
+
self.X, self.Y, self.Z = gen_xyz_data()
|
|
24
19
|
|
|
25
20
|
def test_contour_level_1(self):
|
|
26
21
|
"""Test that contour() returns one closed line when level is 1.0"""
|
|
27
22
|
# Ortho coord
|
|
28
|
-
lines = compute_contours(self.Z, 1.0, self.
|
|
23
|
+
lines = compute_contours(self.Z, 1.0, self.X, self.Y)
|
|
29
24
|
assert len(lines) == 1
|
|
30
25
|
assert np.all(np.equal(lines[0].vertices[0], lines[0].vertices[-1]))
|
|
31
26
|
assert lines[0].level == 1.0
|
|
@@ -40,21 +35,21 @@ class ContourTest(unittest.TestCase):
|
|
|
40
35
|
"""Test that contour() returns opened lines (diagonal) when level is 0.0"""
|
|
41
36
|
lines = compute_contours(self.Z, 0.0, self.X, self.Y)
|
|
42
37
|
assert len(lines) == 1
|
|
43
|
-
assert np.
|
|
38
|
+
assert np.any(lines[0].vertices[0] != lines[0].vertices[-1])
|
|
44
39
|
assert lines[0].level == 0.0
|
|
45
40
|
|
|
46
41
|
def test_contour_level_opened_neg_0_5(self):
|
|
47
42
|
"""Test that contour() returns opened lines when level is -0.5"""
|
|
48
43
|
lines = compute_contours(self.Z, -0.5, self.X, self.Y)
|
|
49
44
|
assert len(lines) == 1
|
|
50
|
-
assert np.
|
|
45
|
+
assert np.any(lines[0].vertices[0] != lines[0].vertices[-1])
|
|
51
46
|
assert lines[0].level == -0.5
|
|
52
47
|
|
|
53
48
|
def test_contour_abs_level_1(self):
|
|
54
49
|
"""Test that contour() returns two closed lines when level is 1.0
|
|
55
50
|
and data are absolute.
|
|
56
51
|
"""
|
|
57
|
-
lines = compute_contours(np.abs(self.Z), 1.0, self.
|
|
52
|
+
lines = compute_contours(np.abs(self.Z), 1.0, self.X, self.Y)
|
|
58
53
|
assert len(lines) == 2
|
|
59
54
|
for line in lines:
|
|
60
55
|
assert np.all(np.equal(line.vertices[0], line.vertices[-1]))
|
|
@@ -71,13 +71,6 @@ setup(
|
|
|
71
71
|
extra_compile_args=CFLAGS_CYTHON,
|
|
72
72
|
define_macros=MACROS_CYTHON,
|
|
73
73
|
),
|
|
74
|
-
Extension(
|
|
75
|
-
name=f"{LIBNAME}.contour2d",
|
|
76
|
-
sources=[osp.join(SRCPATH, "contour2d.c")],
|
|
77
|
-
include_dirs=INCLUDE_DIRS,
|
|
78
|
-
extra_compile_args=CFLAGS_CYTHON,
|
|
79
|
-
define_macros=MACROS_CYTHON,
|
|
80
|
-
),
|
|
81
74
|
Extension(
|
|
82
75
|
name=f"{LIBNAME}._scaler",
|
|
83
76
|
sources=[osp.join(SRCPATH, "scaler.cpp"), osp.join(SRCPATH, "pcolor.cpp")],
|