scitex 2.7.0__py3-none-any.whl → 2.8.1__py3-none-any.whl

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 (355) hide show
  1. scitex/__init__.py +6 -2
  2. scitex/__version__.py +1 -1
  3. scitex/audio/README.md +52 -0
  4. scitex/audio/__init__.py +384 -0
  5. scitex/audio/__main__.py +129 -0
  6. scitex/audio/_tts.py +334 -0
  7. scitex/audio/engines/__init__.py +44 -0
  8. scitex/audio/engines/base.py +275 -0
  9. scitex/audio/engines/elevenlabs_engine.py +143 -0
  10. scitex/audio/engines/gtts_engine.py +162 -0
  11. scitex/audio/engines/pyttsx3_engine.py +131 -0
  12. scitex/audio/mcp_server.py +757 -0
  13. scitex/bridge/_helpers.py +1 -1
  14. scitex/bridge/_plt_vis.py +1 -1
  15. scitex/bridge/_stats_vis.py +1 -1
  16. scitex/dev/plt/__init__.py +272 -0
  17. scitex/dev/plt/plot_mpl_axhline.py +28 -0
  18. scitex/dev/plt/plot_mpl_axhspan.py +28 -0
  19. scitex/dev/plt/plot_mpl_axvline.py +28 -0
  20. scitex/dev/plt/plot_mpl_axvspan.py +28 -0
  21. scitex/dev/plt/plot_mpl_bar.py +29 -0
  22. scitex/dev/plt/plot_mpl_barh.py +29 -0
  23. scitex/dev/plt/plot_mpl_boxplot.py +28 -0
  24. scitex/dev/plt/plot_mpl_contour.py +31 -0
  25. scitex/dev/plt/plot_mpl_contourf.py +31 -0
  26. scitex/dev/plt/plot_mpl_errorbar.py +30 -0
  27. scitex/dev/plt/plot_mpl_eventplot.py +28 -0
  28. scitex/dev/plt/plot_mpl_fill.py +30 -0
  29. scitex/dev/plt/plot_mpl_fill_between.py +31 -0
  30. scitex/dev/plt/plot_mpl_hexbin.py +28 -0
  31. scitex/dev/plt/plot_mpl_hist.py +28 -0
  32. scitex/dev/plt/plot_mpl_hist2d.py +28 -0
  33. scitex/dev/plt/plot_mpl_imshow.py +29 -0
  34. scitex/dev/plt/plot_mpl_pcolormesh.py +31 -0
  35. scitex/dev/plt/plot_mpl_pie.py +29 -0
  36. scitex/dev/plt/plot_mpl_plot.py +29 -0
  37. scitex/dev/plt/plot_mpl_quiver.py +31 -0
  38. scitex/dev/plt/plot_mpl_scatter.py +28 -0
  39. scitex/dev/plt/plot_mpl_stackplot.py +31 -0
  40. scitex/dev/plt/plot_mpl_stem.py +29 -0
  41. scitex/dev/plt/plot_mpl_step.py +29 -0
  42. scitex/dev/plt/plot_mpl_violinplot.py +28 -0
  43. scitex/dev/plt/plot_sns_barplot.py +29 -0
  44. scitex/dev/plt/plot_sns_boxplot.py +29 -0
  45. scitex/dev/plt/plot_sns_heatmap.py +28 -0
  46. scitex/dev/plt/plot_sns_histplot.py +29 -0
  47. scitex/dev/plt/plot_sns_kdeplot.py +29 -0
  48. scitex/dev/plt/plot_sns_lineplot.py +31 -0
  49. scitex/dev/plt/plot_sns_scatterplot.py +29 -0
  50. scitex/dev/plt/plot_sns_stripplot.py +29 -0
  51. scitex/dev/plt/plot_sns_swarmplot.py +29 -0
  52. scitex/dev/plt/plot_sns_violinplot.py +29 -0
  53. scitex/dev/plt/plot_stx_bar.py +29 -0
  54. scitex/dev/plt/plot_stx_barh.py +29 -0
  55. scitex/dev/plt/plot_stx_box.py +28 -0
  56. scitex/dev/plt/plot_stx_boxplot.py +28 -0
  57. scitex/dev/plt/plot_stx_conf_mat.py +28 -0
  58. scitex/dev/plt/plot_stx_contour.py +31 -0
  59. scitex/dev/plt/plot_stx_ecdf.py +28 -0
  60. scitex/dev/plt/plot_stx_errorbar.py +30 -0
  61. scitex/dev/plt/plot_stx_fill_between.py +31 -0
  62. scitex/dev/plt/plot_stx_fillv.py +28 -0
  63. scitex/dev/plt/plot_stx_heatmap.py +28 -0
  64. scitex/dev/plt/plot_stx_image.py +28 -0
  65. scitex/dev/plt/plot_stx_imshow.py +28 -0
  66. scitex/dev/plt/plot_stx_joyplot.py +28 -0
  67. scitex/dev/plt/plot_stx_kde.py +28 -0
  68. scitex/dev/plt/plot_stx_line.py +28 -0
  69. scitex/dev/plt/plot_stx_mean_ci.py +28 -0
  70. scitex/dev/plt/plot_stx_mean_std.py +28 -0
  71. scitex/dev/plt/plot_stx_median_iqr.py +28 -0
  72. scitex/dev/plt/plot_stx_raster.py +28 -0
  73. scitex/dev/plt/plot_stx_rectangle.py +28 -0
  74. scitex/dev/plt/plot_stx_scatter.py +29 -0
  75. scitex/dev/plt/plot_stx_shaded_line.py +29 -0
  76. scitex/dev/plt/plot_stx_violin.py +28 -0
  77. scitex/dev/plt/plot_stx_violinplot.py +28 -0
  78. scitex/diagram/README.md +197 -0
  79. scitex/diagram/__init__.py +48 -0
  80. scitex/diagram/_compile.py +312 -0
  81. scitex/diagram/_diagram.py +355 -0
  82. scitex/diagram/_presets.py +173 -0
  83. scitex/diagram/_schema.py +182 -0
  84. scitex/diagram/_split.py +278 -0
  85. scitex/fig/__init__.py +352 -0
  86. scitex/{vis → fig}/backend/_parser.py +1 -1
  87. scitex/{vis → fig}/canvas.py +1 -1
  88. scitex/{vis → fig}/editor/__init__.py +5 -2
  89. scitex/{vis → fig}/editor/_dearpygui_editor.py +1 -1
  90. scitex/{vis → fig}/editor/_defaults.py +70 -5
  91. scitex/{vis → fig}/editor/_mpl_editor.py +1 -1
  92. scitex/{vis → fig}/editor/_qt_editor.py +182 -2
  93. scitex/{vis → fig}/editor/_tkinter_editor.py +1 -1
  94. scitex/fig/editor/edit/__init__.py +50 -0
  95. scitex/fig/editor/edit/backend_detector.py +109 -0
  96. scitex/fig/editor/edit/bundle_resolver.py +240 -0
  97. scitex/fig/editor/edit/editor_launcher.py +239 -0
  98. scitex/fig/editor/edit/manual_handler.py +53 -0
  99. scitex/fig/editor/edit/panel_loader.py +232 -0
  100. scitex/fig/editor/edit/path_resolver.py +67 -0
  101. scitex/fig/editor/flask_editor/_bbox.py +1299 -0
  102. scitex/fig/editor/flask_editor/_core.py +1429 -0
  103. scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
  104. scitex/fig/editor/flask_editor/_renderer.py +813 -0
  105. scitex/fig/editor/flask_editor/static/css/base/reset.css +41 -0
  106. scitex/fig/editor/flask_editor/static/css/base/typography.css +16 -0
  107. scitex/fig/editor/flask_editor/static/css/base/variables.css +85 -0
  108. scitex/fig/editor/flask_editor/static/css/components/buttons.css +217 -0
  109. scitex/fig/editor/flask_editor/static/css/components/context-menu.css +93 -0
  110. scitex/fig/editor/flask_editor/static/css/components/dropdown.css +57 -0
  111. scitex/fig/editor/flask_editor/static/css/components/forms.css +112 -0
  112. scitex/fig/editor/flask_editor/static/css/components/modal.css +59 -0
  113. scitex/fig/editor/flask_editor/static/css/components/sections.css +212 -0
  114. scitex/fig/editor/flask_editor/static/css/features/canvas.css +176 -0
  115. scitex/fig/editor/flask_editor/static/css/features/element-inspector.css +190 -0
  116. scitex/fig/editor/flask_editor/static/css/features/loading.css +59 -0
  117. scitex/fig/editor/flask_editor/static/css/features/overlay.css +45 -0
  118. scitex/fig/editor/flask_editor/static/css/features/panel-grid.css +95 -0
  119. scitex/fig/editor/flask_editor/static/css/features/selection.css +101 -0
  120. scitex/fig/editor/flask_editor/static/css/features/statistics.css +138 -0
  121. scitex/fig/editor/flask_editor/static/css/index.css +31 -0
  122. scitex/fig/editor/flask_editor/static/css/layout/container.css +7 -0
  123. scitex/fig/editor/flask_editor/static/css/layout/controls.css +56 -0
  124. scitex/fig/editor/flask_editor/static/css/layout/preview.css +78 -0
  125. scitex/fig/editor/flask_editor/static/js/alignment/axis.js +314 -0
  126. scitex/fig/editor/flask_editor/static/js/alignment/basic.js +107 -0
  127. scitex/fig/editor/flask_editor/static/js/alignment/distribute.js +54 -0
  128. scitex/fig/editor/flask_editor/static/js/canvas/canvas.js +172 -0
  129. scitex/fig/editor/flask_editor/static/js/canvas/dragging.js +258 -0
  130. scitex/fig/editor/flask_editor/static/js/canvas/resize.js +48 -0
  131. scitex/fig/editor/flask_editor/static/js/canvas/selection.js +71 -0
  132. scitex/fig/editor/flask_editor/static/js/core/api.js +288 -0
  133. scitex/fig/editor/flask_editor/static/js/core/state.js +143 -0
  134. scitex/fig/editor/flask_editor/static/js/core/utils.js +245 -0
  135. scitex/fig/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
  136. scitex/fig/editor/flask_editor/static/js/editor/bbox.js +339 -0
  137. scitex/fig/editor/flask_editor/static/js/editor/element-drag.js +286 -0
  138. scitex/fig/editor/flask_editor/static/js/editor/overlay.js +371 -0
  139. scitex/fig/editor/flask_editor/static/js/editor/preview.js +293 -0
  140. scitex/fig/editor/flask_editor/static/js/main.js +426 -0
  141. scitex/fig/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
  142. scitex/fig/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
  143. scitex/fig/editor/flask_editor/static/js/ui/controls.js +184 -0
  144. scitex/fig/editor/flask_editor/static/js/ui/download.js +57 -0
  145. scitex/fig/editor/flask_editor/static/js/ui/help.js +100 -0
  146. scitex/fig/editor/flask_editor/static/js/ui/theme.js +34 -0
  147. scitex/fig/editor/flask_editor/templates/__init__.py +123 -0
  148. scitex/fig/editor/flask_editor/templates/_html.py +852 -0
  149. scitex/fig/editor/flask_editor/templates/_scripts.py +4933 -0
  150. scitex/fig/editor/flask_editor/templates/_styles.py +1658 -0
  151. scitex/{vis → fig}/io/__init__.py +13 -1
  152. scitex/fig/io/_bundle.py +1058 -0
  153. scitex/{vis → fig}/io/_canvas.py +1 -1
  154. scitex/{vis → fig}/io/_data.py +1 -1
  155. scitex/{vis → fig}/io/_export.py +1 -1
  156. scitex/{vis → fig}/io/_load.py +1 -1
  157. scitex/{vis → fig}/io/_panel.py +1 -1
  158. scitex/{vis → fig}/io/_save.py +1 -1
  159. scitex/{vis → fig}/model/__init__.py +1 -1
  160. scitex/{vis → fig}/model/_annotations.py +1 -1
  161. scitex/{vis → fig}/model/_axes.py +1 -1
  162. scitex/{vis → fig}/model/_figure.py +1 -1
  163. scitex/{vis → fig}/model/_guides.py +1 -1
  164. scitex/{vis → fig}/model/_plot.py +1 -1
  165. scitex/{vis → fig}/model/_styles.py +1 -1
  166. scitex/{vis → fig}/utils/__init__.py +1 -1
  167. scitex/io/__init__.py +22 -26
  168. scitex/io/_bundle.py +493 -0
  169. scitex/io/_flush.py +5 -2
  170. scitex/io/_load.py +98 -0
  171. scitex/io/_load_modules/_H5Explorer.py +5 -2
  172. scitex/io/_load_modules/_canvas.py +2 -2
  173. scitex/io/_load_modules/_image.py +3 -4
  174. scitex/io/_load_modules/_txt.py +4 -2
  175. scitex/io/_metadata.py +34 -324
  176. scitex/io/_metadata_modules/__init__.py +46 -0
  177. scitex/io/_metadata_modules/_embed.py +70 -0
  178. scitex/io/_metadata_modules/_read.py +64 -0
  179. scitex/io/_metadata_modules/_utils.py +79 -0
  180. scitex/io/_metadata_modules/embed_metadata_jpeg.py +74 -0
  181. scitex/io/_metadata_modules/embed_metadata_pdf.py +53 -0
  182. scitex/io/_metadata_modules/embed_metadata_png.py +26 -0
  183. scitex/io/_metadata_modules/embed_metadata_svg.py +62 -0
  184. scitex/io/_metadata_modules/read_metadata_jpeg.py +57 -0
  185. scitex/io/_metadata_modules/read_metadata_pdf.py +51 -0
  186. scitex/io/_metadata_modules/read_metadata_png.py +39 -0
  187. scitex/io/_metadata_modules/read_metadata_svg.py +44 -0
  188. scitex/io/_qr_utils.py +5 -3
  189. scitex/io/_save.py +548 -30
  190. scitex/io/_save_modules/_canvas.py +3 -3
  191. scitex/io/_save_modules/_image.py +5 -9
  192. scitex/io/_save_modules/_tex.py +7 -4
  193. scitex/io/_zip_bundle.py +439 -0
  194. scitex/io/utils/h5_to_zarr.py +11 -9
  195. scitex/msword/__init__.py +255 -0
  196. scitex/msword/profiles.py +357 -0
  197. scitex/msword/reader.py +753 -0
  198. scitex/msword/utils.py +289 -0
  199. scitex/msword/writer.py +362 -0
  200. scitex/plt/__init__.py +5 -2
  201. scitex/plt/_subplots/_AxesWrapper.py +6 -6
  202. scitex/plt/_subplots/_AxisWrapper.py +15 -9
  203. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/__init__.py +36 -0
  204. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_labels.py +264 -0
  205. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_metadata.py +213 -0
  206. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_visual.py +128 -0
  207. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +59 -0
  208. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_base.py +34 -0
  209. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_scientific.py +593 -0
  210. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_statistical.py +654 -0
  211. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_stx_aliases.py +527 -0
  212. scitex/plt/_subplots/_AxisWrapperMixins/_RawMatplotlibMixin.py +321 -0
  213. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/__init__.py +33 -0
  214. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_base.py +152 -0
  215. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +600 -0
  216. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +79 -5
  217. scitex/plt/_subplots/_FigWrapper.py +6 -6
  218. scitex/plt/_subplots/_SubplotsWrapper.py +28 -18
  219. scitex/plt/_subplots/_export_as_csv.py +35 -5
  220. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +8 -0
  221. scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +10 -21
  222. scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +18 -7
  223. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +28 -12
  224. scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +10 -4
  225. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +13 -1
  226. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +12 -2
  227. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +10 -3
  228. scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +10 -4
  229. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +18 -3
  230. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +44 -36
  231. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +14 -2
  232. scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +11 -5
  233. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_bar.py +84 -0
  234. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_barh.py +85 -0
  235. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_conf_mat.py +14 -3
  236. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
  237. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +14 -2
  238. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
  239. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +16 -6
  240. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +29 -19
  241. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
  242. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +22 -5
  243. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +18 -14
  244. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +18 -14
  245. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +18 -14
  246. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +10 -2
  247. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter.py +51 -0
  248. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter_hist.py +18 -9
  249. scitex/plt/ax/_plot/_stx_ecdf.py +4 -2
  250. scitex/plt/gallery/_generate.py +421 -14
  251. scitex/plt/io/__init__.py +53 -0
  252. scitex/plt/io/_bundle.py +490 -0
  253. scitex/plt/io/_layered_bundle.py +1343 -0
  254. scitex/plt/styles/SCITEX_STYLE.yaml +26 -0
  255. scitex/plt/styles/__init__.py +14 -0
  256. scitex/plt/styles/presets.py +78 -0
  257. scitex/plt/utils/__init__.py +13 -1
  258. scitex/plt/utils/_collect_figure_metadata.py +10 -14
  259. scitex/plt/utils/_configure_mpl.py +6 -18
  260. scitex/plt/utils/_crop.py +32 -14
  261. scitex/plt/utils/_csv_column_naming.py +54 -0
  262. scitex/plt/utils/_figure_mm.py +116 -1
  263. scitex/plt/utils/_hitmap.py +1643 -0
  264. scitex/plt/utils/metadata/__init__.py +25 -0
  265. scitex/plt/utils/metadata/_core.py +9 -10
  266. scitex/plt/utils/metadata/_dimensions.py +6 -3
  267. scitex/plt/utils/metadata/_editable_export.py +405 -0
  268. scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
  269. scitex/schema/__init__.py +109 -16
  270. scitex/schema/_canvas.py +1 -1
  271. scitex/schema/_plot.py +1015 -0
  272. scitex/schema/_stats.py +2 -2
  273. scitex/stats/__init__.py +117 -0
  274. scitex/stats/io/__init__.py +29 -0
  275. scitex/stats/io/_bundle.py +156 -0
  276. scitex/tex/__init__.py +4 -0
  277. scitex/tex/_export.py +890 -0
  278. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/METADATA +11 -1
  279. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/RECORD +294 -170
  280. scitex/io/memo.md +0 -2827
  281. scitex/plt/REQUESTS.md +0 -191
  282. scitex/plt/_subplots/TODO.md +0 -53
  283. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +0 -559
  284. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +0 -1609
  285. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +0 -447
  286. scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_between.json +0 -110
  287. scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_betweenx.json +0 -88
  288. scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fill_between.json +0 -103
  289. scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fillv.json +0 -106
  290. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/bar.json +0 -92
  291. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/barh.json +0 -92
  292. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/boxplot.json +0 -92
  293. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_bar.json +0 -84
  294. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_barh.json +0 -84
  295. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_box.json +0 -83
  296. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_boxplot.json +0 -93
  297. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violin.json +0 -91
  298. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violinplot.json +0 -91
  299. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/violinplot.json +0 -91
  300. scitex/plt/templates/research-master/scitex/vis/gallery/contour/contour.json +0 -97
  301. scitex/plt/templates/research-master/scitex/vis/gallery/contour/contourf.json +0 -98
  302. scitex/plt/templates/research-master/scitex/vis/gallery/contour/stx_contour.json +0 -84
  303. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist.json +0 -101
  304. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist2d.json +0 -96
  305. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_ecdf.json +0 -95
  306. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_joyplot.json +0 -95
  307. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_kde.json +0 -93
  308. scitex/plt/templates/research-master/scitex/vis/gallery/grid/imshow.json +0 -95
  309. scitex/plt/templates/research-master/scitex/vis/gallery/grid/matshow.json +0 -95
  310. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_conf_mat.json +0 -83
  311. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_heatmap.json +0 -92
  312. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_image.json +0 -121
  313. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_imshow.json +0 -84
  314. scitex/plt/templates/research-master/scitex/vis/gallery/line/plot.json +0 -110
  315. scitex/plt/templates/research-master/scitex/vis/gallery/line/step.json +0 -92
  316. scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_line.json +0 -95
  317. scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_shaded_line.json +0 -96
  318. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/hexbin.json +0 -95
  319. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/scatter.json +0 -95
  320. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stem.json +0 -92
  321. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stx_scatter.json +0 -84
  322. scitex/plt/templates/research-master/scitex/vis/gallery/special/pie.json +0 -94
  323. scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_raster.json +0 -109
  324. scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_rectangle.json +0 -108
  325. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/errorbar.json +0 -93
  326. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_errorbar.json +0 -84
  327. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_ci.json +0 -96
  328. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_std.json +0 -96
  329. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_median_iqr.json +0 -96
  330. scitex/plt/templates/research-master/scitex/vis/gallery/vector/quiver.json +0 -99
  331. scitex/plt/templates/research-master/scitex/vis/gallery/vector/streamplot.json +0 -100
  332. scitex/vis/__init__.py +0 -177
  333. scitex/vis/editor/_edit.py +0 -390
  334. scitex/vis/editor/flask_editor/_bbox.py +0 -529
  335. scitex/vis/editor/flask_editor/_core.py +0 -168
  336. scitex/vis/editor/flask_editor/_renderer.py +0 -393
  337. scitex/vis/editor/flask_editor/templates/__init__.py +0 -33
  338. scitex/vis/editor/flask_editor/templates/_html.py +0 -513
  339. scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
  340. scitex/vis/editor/flask_editor/templates/_styles.py +0 -739
  341. /scitex/{vis → fig}/README.md +0 -0
  342. /scitex/{vis → fig}/backend/__init__.py +0 -0
  343. /scitex/{vis → fig}/backend/_export.py +0 -0
  344. /scitex/{vis → fig}/backend/_render.py +0 -0
  345. /scitex/{vis → fig}/docs/CANVAS_ARCHITECTURE.md +0 -0
  346. /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
  347. /scitex/{vis → fig}/editor/flask_editor/__init__.py +0 -0
  348. /scitex/{vis → fig}/editor/flask_editor/_utils.py +0 -0
  349. /scitex/{vis → fig}/io/_directory.py +0 -0
  350. /scitex/{vis → fig}/model/_plot_types.py +0 -0
  351. /scitex/{vis → fig}/utils/_defaults.py +0 -0
  352. /scitex/{vis → fig}/utils/_validate.py +0 -0
  353. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/WHEEL +0 -0
  354. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/entry_points.txt +0 -0
  355. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,447 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Timestamp: "2025-05-18 16:26:18 (ywatanabe)"
4
- # File: /home/ywatanabe/proj/scitex_repo/src/scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py
5
- # ----------------------------------------
6
- import os
7
-
8
- __FILE__ = __file__
9
- __DIR__ = os.path.dirname(__FILE__)
10
- # ----------------------------------------
11
-
12
- from functools import wraps
13
-
14
- import scitex
15
- import numpy as np
16
- import pandas as pd
17
- import seaborn as sns
18
-
19
- from ....plt import ax as ax_module
20
-
21
-
22
- def sns_copy_doc(func):
23
- @wraps(func)
24
- def wrapper(self, *args, **kwargs):
25
- return func(self, *args, **kwargs)
26
-
27
- # Extract the seaborn method name (e.g., sns_boxplot -> boxplot)
28
- wrapper.__doc__ = getattr(sns, func.__name__.split("sns_")[-1]).__doc__
29
- return wrapper
30
-
31
-
32
- class SeabornMixin:
33
- def _sns_base(
34
- self, method_name, *args, track=True, track_obj=None, id=None, **kwargs
35
- ):
36
- # Extract seaborn method name (e.g., sns_boxplot -> boxplot)
37
- sns_method_name = method_name.split("sns_")[-1]
38
-
39
- with self._no_tracking():
40
- sns_plot_fn = getattr(sns, sns_method_name)
41
-
42
- if kwargs.get("hue_colors"):
43
- kwargs = scitex.gen.alternate_kwarg(
44
- kwargs, primary_key="palette", alternate_key="hue_colors"
45
- )
46
-
47
- # Suppress matplotlib's categorical units warning and info messages
48
- import warnings
49
- from scitex import logging
50
-
51
- # Temporarily suppress matplotlib's INFO level logging
52
- mpl_logger = logging.getLogger("matplotlib")
53
- original_level = mpl_logger.level
54
- mpl_logger.setLevel(logging.WARNING)
55
-
56
- try:
57
- with warnings.catch_warnings():
58
- warnings.filterwarnings(
59
- "ignore",
60
- message=".*categorical units.*parsable as floats or dates.*",
61
- category=UserWarning,
62
- )
63
- warnings.filterwarnings(
64
- "ignore",
65
- message=".*Using categorical units.*",
66
- module="matplotlib.*",
67
- )
68
- warnings.simplefilter("ignore", UserWarning)
69
-
70
- self._axis_mpl = sns_plot_fn(ax=self._axis_mpl, *args, **kwargs)
71
- finally:
72
- # Restore original logging level
73
- mpl_logger.setLevel(original_level)
74
-
75
- # Post-processing: Set KDE line style for histplot with kde=True
76
- if sns_method_name == "histplot" and kwargs.get("kde", False):
77
- from scitex.plt.utils import mm_to_pt
78
-
79
- kde_lw = mm_to_pt(0.2) # 0.2mm for KDE lines
80
- # KDE lines are added as Line2D objects after the histogram
81
- for line in self._axis_mpl.get_lines():
82
- line.set_linewidth(kde_lw)
83
- line.set_color("black") # Black KDE line
84
- line.set_linestyle("--") # Dashed line
85
-
86
- # Post-processing: Set alpha to 1.0 for histplot bars if not specified
87
- if sns_method_name == "histplot" and "alpha" not in kwargs:
88
- for patch in self._axis_mpl.patches:
89
- patch.set_alpha(1.0)
90
-
91
- # Track the plot if required
92
- track_obj = track_obj if track_obj is not None else args
93
- # Create a tracked_dict with appropriate structure
94
- tracked_dict = {
95
- "data": track_obj, # Use 'data' key for consistency with formatters
96
- "args": args, # Keep args for backward compatibility
97
- }
98
- self._track(track, id, method_name, tracked_dict, kwargs)
99
-
100
- def _sns_base_xyhue(self, method_name, *args, track=True, id=None, **kwargs):
101
- """Formats data passed to sns functions with (data=data, x=x, y=y) keyword arguments"""
102
- df = kwargs.get("data")
103
- x, y, hue = kwargs.get("x"), kwargs.get("y"), kwargs.get("hue")
104
-
105
- track_obj = self._sns_prepare_xyhue(df, x, y, hue) if df is not None else None
106
- self._sns_base(
107
- method_name,
108
- *args,
109
- track=track,
110
- track_obj=track_obj,
111
- id=id,
112
- **kwargs,
113
- )
114
-
115
- def _sns_prepare_xyhue(self, data=None, x=None, y=None, hue=None, **kwargs):
116
- """Returns obj to track"""
117
- data = data.reset_index()
118
-
119
- if hue is not None:
120
- if x is None and y is None:
121
- return data
122
- elif x is None:
123
- agg_dict = {}
124
- for hh in data[hue].unique():
125
- agg_dict[hh] = data.loc[data[hue] == hh, y]
126
- df = scitex.pd.force_df(agg_dict)
127
- return df
128
-
129
- elif y is None:
130
- df = pd.concat(
131
- [data.loc[data[hue] == hh, x] for hh in data[hue].unique()],
132
- axis=1,
133
- )
134
- return df
135
- else:
136
- pivoted_data = data.pivot_table(
137
- values=y,
138
- index=data.index,
139
- columns=[x, hue],
140
- aggfunc="first",
141
- )
142
- pivoted_data.columns = [
143
- f"{col[0]}-{col[1]}" for col in pivoted_data.columns
144
- ]
145
- return pivoted_data
146
- else:
147
- if x is None and y is None:
148
- return data
149
-
150
- elif x is None:
151
- return data[[y]]
152
-
153
- elif y is None:
154
- return data[[x]]
155
-
156
- else:
157
- return data.pivot_table(
158
- values=y, index=data.index, columns=x, aggfunc="first"
159
- )
160
-
161
- @sns_copy_doc
162
- def sns_barplot(self, data=None, x=None, y=None, track=True, id=None, **kwargs):
163
- self._sns_base_xyhue(
164
- "sns_barplot", data=data, x=x, y=y, track=track, id=id, **kwargs
165
- )
166
-
167
- @sns_copy_doc
168
- def sns_boxplot(
169
- self,
170
- data=None,
171
- x=None,
172
- y=None,
173
- strip=False,
174
- track=True,
175
- id=None,
176
- **kwargs,
177
- ):
178
- self._sns_base_xyhue(
179
- "sns_boxplot", data=data, x=x, y=y, track=track, id=id, **kwargs
180
- )
181
-
182
- # Post-processing: Style boxplot with black medians
183
- from scitex.plt.utils import mm_to_pt
184
-
185
- lw_pt = mm_to_pt(0.2)
186
-
187
- # Find and style boxplot lines (medians are typically the lines inside boxes)
188
- for line in self._axis_mpl.get_lines():
189
- # Style all lines to have consistent width
190
- line.set_linewidth(lw_pt)
191
- # Medians in seaborn boxplots are colored by default
192
- # Check if this is a median line (horizontal, short)
193
- xdata = line.get_xdata()
194
- ydata = line.get_ydata()
195
- if len(xdata) == 2 and len(ydata) == 2:
196
- # Horizontal line (median or whisker cap)
197
- if ydata[0] == ydata[1]:
198
- x_span = abs(xdata[1] - xdata[0])
199
- # Medians have smaller span than whisker caps
200
- if x_span < 0.4: # Typical median line span
201
- line.set_color("black")
202
-
203
- if strip:
204
- strip_kwargs = kwargs.copy()
205
- strip_kwargs.pop("notch", None) # Remove boxplot-specific kwargs
206
- strip_kwargs.pop("whis", None)
207
- self.sns_stripplot(
208
- data=data,
209
- x=x,
210
- y=y,
211
- track=False,
212
- id=f"{id}_strip",
213
- **strip_kwargs,
214
- )
215
-
216
- @sns_copy_doc
217
- def sns_heatmap(self, *args, xyz=False, track=True, id=None, **kwargs):
218
- method_name = "sns_heatmap"
219
- df = args[0]
220
- if xyz:
221
- df = scitex.pd.to_xyz(df)
222
- self._sns_base(method_name, *args, track=track, track_obj=df, id=id, **kwargs)
223
-
224
- @sns_copy_doc
225
- def sns_histplot(
226
- self,
227
- data=None,
228
- x=None,
229
- y=None,
230
- bins=10,
231
- align_bins=True,
232
- track=True,
233
- id=None,
234
- **kwargs,
235
- ):
236
- """
237
- Plot a histogram using seaborn with bin alignment support.
238
-
239
- This method enhances the seaborn histplot with the ability to align
240
- bins across multiple histograms on the same axis and export bin data.
241
-
242
- Args:
243
- data: Input data (DataFrame, array, or series)
244
- x: Column name for x-axis data
245
- y: Column name for y-axis data
246
- bins: Bin specification (count or edges)
247
- align_bins: Whether to align bins with other histograms on this axis
248
- track: Whether to track this operation
249
- id: Identifier for tracking
250
- **kwargs: Additional keywords passed to seaborn histplot
251
- """
252
- # Method Name for downstream csv exporting
253
- method_name = "sns_histplot"
254
-
255
- # Get the data to plot for bin alignment
256
- plot_data = None
257
- if data is not None and x is not None:
258
- plot_data = (
259
- data[x].values
260
- if hasattr(data, "columns") and x in data.columns
261
- else None
262
- )
263
-
264
- # Get axis and histogram IDs for bin alignment
265
- axis_id = str(hash(self._axis_mpl))
266
- hist_id = id if id is not None else str(self.id)
267
-
268
- # Calculate range from data if needed
269
- range_value = kwargs.get("binrange", None)
270
-
271
- # Align bins if requested and data is available
272
- if align_bins and plot_data is not None:
273
- from ....plt.utils import histogram_bin_manager
274
-
275
- bins_val, range_val = histogram_bin_manager.register_histogram(
276
- axis_id, hist_id, plot_data, bins, range_value
277
- )
278
-
279
- # Update bins in kwargs
280
- kwargs["bins"] = bins_val
281
-
282
- # Update range in kwargs if it was provided
283
- if range_value is not None:
284
- kwargs["binrange"] = range_val
285
-
286
- # Plotting with seaborn
287
- with self._no_tracking():
288
- # Execute the seaborn histplot function
289
- # Don't pass bins as a separate parameter since it may already be in kwargs
290
- sns_plot = sns.histplot(data=data, x=x, y=y, ax=self._axis_mpl, **kwargs)
291
-
292
- # Extract bin information from the plotted artists
293
- hist_result = None
294
- if hasattr(sns_plot, "patches") and sns_plot.patches:
295
- # Get bin information from the plot patches
296
- patches = sns_plot.patches
297
- if patches:
298
- counts = np.array([p.get_height() for p in patches])
299
- # Extract bin edges from patch positions
300
- bin_edges = []
301
- for p in patches:
302
- bin_edges.append(p.get_x())
303
- # Add the rightmost edge
304
- if patches:
305
- bin_edges.append(patches[-1].get_x() + patches[-1].get_width())
306
-
307
- hist_result = (counts, np.array(bin_edges))
308
-
309
- # Create a track object for the formatter
310
- track_obj = self._sns_prepare_xyhue(data, x, y, kwargs.get("hue"))
311
-
312
- # Enhanced tracked dict with histogram result
313
- tracked_dict = {
314
- "data": track_obj,
315
- "args": (data, x, y),
316
- "hist_result": hist_result,
317
- }
318
-
319
- # Track the operation
320
- self._track(track, id, method_name, tracked_dict, kwargs)
321
-
322
- return sns_plot
323
-
324
- @sns_copy_doc
325
- def sns_kdeplot(
326
- self,
327
- data=None,
328
- x=None,
329
- y=None,
330
- xlim=None,
331
- ylim=None,
332
- track=True,
333
- id=None,
334
- **kwargs,
335
- ):
336
- # Remove hue from kwargs before passing to stx_kde
337
- hue_col = kwargs.pop("hue", None)
338
-
339
- if hue_col:
340
- hues = data[hue_col]
341
-
342
- if x is not None:
343
- lim = xlim
344
- for hue in np.unique(hues):
345
- _data = data.loc[hues == hue, x]
346
- self.stx_kde(_data, xlim=lim, label=hue, id=hue, **kwargs)
347
-
348
- if y is not None:
349
- lim = ylim
350
- for hue in np.unique(hues):
351
- _data = data.loc[hues == hue, y]
352
- self.stx_kde(_data, xlim=lim, label=hue, id=hue, **kwargs)
353
-
354
- else:
355
- if x is not None:
356
- _data, lim = data[x], xlim
357
- if y is not None:
358
- _data, lim = data[y], ylim
359
- self.stx_kde(_data, xlim=lim, **kwargs)
360
-
361
- @sns_copy_doc
362
- def sns_pairplot(self, *args, track=True, id=None, **kwargs):
363
- self._sns_base("sns_pairplot", *args, track=track, id=id, **kwargs)
364
-
365
- @sns_copy_doc
366
- def sns_scatterplot(self, data=None, x=None, y=None, track=True, id=None, **kwargs):
367
- self._sns_base_xyhue(
368
- "sns_scatterplot",
369
- data=data,
370
- x=x,
371
- y=y,
372
- track=track,
373
- id=id,
374
- **kwargs,
375
- )
376
-
377
- @sns_copy_doc
378
- def sns_lineplot(self, data=None, x=None, y=None, track=True, id=None, **kwargs):
379
- self._sns_base_xyhue(
380
- "sns_lineplot",
381
- data=data,
382
- x=x,
383
- y=y,
384
- track=track,
385
- id=id,
386
- **kwargs,
387
- )
388
-
389
- @sns_copy_doc
390
- def sns_swarmplot(self, data=None, x=None, y=None, track=True, id=None, **kwargs):
391
- self._sns_base_xyhue(
392
- "sns_swarmplot", data=data, x=x, y=y, track=track, id=id, **kwargs
393
- )
394
-
395
- @sns_copy_doc
396
- def sns_stripplot(self, data=None, x=None, y=None, track=True, id=None, **kwargs):
397
- self._sns_base_xyhue(
398
- "sns_stripplot", data=data, x=x, y=y, track=track, id=id, **kwargs
399
- )
400
-
401
- # @sns_copy_doc
402
- # def sns_violinplot(
403
- # self, data=None, x=None, y=None, track=True, id=None, **kwargs
404
- # ):
405
- # self._sns_base_xyhue(
406
- # "sns_violinplot", data=data, x=x, y=y, track=track, id=id, **kwargs
407
- # )
408
-
409
- @sns_copy_doc
410
- def sns_violinplot(
411
- self,
412
- data=None,
413
- x=None,
414
- y=None,
415
- track=True,
416
- id=None,
417
- half=False,
418
- **kwargs,
419
- ):
420
- if half:
421
- with self._no_tracking():
422
- self._axis_mpl = ax_module.plot_half_violin(
423
- self._axis_mpl, data=data, x=x, y=y, **kwargs
424
- )
425
- else:
426
- self._sns_base_xyhue(
427
- "sns_violinplot",
428
- data=data,
429
- x=x,
430
- y=y,
431
- track=track,
432
- id=id,
433
- **kwargs,
434
- )
435
-
436
- # Tracking
437
- track_obj = self._sns_prepare_xyhue(data, x, y, kwargs.get("hue"))
438
- self._track(track, id, "sns_violinplot", track_obj, kwargs)
439
-
440
- return self._axis_mpl
441
-
442
- @sns_copy_doc
443
- def sns_jointplot(self, *args, track=True, id=None, **kwargs):
444
- self._sns_base("sns_jointplot", *args, track=track, id=id, **kwargs)
445
-
446
-
447
- # EOF
@@ -1,110 +0,0 @@
1
- {
2
- "scitex_schema": "scitex.plt.figure.recipe",
3
- "scitex_schema_version": "0.2.0",
4
- "figure_uuid": "c156df48-66df-4140-93d6-c635d1fb215c",
5
- "runtime": {
6
- "scitex_version": "2.6.0",
7
- "matplotlib_version": "3.10.7",
8
- "created_at": "2025-12-09T23:03:35.944035"
9
- },
10
- "figure": {
11
- "size_mm": [
12
- 80.0,
13
- 68.0
14
- ],
15
- "dpi": 300,
16
- "auto_crop": true,
17
- "crop_margin_mm": 1.0,
18
- "mode": "publication"
19
- },
20
- "axes_bbox_px": {
21
- "x0": 177,
22
- "y0": 148,
23
- "x1": 650,
24
- "y1": 479,
25
- "width": 472,
26
- "height": 331
27
- },
28
- "axes_bbox_mm": {
29
- "x0": 20.0,
30
- "y0": 19.99,
31
- "x1": 60.0,
32
- "y1": 47.99,
33
- "width": 40.0,
34
- "height": 28.0
35
- },
36
- "style": {
37
- "axis_thickness_mm": 0.2,
38
- "tick_length_mm": 0.8,
39
- "tick_thickness_mm": 0.2,
40
- "trace_thickness_mm": 0.2,
41
- "marker_size_mm": 0.8,
42
- "axis_font_size_pt": 7,
43
- "tick_font_size_pt": 7,
44
- "title_font_size_pt": 8,
45
- "legend_font_size_pt": 6,
46
- "label_pad_pt": 0.5,
47
- "tick_pad_pt": 2.0,
48
- "title_pad_pt": 1.0,
49
- "font_family": "Arial",
50
- "n_ticks": 4
51
- },
52
- "axes": {
53
- "ax_00": {
54
- "grid_position": {
55
- "row": 0,
56
- "col": 0
57
- },
58
- "xaxis": {
59
- "label": "Time [s]",
60
- "lim": [
61
- -0.5,
62
- 10.5
63
- ]
64
- },
65
- "yaxis": {
66
- "label": "Value",
67
- "lim": [
68
- -1.6493,
69
- 1.6496
70
- ]
71
- },
72
- "calls": [
73
- {
74
- "id": "ax_00_confidence_region",
75
- "method": "fill_between",
76
- "data_ref": {
77
- "x": "ax-row-0-col-0_trace-id-ax_00_confidence_region_variable-x",
78
- "y1": "ax-row-0-col-0_trace-id-ax_00_confidence_region_variable-y1",
79
- "y2": "ax-row-0-col-0_trace-id-ax_00_confidence_region_variable-y2"
80
- },
81
- "kwargs": {
82
- "alpha": 0.3
83
- }
84
- },
85
- {
86
- "id": "ax_00_mean_line",
87
- "method": "plot",
88
- "data_ref": {
89
- "x": "ax-row-0-col-0_trace-id-ax_00_mean_line_variable-x",
90
- "y": "ax-row-0-col-0_trace-id-ax_00_mean_line_variable-y"
91
- },
92
- "kwargs": {
93
- "linewidth": 0.5669
94
- }
95
- }
96
- ]
97
- }
98
- },
99
- "data": {
100
- "csv_path": "fill_between.csv",
101
- "columns_actual": [
102
- "ax-row-0-col-0_trace-id-confidence-region_variable-x",
103
- "ax-row-0-col-0_trace-id-confidence-region_variable-y1",
104
- "ax-row-0-col-0_trace-id-confidence-region_variable-y2",
105
- "ax-row-0-col-0_trace-id-mean-line_variable-x",
106
- "ax-row-0-col-0_trace-id-mean-line_variable-y"
107
- ],
108
- "csv_hash": "aafc818a17cc13f5"
109
- }
110
- }
@@ -1,88 +0,0 @@
1
- {
2
- "scitex_schema": "scitex.plt.figure.recipe",
3
- "scitex_schema_version": "0.2.0",
4
- "figure_uuid": "57234c9a-14d5-4a38-aa0b-3cdb959c8928",
5
- "runtime": {
6
- "scitex_version": "2.6.0",
7
- "matplotlib_version": "3.10.7",
8
- "created_at": "2025-12-09T23:03:36.458357"
9
- },
10
- "figure": {
11
- "size_mm": [
12
- 80.0,
13
- 68.0
14
- ],
15
- "dpi": 300,
16
- "auto_crop": true,
17
- "crop_margin_mm": 1.0,
18
- "mode": "publication"
19
- },
20
- "axes_bbox_px": {
21
- "x0": 156,
22
- "y0": 148,
23
- "x1": 629,
24
- "y1": 479,
25
- "width": 472,
26
- "height": 331
27
- },
28
- "axes_bbox_mm": {
29
- "x0": 20.0,
30
- "y0": 19.99,
31
- "x1": 60.0,
32
- "y1": 47.99,
33
- "width": 40.0,
34
- "height": 28.0
35
- },
36
- "style": {
37
- "axis_thickness_mm": 0.2,
38
- "tick_length_mm": 0.8,
39
- "tick_thickness_mm": 0.2,
40
- "trace_thickness_mm": 0.2,
41
- "marker_size_mm": 0.8,
42
- "axis_font_size_pt": 7,
43
- "tick_font_size_pt": 7,
44
- "title_font_size_pt": 8,
45
- "legend_font_size_pt": 6,
46
- "label_pad_pt": 0.5,
47
- "tick_pad_pt": 2.0,
48
- "title_pad_pt": 1.0,
49
- "font_family": "Arial",
50
- "n_ticks": 4
51
- },
52
- "axes": {
53
- "ax_00": {
54
- "grid_position": {
55
- "row": 0,
56
- "col": 0
57
- },
58
- "xaxis": {
59
- "label": "Value",
60
- "lim": [
61
- -1.1493,
62
- 2.1496
63
- ]
64
- },
65
- "yaxis": {
66
- "label": "Depth [m]",
67
- "lim": [
68
- -0.5,
69
- 10.5
70
- ]
71
- },
72
- "calls": [
73
- {
74
- "id": "ax_00_horizontal_band",
75
- "method": "fill_betweenx",
76
- "data_ref": {
77
- "x": "ax-row-0-col-0_trace-id-ax_00_horizontal_band_variable-x",
78
- "y1": "ax-row-0-col-0_trace-id-ax_00_horizontal_band_variable-y1",
79
- "y2": "ax-row-0-col-0_trace-id-ax_00_horizontal_band_variable-y2"
80
- },
81
- "kwargs": {
82
- "alpha": 0.3
83
- }
84
- }
85
- ]
86
- }
87
- }
88
- }