PlotPy 2.3.5__tar.gz → 2.4.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.
Files changed (523) hide show
  1. {plotpy-2.3.5 → plotpy-2.4.0}/CHANGELOG.md +58 -1
  2. {plotpy-2.3.5/PlotPy.egg-info → plotpy-2.4.0}/PKG-INFO +1 -1
  3. {plotpy-2.3.5 → plotpy-2.4.0/PlotPy.egg-info}/PKG-INFO +1 -1
  4. {plotpy-2.3.5 → plotpy-2.4.0}/PlotPy.egg-info/SOURCES.txt +3 -0
  5. plotpy-2.4.0/doc/features/tools/overview.rst +28 -0
  6. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/tools/reference.rst +18 -8
  7. {plotpy-2.3.5 → plotpy-2.4.0}/doc/requirements.rst +3 -6
  8. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/__init__.py +1 -1
  9. plotpy-2.4.0/plotpy/data/icons/zlog.svg +144 -0
  10. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/interfaces/__init__.py +0 -1
  11. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/interfaces/items.py +0 -25
  12. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/annotation.py +10 -5
  13. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/grid.py +1 -1
  14. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/base.py +0 -84
  15. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/image_items.py +32 -1
  16. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/label.py +6 -6
  17. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/axis.py +7 -7
  18. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/ellipse.py +1 -1
  19. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/marker.py +8 -8
  20. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/point.py +1 -1
  21. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/polygon.py +5 -5
  22. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/range.py +3 -3
  23. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/rectangle.py +2 -2
  24. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/segment.py +1 -1
  25. plotpy-2.4.0/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
  26. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/contrastadjustment.py +135 -78
  27. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/plot/base.py +8 -1
  28. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/plot/manager.py +4 -0
  29. plotpy-2.4.0/plotpy/styles/axes.py +216 -0
  30. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/curve.py +1 -0
  31. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/errorbar.py +25 -12
  32. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/image.py +216 -122
  33. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/label.py +83 -38
  34. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/shape.py +163 -51
  35. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_customize_shape_tool.py +1 -1
  36. plotpy-2.4.0/plotpy/tests/tools/test_stats_tools.py +157 -0
  37. plotpy-2.4.0/plotpy/tests/tools/test_zaxislog.py +56 -0
  38. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_annotation_tools.py +4 -4
  39. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_cursor_tools.py +3 -3
  40. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_curve_tools.py +21 -33
  41. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_display_coords_tool.py +4 -6
  42. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_events.py +9 -29
  43. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_line_cross_section_tool.py +3 -6
  44. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_manipulate_selection.py +34 -45
  45. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_multiline_tools.py +12 -12
  46. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_oblique_cross_section_tool.py +3 -5
  47. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_rect_zoom.py +3 -3
  48. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/utils.py +13 -22
  49. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/__init__.py +2 -0
  50. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/cross_section.py +1 -1
  51. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/curve.py +62 -38
  52. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/image.py +171 -31
  53. {plotpy-2.3.5 → plotpy-2.4.0}/src/contour2d.c +92 -92
  54. {plotpy-2.3.5 → plotpy-2.4.0}/src/histogram2d.c +93 -93
  55. {plotpy-2.3.5 → plotpy-2.4.0}/src/mandelbrot.c +93 -93
  56. plotpy-2.3.5/doc/features/tools/overview.rst +0 -82
  57. plotpy-2.3.5/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
  58. plotpy-2.3.5/plotpy/styles/axes.py +0 -143
  59. {plotpy-2.3.5 → plotpy-2.4.0}/LICENSE +0 -0
  60. {plotpy-2.3.5 → plotpy-2.4.0}/MANIFEST.in +0 -0
  61. {plotpy-2.3.5 → plotpy-2.4.0}/PlotPy.egg-info/dependency_links.txt +0 -0
  62. {plotpy-2.3.5 → plotpy-2.4.0}/PlotPy.egg-info/entry_points.txt +0 -0
  63. {plotpy-2.3.5 → plotpy-2.4.0}/PlotPy.egg-info/requires.txt +0 -0
  64. {plotpy-2.3.5 → plotpy-2.4.0}/PlotPy.egg-info/top_level.txt +0 -0
  65. {plotpy-2.3.5 → plotpy-2.4.0}/README.md +0 -0
  66. {plotpy-2.3.5 → plotpy-2.4.0}/colormaps/README.md +0 -0
  67. {plotpy-2.3.5 → plotpy-2.4.0}/colormaps/_cm.py +0 -0
  68. {plotpy-2.3.5 → plotpy-2.4.0}/colormaps/colormap.py +0 -0
  69. {plotpy-2.3.5 → plotpy-2.4.0}/colormaps/matplotlib_cmaps.py +0 -0
  70. {plotpy-2.3.5 → plotpy-2.4.0}/doc/_static/favicon.ico +0 -0
  71. {plotpy-2.3.5 → plotpy-2.4.0}/doc/changelog.rst +0 -0
  72. {plotpy-2.3.5 → plotpy-2.4.0}/doc/conf.py +0 -0
  73. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/build.rst +0 -0
  74. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/contribute.rst +0 -0
  75. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/guiqwt_to_plotpy.csv +0 -0
  76. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/guiqwt_to_plotpy.rst +0 -0
  77. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/index.rst +0 -0
  78. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/platforms.rst +0 -0
  79. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/v1_to_guidata_v3.csv +0 -0
  80. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/v1_to_v2.csv +0 -0
  81. {plotpy-2.3.5 → plotpy-2.4.0}/doc/dev/v1_to_v2.rst +0 -0
  82. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/colormapmanager.rst +0 -0
  83. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/events.rst +0 -0
  84. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/fit.rst +0 -0
  85. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/fliprotate.rst +0 -0
  86. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/imagefile.rst +0 -0
  87. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/index.rst +0 -0
  88. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/io.rst +0 -0
  89. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/items/builder.rst +0 -0
  90. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/items/examples.rst +0 -0
  91. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/items/index.rst +0 -0
  92. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/items/overview.rst +0 -0
  93. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/items/reference.rst +0 -0
  94. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/mathutils/colormaps.rst +0 -0
  95. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/mathutils/geometry.rst +0 -0
  96. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/mathutils/index.rst +0 -0
  97. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/mathutils/scaler.rst +0 -0
  98. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/panels/index.rst +0 -0
  99. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/panels/overview.rst +0 -0
  100. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/panels/reference.rst +0 -0
  101. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/plot/examples.rst +0 -0
  102. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/plot/index.rst +0 -0
  103. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/plot/overview.rst +0 -0
  104. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/plot/reference.rst +0 -0
  105. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/pyplot.rst +0 -0
  106. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/resizedialog.rst +0 -0
  107. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/rotatecrop.rst +0 -0
  108. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/selectdialog.rst +0 -0
  109. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/signals.rst +0 -0
  110. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/styles/index.rst +0 -0
  111. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/styles/overview.rst +0 -0
  112. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/styles/reference.rst +0 -0
  113. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/tools/examples.rst +0 -0
  114. {plotpy-2.3.5 → plotpy-2.4.0}/doc/features/tools/index.rst +0 -0
  115. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/my_plot_manager.png +0 -0
  116. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/my_plot_manager.svg +0 -0
  117. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/panorama.png +0 -0
  118. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/panorama.svg +0 -0
  119. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/plot_widgets.png +0 -0
  120. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/plot_widgets.svg +0 -0
  121. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/plotpy-banner.png +0 -0
  122. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/plotpy-vertical.png +0 -0
  123. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/__init__.png +0 -0
  124. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/computations.png +0 -0
  125. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/contrast.png +0 -0
  126. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/cross_section.png +0 -0
  127. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/cross_section2.png +0 -0
  128. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/dotarraydemo.png +0 -0
  129. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/filtertest1.png +0 -0
  130. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/filtertest2.png +0 -0
  131. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/fit.png +0 -0
  132. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/get_point.png +0 -0
  133. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/hist2d.png +0 -0
  134. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/image_plot_tools.png +0 -0
  135. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/imagefilter.png +0 -0
  136. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/imagesuperp.png +0 -0
  137. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/imagexy.png +0 -0
  138. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/manager.png +0 -0
  139. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/mandelbrot.png +0 -0
  140. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/pcolor.png +0 -0
  141. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/plot.png +0 -0
  142. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/simple_dialog.png +0 -0
  143. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/simple_window.png +0 -0
  144. {plotpy-2.3.5 → plotpy-2.4.0}/doc/images/screenshots/transform.png +0 -0
  145. {plotpy-2.3.5 → plotpy-2.4.0}/doc/index.rst +0 -0
  146. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/examples.rst +0 -0
  147. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/index.rst +0 -0
  148. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/installation.rst +0 -0
  149. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/licenses.rst +0 -0
  150. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/motivation.rst +0 -0
  151. {plotpy-2.3.5 → plotpy-2.4.0}/doc/intro/overview.rst +0 -0
  152. {plotpy-2.3.5 → plotpy-2.4.0}/doc/update_requirements.py +0 -0
  153. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/__init__.py +0 -0
  154. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/annotation.py +0 -0
  155. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/curvemarker.py +0 -0
  156. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/image.py +0 -0
  157. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/label.py +0 -0
  158. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/plot.py +0 -0
  159. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/builder/shape.py +0 -0
  160. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/config.py +0 -0
  161. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/constants.py +0 -0
  162. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/coords.py +0 -0
  163. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/colormaps_default.json +0 -0
  164. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/apply.png +0 -0
  165. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/arredit.png +0 -0
  166. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/arrow_down.png +0 -0
  167. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/arrow_up.png +0 -0
  168. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/autorefresh.png +0 -0
  169. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/autoscale.png +0 -0
  170. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/axes.png +0 -0
  171. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/busy.png +0 -0
  172. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/cell_edit.png +0 -0
  173. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/center.png +0 -0
  174. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/cmap_edit.png +0 -0
  175. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/contrast.png +0 -0
  176. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/copy.png +0 -0
  177. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/copytoclipboard.png +0 -0
  178. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csapplylut.png +0 -0
  179. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csautoscale.png +0 -0
  180. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csection.png +0 -0
  181. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csection_a.png +0 -0
  182. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csection_line.png +0 -0
  183. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csection_oblique.png +0 -0
  184. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/csperimage.png +0 -0
  185. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curve_downsample.png +0 -0
  186. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvestyles/dots.png +0 -0
  187. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvestyles/lines.png +0 -0
  188. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvestyles/steps.png +0 -0
  189. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvestyles/sticks.png +0 -0
  190. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvetypes/xfy.png +0 -0
  191. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/curvetypes/yfx.png +0 -0
  192. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/delete.png +0 -0
  193. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/edit.png +0 -0
  194. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/edit_point_selection.png +0 -0
  195. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/edit.png +0 -0
  196. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/edit_add.png +0 -0
  197. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/editcopy.png +0 -0
  198. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/editdelete.png +0 -0
  199. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/editpaste.png +0 -0
  200. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/fileimport.png +0 -0
  201. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/filesave.png +0 -0
  202. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/imshow.png +0 -0
  203. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/insert.png +0 -0
  204. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/plot.png +0 -0
  205. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/editors/rename.png +0 -0
  206. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/eliminate_outliers.png +0 -0
  207. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/eraser.png +0 -0
  208. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/exit.png +0 -0
  209. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/expander_down.png +0 -0
  210. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/expander_right.png +0 -0
  211. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/export.png +0 -0
  212. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/file.png +0 -0
  213. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/fileclose.png +0 -0
  214. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/fileimport.png +0 -0
  215. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filenew.png +0 -0
  216. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/fileopen.png +0 -0
  217. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filesave.png +0 -0
  218. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filesaveas.png +0 -0
  219. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/doc.png +0 -0
  220. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/gif.png +0 -0
  221. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/html.png +0 -0
  222. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/jpg.png +0 -0
  223. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/pdf.png +0 -0
  224. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/png.png +0 -0
  225. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/pps.png +0 -0
  226. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/ps.png +0 -0
  227. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/tar.png +0 -0
  228. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/tgz.png +0 -0
  229. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/tif.png +0 -0
  230. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/txt.png +0 -0
  231. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/xls.png +0 -0
  232. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/filetypes/zip.png +0 -0
  233. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/font.png +0 -0
  234. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/full_range.png +0 -0
  235. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/funct.png +0 -0
  236. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/hcursor.png +0 -0
  237. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/hflip.png +0 -0
  238. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/imagestats.png +0 -0
  239. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/item_list.png +0 -0
  240. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/annotation.png +0 -0
  241. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/curve.png +0 -0
  242. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/errorbar.png +0 -0
  243. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/grid.png +0 -0
  244. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/histogram.png +0 -0
  245. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/histogram2d.png +0 -0
  246. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/image.png +0 -0
  247. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/label.png +0 -0
  248. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/legend.png +0 -0
  249. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/items/polygonmap.png +0 -0
  250. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/magnifier.png +0 -0
  251. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/cross.png +0 -0
  252. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/diamond.png +0 -0
  253. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/ellipse.png +0 -0
  254. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/hexagon.png +0 -0
  255. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/point.png +0 -0
  256. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/square.png +0 -0
  257. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/star.png +0 -0
  258. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/triangle_d.png +0 -0
  259. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/triangle_l.png +0 -0
  260. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/triangle_r.png +0 -0
  261. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/triangle_u.png +0 -0
  262. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markers/xcross.png +0 -0
  263. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
  264. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
  265. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
  266. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/mask/mask_circle.png +0 -0
  267. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
  268. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
  269. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
  270. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/mask/mask_tool.png +0 -0
  271. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/max.png +0 -0
  272. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/min.png +0 -0
  273. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/move.png +0 -0
  274. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/multipoint_selection.png +0 -0
  275. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/none.png +0 -0
  276. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/not_found.png +0 -0
  277. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/on_curve.png +0 -0
  278. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
  279. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/crosspattern.png +0 -0
  280. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
  281. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
  282. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
  283. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
  284. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
  285. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
  286. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
  287. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
  288. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
  289. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/horpattern.png +0 -0
  290. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/nobrush.png +0 -0
  291. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/solidpattern.png +0 -0
  292. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/patterns/verpattern.png +0 -0
  293. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/plotpy-banner.svg +0 -0
  294. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/plotpy-vertical.svg +0 -0
  295. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/plotpy.svg +0 -0
  296. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/point_selection.png +0 -0
  297. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/print.png +0 -0
  298. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/python.png +0 -0
  299. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/quickview.png +0 -0
  300. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/rectangular_select.png +0 -0
  301. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/refresh.png +0 -0
  302. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/save_all.png +0 -0
  303. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/scales/lin_lin.png +0 -0
  304. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/scales/lin_log.png +0 -0
  305. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/scales/log_lin.png +0 -0
  306. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/scales/log_log.png +0 -0
  307. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/selection.png +0 -0
  308. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/settings.png +0 -0
  309. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shape.png +0 -0
  310. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/circle.png +0 -0
  311. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/contour.png +0 -0
  312. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
  313. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/freeform.png +0 -0
  314. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/gtaxes.png +0 -0
  315. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/marker.png +0 -0
  316. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
  317. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/point_shape.png +0 -0
  318. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/polyline.png +0 -0
  319. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/rectangle.png +0 -0
  320. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/shapes/segment.png +0 -0
  321. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/snapshot.png +0 -0
  322. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/styles/dash.png +0 -0
  323. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/styles/dashdot.png +0 -0
  324. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/styles/dashdotdot.png +0 -0
  325. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/styles/dot.png +0 -0
  326. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/styles/solid.png +0 -0
  327. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/trash.png +0 -0
  328. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/trimage_lock.png +0 -0
  329. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/trimage_unlock.png +0 -0
  330. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/vcursor.png +0 -0
  331. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/vflip.png +0 -0
  332. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/xcursor.png +0 -0
  333. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/xmax.png +0 -0
  334. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/xmin.png +0 -0
  335. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/data/icons/xrange.png +0 -0
  336. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/events.py +0 -0
  337. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/__init__.py +0 -0
  338. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/__init__.py +0 -0
  339. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_generic_range_slider.py +0 -0
  340. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_generic_slider.py +0 -0
  341. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_labeled.py +0 -0
  342. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_misc.py +0 -0
  343. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_range_style.py +0 -0
  344. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/external/sliders/_sliders.py +0 -0
  345. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/interfaces/panel.py +0 -0
  346. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/interfaces/plotmanager.py +0 -0
  347. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/io.py +0 -0
  348. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/__init__.py +0 -0
  349. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/contour.py +0 -0
  350. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/curve/__init__.py +0 -0
  351. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/curve/base.py +0 -0
  352. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/curve/errorbar.py +0 -0
  353. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/histogram.py +0 -0
  354. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/__init__.py +0 -0
  355. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/filter.py +0 -0
  356. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/masked.py +0 -0
  357. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/misc.py +0 -0
  358. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/image/transform.py +0 -0
  359. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/polygonmap.py +0 -0
  360. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/__init__.py +0 -0
  361. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/base.py +0 -0
  362. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/items/shape/svg.py +0 -0
  363. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/lutrange.py +0 -0
  364. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/mathutils/__init__.py +0 -0
  365. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/mathutils/arrayfuncs.py +0 -0
  366. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/mathutils/colormap.py +0 -0
  367. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/mathutils/geometry.py +0 -0
  368. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/mathutils/scaler.py +0 -0
  369. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/__init__.py +0 -0
  370. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/base.py +0 -0
  371. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/csection/__init__.py +0 -0
  372. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/csection/csitem.py +0 -0
  373. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/csection/csplot.py +0 -0
  374. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/csection/cswidget.py +0 -0
  375. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/panels/itemlist.py +0 -0
  376. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/plot/__init__.py +0 -0
  377. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/plot/interactive.py +0 -0
  378. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/plot/plotwidget.py +0 -0
  379. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/pyplot.py +0 -0
  380. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/__init__.py +0 -0
  381. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/base.py +0 -0
  382. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/histogram.py +0 -0
  383. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/styles/polygonmap.py +0 -0
  384. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/__init__.py +0 -0
  385. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/benchmarks/__init__.py +0 -0
  386. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
  387. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
  388. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
  389. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/conftest.py +0 -0
  390. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data/brain.png +0 -0
  391. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data/brain_cylinder.png +0 -0
  392. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data/mr-brain.dcm +0 -0
  393. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data/svg_target.svg +0 -0
  394. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data/svg_tool.svg +0 -0
  395. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/data.py +0 -0
  396. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/__init__.py +0 -0
  397. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_auto_curve_image.py +0 -0
  398. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
  399. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_builder.py +0 -0
  400. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_colormap_editor.py +0 -0
  401. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_colormap_manager.py +0 -0
  402. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_computations.py +0 -0
  403. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_contrast.py +0 -0
  404. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_cursors.py +0 -0
  405. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_dicom_image.py +0 -0
  406. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_fit.py +0 -0
  407. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_image_coords.py +0 -0
  408. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_imagefilter.py +0 -0
  409. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_imagesuperp.py +0 -0
  410. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
  411. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
  412. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
  413. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_manager.py +0 -0
  414. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_no_auto_tools.py +0 -0
  415. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_plot_log.py +0 -0
  416. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_plot_types.py +0 -0
  417. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_plot_yreverse.py +0 -0
  418. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_pyplot.py +0 -0
  419. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/features/test_resize.py +0 -0
  420. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/__init__.py +0 -0
  421. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_annotations.py +0 -0
  422. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_curves.py +0 -0
  423. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_curves_highdpi.py +0 -0
  424. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_hist2d.py +0 -0
  425. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_histogram.py +0 -0
  426. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image.py +0 -0
  427. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image_contour.py +0 -0
  428. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image_masked.py +0 -0
  429. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image_masked_xy.py +0 -0
  430. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image_rgb.py +0 -0
  431. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_image_xy.py +0 -0
  432. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_mandelbrot.py +0 -0
  433. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_pcolor.py +0 -0
  434. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_polygons.py +0 -0
  435. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_svgshapes.py +0 -0
  436. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/items/test_transform.py +0 -0
  437. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/__init__.py +0 -0
  438. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_actiontool.py +0 -0
  439. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_cross_section.py +0 -0
  440. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_cross_section_line.py +0 -0
  441. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
  442. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_downsample_curve.py +0 -0
  443. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_edit_point.py +0 -0
  444. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_get_point.py +0 -0
  445. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_get_points.py +0 -0
  446. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_get_rectangle.py +0 -0
  447. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
  448. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_get_segment.py +0 -0
  449. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
  450. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/__init__.py +0 -0
  451. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
  452. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_baseplot.py +0 -0
  453. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_builder_annotation.py +0 -0
  454. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_builder_curve.py +0 -0
  455. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_builder_image.py +0 -0
  456. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_builder_shape.py +0 -0
  457. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_contour.py +0 -0
  458. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_fontparam.py +0 -0
  459. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_geometry.py +0 -0
  460. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_highprecisionxy.py +0 -0
  461. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_io.py +0 -0
  462. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_line.py +0 -0
  463. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_mask_tool.py +0 -0
  464. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_plot_curve.py +0 -0
  465. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_plot_image.py +0 -0
  466. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_seg_dist.py +0 -0
  467. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_styles.py +0 -0
  468. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/unit/test_tools_export.py +0 -0
  469. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/vistools.py +0 -0
  470. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/__init__.py +0 -0
  471. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
  472. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_filtertest1.py +0 -0
  473. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_filtertest2.py +0 -0
  474. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_fliprotate.py +0 -0
  475. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
  476. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
  477. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
  478. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
  479. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
  480. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
  481. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_simple_window.py +0 -0
  482. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tests/widgets/test_syncplot.py +0 -0
  483. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/annotation.py +0 -0
  484. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/axes.py +0 -0
  485. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/base.py +0 -0
  486. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/cursor.py +0 -0
  487. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/item.py +0 -0
  488. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/label.py +0 -0
  489. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/misc.py +0 -0
  490. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/plot.py +0 -0
  491. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/selection.py +0 -0
  492. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/tools/shape.py +0 -0
  493. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/__init__.py +0 -0
  494. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/about.py +0 -0
  495. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/basetransform.py +0 -0
  496. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/colormap/__init__.py +0 -0
  497. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/colormap/_slider.py +0 -0
  498. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/colormap/editor.py +0 -0
  499. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/colormap/manager.py +0 -0
  500. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/colormap/widget.py +0 -0
  501. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/fit.py +0 -0
  502. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/fliprotate.py +0 -0
  503. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/imagefile.py +0 -0
  504. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/qtdesigner.py +0 -0
  505. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/resizedialog.py +0 -0
  506. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/rotatecrop.py +0 -0
  507. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy/widgets/selectdialog.py +0 -0
  508. {plotpy-2.3.5 → plotpy-2.4.0}/plotpy-tests.desktop +0 -0
  509. {plotpy-2.3.5 → plotpy-2.4.0}/pyproject.toml +0 -0
  510. {plotpy-2.3.5 → plotpy-2.4.0}/qtdesigner/plotplugin.py +0 -0
  511. {plotpy-2.3.5 → plotpy-2.4.0}/requirements.txt +0 -0
  512. {plotpy-2.3.5 → plotpy-2.4.0}/setup.cfg +0 -0
  513. {plotpy-2.3.5 → plotpy-2.4.0}/setup.py +0 -0
  514. {plotpy-2.3.5 → plotpy-2.4.0}/src/arrays.hpp +0 -0
  515. {plotpy-2.3.5 → plotpy-2.4.0}/src/contour2d.pyx +0 -0
  516. {plotpy-2.3.5 → plotpy-2.4.0}/src/debug.hpp +0 -0
  517. {plotpy-2.3.5 → plotpy-2.4.0}/src/histogram2d.pyx +0 -0
  518. {plotpy-2.3.5 → plotpy-2.4.0}/src/mandelbrot.pyx +0 -0
  519. {plotpy-2.3.5 → plotpy-2.4.0}/src/pcolor.cpp +0 -0
  520. {plotpy-2.3.5 → plotpy-2.4.0}/src/points.hpp +0 -0
  521. {plotpy-2.3.5 → plotpy-2.4.0}/src/scaler.cpp +0 -0
  522. {plotpy-2.3.5 → plotpy-2.4.0}/src/scaler.hpp +0 -0
  523. {plotpy-2.3.5 → plotpy-2.4.0}/src/traits.hpp +0 -0
@@ -1,5 +1,63 @@
1
1
  # Changelog #
2
2
 
3
+ ## Version 2.4.0 ##
4
+
5
+ In this release, test coverage is 79%.
6
+
7
+ 💥 New features / Enhancements:
8
+
9
+ * Contrast adjustment panel:
10
+ * New layout: the vertical toolbar (which was constrained in a small area on the
11
+ right side of the panel) is now a horizontal toolbar at the top of the panel,
12
+ beside the title
13
+ * New "Set range" button: allows the user to set manually the minimum and maximum
14
+ values of the histogram range
15
+ * New Z-axis logarithmic scale feature:
16
+ * Added new tool `ZAxisLogTool` to toggle the Z-axis logarithmic scale
17
+ * The tool is registered by default in the plot widget, like the `ColormapTool`
18
+ * When enabled, the active image item is displayed after applying a base-10
19
+ logarithm to its pixel values
20
+ * Curve statistics tool `CurveStatsTool` is now customizable:
21
+ * When adding the tool: `plot_widget.manager.add_tool(CurveStatsTool, labelfuncs=(...))`
22
+ * Or after: `plot_widget.manager.get_tool(CurveStatsTool).set_labelfuncs(...)`
23
+ * The `labelfuncs` parameter is a list of tuples `(label, func)` where `label` is the
24
+ label displayed in the statistics table, and `func` is a function that takes the
25
+ curve data and returns the corresponding statistic value (see the documentation for
26
+ more details)
27
+ * Image statistics tool `ImageStatsTool` is now customizable:
28
+ * When adding the tool: `plot_widget.manager.add_tool(ImageStatsTool, stats_func=...)`
29
+ * Or after: `plot_widget.manager.get_tool(ImageStatsTool).set_stats_func(...)`
30
+ * The `stats_func` parameter is a function that takes the image item and selected
31
+ rectangle coordinates, and returns a string with the statistics to display
32
+ * New `SIG_AXIS_PARAMETERS_CHANGED` signal emitted by `BasePlot` when the axes parameters
33
+ are changed (e.g. when the axes are inverted, or the scale is changed)
34
+ * New "Reverse X axis" feature:
35
+ * Added new tool `ReverseXAxisTool` to toggle the X-axis direction
36
+ * The tool is registered by default in the plot widget, like its Y-axis counterpart
37
+
38
+ 🛠️ Bug fixes:
39
+
40
+ * Contrast adjustment panel:
41
+ * Fixed histogram update issues when no image was currently selected (even if the
42
+ an image was displayed and was selected before)
43
+ * Histogram range was not updated when either the minimum or maximum value was set
44
+ using the "Minimum value" or "Maximum value" buttons (which have been renamed to
45
+ "Min." and "Max." in this release)
46
+ * Histogram range was not updated when the "Set full range" button was clicked
47
+ * Image parameters: contrast range was not updated when the image Z axis bounds were
48
+ changed using the "Parameters" dialog
49
+
50
+ 🧹 API cleanup:
51
+
52
+ * Deprecated `AnnotationParam.update_annotation` method: use `update_item` instead
53
+ * Deprecated `AxesShapeParam.update_axes` method: use `update_item` instead
54
+ * Deprecated `AxesParam.update_axes` method: use `update_item` instead
55
+ * Deprecated `ImageAxesParam.update_axes` method: use `update_item` instead
56
+ * Deprecated `LabelParam.update_label` method: use `update_item` instead
57
+ * Deprecated `MarkerParam.update_marker` method: use `update_item` instead
58
+ * Deprecated `RangeShapeParam.update_range` method: use `update_item` instead
59
+ * Deprecated `ShapeParam.update_shape` method: use `update_item` instead
60
+
3
61
  ## Version 2.3.5 ##
4
62
 
5
63
  This release is mainly intended to fix the Windows binary distribution, which was not
@@ -83,7 +141,6 @@ in version 2.3.1. The latter is a fugitive release that was not announced.
83
141
  * Fixed issue with oblique averaged cross section computation (`AttributeError` when
84
142
  clicking on the empty cross section plot)
85
143
 
86
-
87
144
  ## Version 2.3.0 ##
88
145
 
89
146
  In this release, test coverage is 75%.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.5
3
+ Version: 2.4.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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.5
3
+ Version: 2.4.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
@@ -199,6 +199,7 @@ plotpy/data/icons/xcursor.png
199
199
  plotpy/data/icons/xmax.png
200
200
  plotpy/data/icons/xmin.png
201
201
  plotpy/data/icons/xrange.png
202
+ plotpy/data/icons/zlog.svg
202
203
  plotpy/data/icons/curvestyles/dots.png
203
204
  plotpy/data/icons/curvestyles/lines.png
204
205
  plotpy/data/icons/curvestyles/steps.png
@@ -432,6 +433,8 @@ plotpy/tests/tools/test_get_rectangle.py
432
433
  plotpy/tests/tools/test_get_rectangle_with_svg.py
433
434
  plotpy/tests/tools/test_get_segment.py
434
435
  plotpy/tests/tools/test_image_plot_tools.py
436
+ plotpy/tests/tools/test_stats_tools.py
437
+ plotpy/tests/tools/test_zaxislog.py
435
438
  plotpy/tests/unit/__init__.py
436
439
  plotpy/tests/unit/test_annotation_tools.py
437
440
  plotpy/tests/unit/test_aspect_ratio_tool.py
@@ -0,0 +1,28 @@
1
+ Overview
2
+ --------
3
+
4
+ A `plot tool` is an object providing various features to a plotting widget
5
+ (:py:class:`.BasePlot`):
6
+
7
+ * Buttons,
8
+ * Menus,
9
+ * Selection tools,
10
+ * Image I/O tools,
11
+ * Etc.
12
+
13
+ Before being used, a tool has to be registered to a plotting widget's manager,
14
+ i.e. an instance of the :py:class:`.PlotManager` class (see :ref:`plot`
15
+ for more details).
16
+
17
+ The :py:class:`.BasePlot` widget do not provide any :py:class:`.PlotManager`:
18
+ the manager has to be created separately. On the contrary, the ready-to-use widget
19
+ :py:class:`.PlotWidget` are higher-level plotting widgets with
20
+ integrated manager, tools and panels.
21
+
22
+ .. seealso::
23
+
24
+ :ref:`plot`
25
+ Ready-to-use curve and image plotting widgets and dialog boxes
26
+
27
+ :ref:`items`
28
+ Plot items: curves, images, markers, etc.
@@ -19,14 +19,6 @@ Base classes
19
19
  .. autoclass:: plotpy.tools.PanelTool
20
20
  :members:
21
21
 
22
- Selection tools
23
- ^^^^^^^^^^^^^^^
24
-
25
- .. autoclass:: plotpy.tools.SelectTool
26
- :members:
27
- .. autoclass:: plotpy.tools.SelectPointTool
28
- :members:
29
-
30
22
  Plot tools
31
23
  ^^^^^^^^^^
32
24
 
@@ -44,6 +36,8 @@ Plot tools
44
36
  Item tools
45
37
  ^^^^^^^^^^
46
38
 
39
+ .. autoclass:: plotpy.tools.SelectTool
40
+ :members:
47
41
  .. autoclass:: plotpy.tools.ItemListPanelTool
48
42
  :members:
49
43
  .. autoclass:: plotpy.tools.SaveItemsTool
@@ -93,13 +87,29 @@ Shape tools
93
87
  .. autoclass:: plotpy.tools.HRangeTool
94
88
  :members:
95
89
 
90
+ Curve tools
91
+ ^^^^^^^^^^^
92
+
93
+ .. autoclass:: plotpy.tools.CurveStatsTool
94
+ :members:
95
+ .. autoclass:: plotpy.tools.SelectPointTool
96
+ :members:
97
+ .. autoclass:: plotpy.tools.SelectPointsTool
98
+ :members:
99
+ .. autoclass:: plotpy.tools.EditPointTool
100
+ :members:
101
+
96
102
  Image tools
97
103
  ^^^^^^^^^^^
98
104
 
105
+ .. autoclass:: plotpy.tools.ImageStatsTool
106
+ :members:
99
107
  .. autoclass:: plotpy.tools.RotationCenterTool
100
108
  :members:
101
109
  .. autoclass:: plotpy.tools.ReverseYAxisTool
102
110
  :members:
111
+ .. autoclass:: plotpy.tools.ZAxisLogTool
112
+ :members:
103
113
  .. autoclass:: plotpy.tools.AspectRatioTool
104
114
  :members:
105
115
  .. autoclass:: plotpy.tools.ContrastPanelTool
@@ -9,7 +9,7 @@ The :mod:`plotpy` package requires the following Python modules:
9
9
  - Summary
10
10
  * - Python
11
11
  - >=3.8, <4
12
- -
12
+ - Python programming language
13
13
  * - guidata
14
14
  - >=3.4
15
15
  - Automatic GUI generation for easy dataset editing and display
@@ -41,12 +41,9 @@ Optional modules for development:
41
41
  * - Name
42
42
  - Version
43
43
  - Summary
44
- * - black
45
- -
46
- - The uncompromising code formatter.
47
- * - isort
44
+ * - ruff
48
45
  -
49
- - A Python utility / library to sort Python imports.
46
+ - An extremely fast Python linter and code formatter, written in Rust.
50
47
  * - pylint
51
48
  -
52
49
  - python code static checker
@@ -20,7 +20,7 @@ External resources:
20
20
  .. _GitHub: https://github.com/PierreRaybaut/plotpy
21
21
  """
22
22
 
23
- __version__ = "2.3.5"
23
+ __version__ = "2.4.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
@@ -0,0 +1,144 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ role="img"
11
+ focusable="false"
12
+ aria-hidden="true"
13
+ viewBox="0 0 14 14"
14
+ version="1.1"
15
+ id="svg3733"
16
+ sodipodi:docname="zlog.svg"
17
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
18
+ <metadata
19
+ id="metadata3739">
20
+ <rdf:RDF>
21
+ <cc:Work
22
+ rdf:about="">
23
+ <dc:format>image/svg+xml</dc:format>
24
+ <dc:type
25
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
26
+ </cc:Work>
27
+ </rdf:RDF>
28
+ </metadata>
29
+ <defs
30
+ id="defs3737" />
31
+ <sodipodi:namedview
32
+ pagecolor="#ffffff"
33
+ bordercolor="#666666"
34
+ borderopacity="1"
35
+ objecttolerance="10"
36
+ gridtolerance="10"
37
+ guidetolerance="10"
38
+ inkscape:pageopacity="0"
39
+ inkscape:pageshadow="2"
40
+ inkscape:window-width="1920"
41
+ inkscape:window-height="1017"
42
+ id="namedview3735"
43
+ showgrid="false"
44
+ inkscape:zoom="42.830468"
45
+ inkscape:cx="11.19054"
46
+ inkscape:cy="4.4544012"
47
+ inkscape:window-x="-8"
48
+ inkscape:window-y="-8"
49
+ inkscape:window-maximized="1"
50
+ inkscape:current-layer="svg3733" />
51
+ <rect
52
+ style="fill:#d4aa00"
53
+ id="rect3751"
54
+ width="0.51365304"
55
+ height="13.354979"
56
+ x="12.132974"
57
+ y="0.27145514" />
58
+ <text
59
+ xml:space="preserve"
60
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
61
+ x="-1.0039581"
62
+ y="8.723382"
63
+ id="text3743"><tspan
64
+ sodipodi:role="line"
65
+ id="tspan3741"
66
+ x="-1.0039581"
67
+ y="8.723382"
68
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333302px;font-family:'Lucida Handwriting';-inkscape-font-specification:'Lucida Handwriting'">z</tspan></text>
69
+ <text
70
+ xml:space="preserve"
71
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
72
+ x="4.5061374"
73
+ y="11.2683"
74
+ id="text3747"><tspan
75
+ sodipodi:role="line"
76
+ id="tspan3745"
77
+ x="4.5061374"
78
+ y="11.2683"
79
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.33333325px;font-family:Tahoma;-inkscape-font-specification:'Tahoma Bold';fill:#ff6600">LOG</tspan></text>
80
+ <rect
81
+ style="fill:#d4aa00;stroke-width:0.34224674"
82
+ id="rect3751-2"
83
+ width="0.51365304"
84
+ height="1.5643065"
85
+ x="10.302919"
86
+ y="6.5584002"
87
+ transform="rotate(-30)" />
88
+ <rect
89
+ style="fill:#d4aa00;stroke-width:0.34224674"
90
+ id="rect3751-2-6"
91
+ width="0.51365304"
92
+ height="1.5643065"
93
+ x="10.643191"
94
+ y="-5.8313999"
95
+ transform="rotate(30)" />
96
+ <rect
97
+ style="fill:#d4aa00;stroke-width:0.33449677"
98
+ id="rect3751-8"
99
+ width="0.51365304"
100
+ height="1.4942629"
101
+ x="12.599127"
102
+ y="-13.168196"
103
+ transform="rotate(90)" />
104
+ <rect
105
+ style="fill:#d4aa00;stroke-width:0.33449677"
106
+ id="rect3751-8-5"
107
+ width="0.51365304"
108
+ height="1.4942629"
109
+ x="8.8401213"
110
+ y="-13.168196"
111
+ transform="rotate(90)" />
112
+ <rect
113
+ style="fill:#d4aa00;stroke-width:0.33449677"
114
+ id="rect3751-8-5-0"
115
+ width="0.51365304"
116
+ height="1.4942629"
117
+ x="5.8282475"
118
+ y="-13.168196"
119
+ transform="rotate(90)" />
120
+ <rect
121
+ style="fill:#d4aa00;stroke-width:0.33449677"
122
+ id="rect3751-8-5-4"
123
+ width="0.51365304"
124
+ height="1.4942629"
125
+ x="3.8903742"
126
+ y="-13.168196"
127
+ transform="rotate(90)" />
128
+ <rect
129
+ style="fill:#d4aa00;stroke-width:0.33449677"
130
+ id="rect3751-8-5-44"
131
+ width="0.51365304"
132
+ height="1.4942629"
133
+ x="2.9798076"
134
+ y="-13.168196"
135
+ transform="rotate(90)" />
136
+ <rect
137
+ style="fill:#d4aa00;stroke-width:0.33449677"
138
+ id="rect3751-8-5-5"
139
+ width="0.51365304"
140
+ height="1.4942629"
141
+ x="2.3027196"
142
+ y="-13.168196"
143
+ transform="rotate(90)" />
144
+ </svg>
@@ -16,7 +16,6 @@ from .items import (
16
16
  IItemType,
17
17
  ISerializableType,
18
18
  IShapeItemType,
19
- IStatsImageItemType,
20
19
  ITrackableItemType,
21
20
  IVoiImageItemType,
22
21
  )
@@ -148,31 +148,6 @@ class IExportROIImageItemType(IItemType):
148
148
  pass
149
149
 
150
150
 
151
- class IStatsImageItemType(IItemType):
152
- """An image supporting stats computations"""
153
-
154
- def get_stats(
155
- self,
156
- x0: float,
157
- y0: float,
158
- x1: float,
159
- y1: float,
160
- show_surface: bool = False,
161
- show_integral: bool = False,
162
- ) -> str:
163
- """Return formatted string with stats on image rectangular area
164
- (output should be compatible with AnnotatedShape.get_infos)
165
-
166
- Args:
167
- x0: X0
168
- y0: Y0
169
- x1: X1
170
- y1: Y1
171
- show_surface: Show surface (Default value = False)
172
- show_integral: Show integral (Default value = False)
173
- """
174
-
175
-
176
151
  class ICSImageItemType(IItemType):
177
152
  """An image supporting X/Y cross sections"""
178
153
 
@@ -75,7 +75,7 @@ class AnnotatedShape(AbstractShape):
75
75
  )
76
76
  else:
77
77
  self.annotationparam = annotationparam
78
- self.annotationparam.update_annotation(self)
78
+ self.annotationparam.update_item(self)
79
79
  self.setIcon(get_icon("annotation.png"))
80
80
 
81
81
  def types(self) -> tuple[type[IItemType], ...]:
@@ -98,8 +98,8 @@ class AnnotatedShape(AbstractShape):
98
98
  shape, label, param = state
99
99
  self.shape = shape
100
100
  self.label = label
101
- self.annotationparam = param
102
- self.annotationparam.update_annotation(self)
101
+ self.annotationparam: AnnotationParam = param
102
+ self.annotationparam.update_item(self)
103
103
 
104
104
  def serialize(
105
105
  self,
@@ -125,7 +125,7 @@ class AnnotatedShape(AbstractShape):
125
125
  """
126
126
  self.annotationparam = AnnotationParam(_("Annotation"), icon="annotation.png")
127
127
  reader.read("annotationparam", instance=self.annotationparam)
128
- self.annotationparam.update_annotation(self)
128
+ self.annotationparam.update_item(self)
129
129
  self.shape.deserialize(reader)
130
130
  self.label.deserialize(reader)
131
131
 
@@ -434,7 +434,7 @@ class AnnotatedShape(AbstractShape):
434
434
  update_dataset(
435
435
  self.annotationparam, itemparams.get("AnnotationParam"), visible_only=True
436
436
  )
437
- self.annotationparam.update_annotation(self)
437
+ self.annotationparam.update_item(self)
438
438
  self.plot().SIG_ANNOTATION_CHANGED.emit(self)
439
439
 
440
440
  # Autoscalable types API
@@ -471,6 +471,7 @@ class AnnotatedPoint(AnnotatedShape):
471
471
 
472
472
  def __init__(self, x=0, y=0, annotationparam=None):
473
473
  AnnotatedShape.__init__(self, annotationparam)
474
+ self.shape: PointShape
474
475
  self.set_pos(x, y)
475
476
  self.setIcon(get_icon("point_shape.png"))
476
477
 
@@ -526,6 +527,7 @@ class AnnotatedSegment(AnnotatedShape):
526
527
 
527
528
  def __init__(self, x1=0, y1=0, x2=0, y2=0, annotationparam=None):
528
529
  AnnotatedShape.__init__(self, annotationparam)
530
+ self.shape: SegmentShape
529
531
  self.set_rect(x1, y1, x2, y2)
530
532
  self.setIcon(get_icon("segment.png"))
531
533
 
@@ -585,6 +587,7 @@ class AnnotatedRectangle(AnnotatedShape):
585
587
 
586
588
  def __init__(self, x1=0, y1=0, x2=0, y2=0, annotationparam=None):
587
589
  AnnotatedShape.__init__(self, annotationparam)
590
+ self.shape: RectangleShape
588
591
  self.set_rect(x1, y1, x2, y2)
589
592
  self.setIcon(get_icon("rectangle.png"))
590
593
 
@@ -645,6 +648,7 @@ class AnnotatedObliqueRectangle(AnnotatedRectangle):
645
648
  self, x0=0, y0=0, x1=0, y1=0, x2=0, y2=0, x3=0, y3=0, annotationparam=None
646
649
  ):
647
650
  AnnotatedShape.__init__(self, annotationparam)
651
+ self.shape: ObliqueRectangleShape
648
652
  self.set_rect(x0, y0, x1, y1, x2, y2, x3, y3)
649
653
  self.setIcon(get_icon("oblique_rectangle.png"))
650
654
 
@@ -740,6 +744,7 @@ class AnnotatedEllipse(AnnotatedShape):
740
744
 
741
745
  def __init__(self, x1=0, y1=0, x2=0, y2=0, annotationparam=None):
742
746
  AnnotatedShape.__init__(self, annotationparam)
747
+ self.shape: EllipseShape
743
748
  self.set_xdiameter(x1, y1, x2, y2)
744
749
  self.setIcon(get_icon("ellipse_shape.png"))
745
750
  self.switch_to_ellipse()
@@ -248,7 +248,7 @@ class GridItem(QwtPlotGrid):
248
248
  Args:
249
249
  itemparams: Item parameters
250
250
  """
251
- self.gridparam = itemparams.get("GridParam")
251
+ self.gridparam: GridParam = itemparams.get("GridParam")
252
252
  self.gridparam.update_grid(self)
253
253
 
254
254
 
@@ -37,7 +37,6 @@ from plotpy.interfaces import (
37
37
  IHistDataSource,
38
38
  IImageItemType,
39
39
  ISerializableType,
40
- IStatsImageItemType,
41
40
  ITrackableItemType,
42
41
  IVoiImageItemType,
43
42
  )
@@ -75,7 +74,6 @@ class BaseImageItem(QwtPlotItem):
75
74
  IHistDataSource,
76
75
  IVoiImageItemType,
77
76
  ICSImageItemType,
78
- IStatsImageItemType,
79
77
  IExportROIImageItemType,
80
78
  )
81
79
  _can_select = True
@@ -720,8 +718,6 @@ class BaseImageItem(QwtPlotItem):
720
718
  ITrackableItemType,
721
719
  ICSImageItemType,
722
720
  IExportROIImageItemType,
723
- IStatsImageItemType,
724
- IStatsImageItemType,
725
721
  )
726
722
 
727
723
  def set_readonly(self, state: bool) -> None:
@@ -998,85 +994,6 @@ class BaseImageItem(QwtPlotItem):
998
994
  else:
999
995
  return ydata
1000
996
 
1001
- def get_stats(
1002
- self,
1003
- x0: float,
1004
- y0: float,
1005
- x1: float,
1006
- y1: float,
1007
- show_surface: bool = False,
1008
- show_integral: bool = False,
1009
- ) -> str:
1010
- """Return formatted string with stats on image rectangular area
1011
- (output should be compatible with AnnotatedShape.get_infos)
1012
-
1013
- Args:
1014
- x0: X0
1015
- y0: Y0
1016
- x1: X1
1017
- y1: Y1
1018
- show_surface: Show surface (Default value = False)
1019
- show_integral: Show integral (Default value = False)
1020
- """
1021
- ix0, iy0, ix1, iy1 = self.get_closest_index_rect(x0, y0, x1, y1)
1022
- data = self.data[iy0:iy1, ix0:ix1]
1023
- xfmt = self.param.xformat
1024
- yfmt = self.param.yformat
1025
- zfmt = self.param.zformat
1026
- try:
1027
- xunit = xfmt.split()[1]
1028
- except IndexError:
1029
- xunit = ""
1030
- try:
1031
- yunit = yfmt.split()[1]
1032
- except IndexError:
1033
- yunit = ""
1034
- try:
1035
- zunit = zfmt.split()[1]
1036
- except IndexError:
1037
- zunit = ""
1038
- if show_integral:
1039
- integral = data.sum()
1040
- infos = "<br>".join(
1041
- [
1042
- "<b>%s</b>" % self.param.label,
1043
- "%sx%s %s"
1044
- % (self.data.shape[1], self.data.shape[0], str(self.data.dtype)),
1045
- "",
1046
- "%s ≤ x ≤ %s" % (xfmt % x0, xfmt % x1),
1047
- "%s ≤ y ≤ %s" % (yfmt % y0, yfmt % y1),
1048
- "%s ≤ z ≤ %s" % (zfmt % data.min(), zfmt % data.max()),
1049
- "‹z› = " + zfmt % data.mean(),
1050
- "σ(z) = " + zfmt % data.std(),
1051
- ]
1052
- )
1053
- if show_surface and xunit == yunit:
1054
- surfacefmt = xfmt.split()[0] + " " + xunit
1055
- if xunit != "":
1056
- surfacefmt = surfacefmt + "²"
1057
- surface = abs((x1 - x0) * (y1 - y0))
1058
- infos = infos + "<br>" + _("surface = %s") % (surfacefmt % surface)
1059
- if show_integral:
1060
- integral = data.sum()
1061
- integral_fmt = r"%.3e " + zunit
1062
- infos = infos + "<br>" + _("sum = %s") % (integral_fmt % integral)
1063
- if (
1064
- show_surface
1065
- and xunit == yunit
1066
- and xunit is not None
1067
- and show_integral
1068
- and zunit is not None
1069
- ):
1070
- if surface != 0:
1071
- density = integral / surface
1072
- densityfmt = r"%.3e " + zunit + "/" + xunit
1073
- if xunit != "":
1074
- densityfmt = densityfmt + "²"
1075
- infos = infos + "<br>" + _("density = %s") % (densityfmt % density)
1076
- else:
1077
- infos = infos + "<br>" + _("density not computed : surface is null !")
1078
- return infos
1079
-
1080
997
  def get_xsection(self, y0: float | int, apply_lut: bool = False) -> np.ndarray:
1081
998
  """Return cross section along x-axis at y=y0
1082
999
 
@@ -1287,7 +1204,6 @@ class RawImageItem(BaseImageItem):
1287
1204
  ICSImageItemType,
1288
1205
  ISerializableType,
1289
1206
  IExportROIImageItemType,
1290
- IStatsImageItemType,
1291
1207
  )
1292
1208
 
1293
1209
  def update_item_parameters(self) -> None:
@@ -28,6 +28,7 @@ from plotpy.interfaces import (
28
28
  )
29
29
  from plotpy.items.image.base import RawImageItem
30
30
  from plotpy.items.image.filter import XYImageFilterItem, to_bins
31
+ from plotpy.mathutils.arrayfuncs import get_nan_range
31
32
  from plotpy.styles.image import ImageParam, RGBImageParam, XYImageParam
32
33
 
33
34
  if TYPE_CHECKING:
@@ -83,6 +84,9 @@ class ImageItem(RawImageItem):
83
84
  self.xmax = None
84
85
  self.ymin = None
85
86
  self.ymax = None
87
+ self._log_data = None
88
+ self._lin_lut_range = None
89
+ self._is_zaxis_log = False
86
90
  super().__init__(data=data, param=param)
87
91
 
88
92
  # ---- BaseImageItem API ---------------------------------------------------
@@ -224,6 +228,24 @@ class ImageItem(RawImageItem):
224
228
  (xmin, xmax), (ymin, ymax) = self.get_xdata(), self.get_ydata()
225
229
  self.bounds = QC.QRectF(QC.QPointF(xmin, ymin), QC.QPointF(xmax, ymax))
226
230
 
231
+ def get_zaxis_log_state(self):
232
+ """Reimplement image.ImageItem method"""
233
+ return self._is_zaxis_log
234
+
235
+ def set_zaxis_log_state(self, state):
236
+ """Reimplement image.ImageItem method"""
237
+ self._is_zaxis_log = state
238
+ plot = self.plot()
239
+ if state:
240
+ self._lin_lut_range = self.get_lut_range()
241
+ if self._log_data is None:
242
+ self._log_data = np.array(np.log10(self.data.clip(1)), dtype=np.float64)
243
+ self.set_lut_range(get_nan_range(self._log_data))
244
+ else:
245
+ self._log_data = None
246
+ self.set_lut_range(self._lin_lut_range)
247
+ plot.update_colormap_axis(self)
248
+
227
249
  # ---- BaseImageItem API ---------------------------------------------------
228
250
  def get_pixel_coordinates(self, xplot: float, yplot: float) -> tuple[float, float]:
229
251
  """Get pixel coordinates from plot coordinates
@@ -356,9 +378,18 @@ class ImageItem(RawImageItem):
356
378
  return
357
379
  src2 = self._rescale_src_rect(src_rect)
358
380
  dst_rect = tuple([int(i) for i in dst_rect])
381
+
382
+ # Not the most efficient way to do it, but it works...
383
+ # --------------------------------------------------------------------------
384
+ if self.get_zaxis_log_state():
385
+ data = self._log_data
386
+ else:
387
+ data = self.data
388
+ # --------------------------------------------------------------------------
389
+
359
390
  try:
360
391
  dest = _scale_rect(
361
- self.data, src2, self._offscreen, dst_rect, self.lut, self.interpolate
392
+ data, src2, self._offscreen, dst_rect, self.lut, self.interpolate
362
393
  )
363
394
  except ValueError:
364
395
  # This exception is raised when zooming unreasonably inside a pixel