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.
- scitex/__init__.py +6 -2
- scitex/__version__.py +1 -1
- scitex/audio/README.md +52 -0
- scitex/audio/__init__.py +384 -0
- scitex/audio/__main__.py +129 -0
- scitex/audio/_tts.py +334 -0
- scitex/audio/engines/__init__.py +44 -0
- scitex/audio/engines/base.py +275 -0
- scitex/audio/engines/elevenlabs_engine.py +143 -0
- scitex/audio/engines/gtts_engine.py +162 -0
- scitex/audio/engines/pyttsx3_engine.py +131 -0
- scitex/audio/mcp_server.py +757 -0
- scitex/bridge/_helpers.py +1 -1
- scitex/bridge/_plt_vis.py +1 -1
- scitex/bridge/_stats_vis.py +1 -1
- scitex/dev/plt/__init__.py +272 -0
- scitex/dev/plt/plot_mpl_axhline.py +28 -0
- scitex/dev/plt/plot_mpl_axhspan.py +28 -0
- scitex/dev/plt/plot_mpl_axvline.py +28 -0
- scitex/dev/plt/plot_mpl_axvspan.py +28 -0
- scitex/dev/plt/plot_mpl_bar.py +29 -0
- scitex/dev/plt/plot_mpl_barh.py +29 -0
- scitex/dev/plt/plot_mpl_boxplot.py +28 -0
- scitex/dev/plt/plot_mpl_contour.py +31 -0
- scitex/dev/plt/plot_mpl_contourf.py +31 -0
- scitex/dev/plt/plot_mpl_errorbar.py +30 -0
- scitex/dev/plt/plot_mpl_eventplot.py +28 -0
- scitex/dev/plt/plot_mpl_fill.py +30 -0
- scitex/dev/plt/plot_mpl_fill_between.py +31 -0
- scitex/dev/plt/plot_mpl_hexbin.py +28 -0
- scitex/dev/plt/plot_mpl_hist.py +28 -0
- scitex/dev/plt/plot_mpl_hist2d.py +28 -0
- scitex/dev/plt/plot_mpl_imshow.py +29 -0
- scitex/dev/plt/plot_mpl_pcolormesh.py +31 -0
- scitex/dev/plt/plot_mpl_pie.py +29 -0
- scitex/dev/plt/plot_mpl_plot.py +29 -0
- scitex/dev/plt/plot_mpl_quiver.py +31 -0
- scitex/dev/plt/plot_mpl_scatter.py +28 -0
- scitex/dev/plt/plot_mpl_stackplot.py +31 -0
- scitex/dev/plt/plot_mpl_stem.py +29 -0
- scitex/dev/plt/plot_mpl_step.py +29 -0
- scitex/dev/plt/plot_mpl_violinplot.py +28 -0
- scitex/dev/plt/plot_sns_barplot.py +29 -0
- scitex/dev/plt/plot_sns_boxplot.py +29 -0
- scitex/dev/plt/plot_sns_heatmap.py +28 -0
- scitex/dev/plt/plot_sns_histplot.py +29 -0
- scitex/dev/plt/plot_sns_kdeplot.py +29 -0
- scitex/dev/plt/plot_sns_lineplot.py +31 -0
- scitex/dev/plt/plot_sns_scatterplot.py +29 -0
- scitex/dev/plt/plot_sns_stripplot.py +29 -0
- scitex/dev/plt/plot_sns_swarmplot.py +29 -0
- scitex/dev/plt/plot_sns_violinplot.py +29 -0
- scitex/dev/plt/plot_stx_bar.py +29 -0
- scitex/dev/plt/plot_stx_barh.py +29 -0
- scitex/dev/plt/plot_stx_box.py +28 -0
- scitex/dev/plt/plot_stx_boxplot.py +28 -0
- scitex/dev/plt/plot_stx_conf_mat.py +28 -0
- scitex/dev/plt/plot_stx_contour.py +31 -0
- scitex/dev/plt/plot_stx_ecdf.py +28 -0
- scitex/dev/plt/plot_stx_errorbar.py +30 -0
- scitex/dev/plt/plot_stx_fill_between.py +31 -0
- scitex/dev/plt/plot_stx_fillv.py +28 -0
- scitex/dev/plt/plot_stx_heatmap.py +28 -0
- scitex/dev/plt/plot_stx_image.py +28 -0
- scitex/dev/plt/plot_stx_imshow.py +28 -0
- scitex/dev/plt/plot_stx_joyplot.py +28 -0
- scitex/dev/plt/plot_stx_kde.py +28 -0
- scitex/dev/plt/plot_stx_line.py +28 -0
- scitex/dev/plt/plot_stx_mean_ci.py +28 -0
- scitex/dev/plt/plot_stx_mean_std.py +28 -0
- scitex/dev/plt/plot_stx_median_iqr.py +28 -0
- scitex/dev/plt/plot_stx_raster.py +28 -0
- scitex/dev/plt/plot_stx_rectangle.py +28 -0
- scitex/dev/plt/plot_stx_scatter.py +29 -0
- scitex/dev/plt/plot_stx_shaded_line.py +29 -0
- scitex/dev/plt/plot_stx_violin.py +28 -0
- scitex/dev/plt/plot_stx_violinplot.py +28 -0
- scitex/diagram/README.md +197 -0
- scitex/diagram/__init__.py +48 -0
- scitex/diagram/_compile.py +312 -0
- scitex/diagram/_diagram.py +355 -0
- scitex/diagram/_presets.py +173 -0
- scitex/diagram/_schema.py +182 -0
- scitex/diagram/_split.py +278 -0
- scitex/fig/__init__.py +352 -0
- scitex/{vis → fig}/backend/_parser.py +1 -1
- scitex/{vis → fig}/canvas.py +1 -1
- scitex/{vis → fig}/editor/__init__.py +5 -2
- scitex/{vis → fig}/editor/_dearpygui_editor.py +1 -1
- scitex/{vis → fig}/editor/_defaults.py +70 -5
- scitex/{vis → fig}/editor/_mpl_editor.py +1 -1
- scitex/{vis → fig}/editor/_qt_editor.py +182 -2
- scitex/{vis → fig}/editor/_tkinter_editor.py +1 -1
- scitex/fig/editor/edit/__init__.py +50 -0
- scitex/fig/editor/edit/backend_detector.py +109 -0
- scitex/fig/editor/edit/bundle_resolver.py +240 -0
- scitex/fig/editor/edit/editor_launcher.py +239 -0
- scitex/fig/editor/edit/manual_handler.py +53 -0
- scitex/fig/editor/edit/panel_loader.py +232 -0
- scitex/fig/editor/edit/path_resolver.py +67 -0
- scitex/fig/editor/flask_editor/_bbox.py +1299 -0
- scitex/fig/editor/flask_editor/_core.py +1429 -0
- scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
- scitex/fig/editor/flask_editor/_renderer.py +813 -0
- scitex/fig/editor/flask_editor/static/css/base/reset.css +41 -0
- scitex/fig/editor/flask_editor/static/css/base/typography.css +16 -0
- scitex/fig/editor/flask_editor/static/css/base/variables.css +85 -0
- scitex/fig/editor/flask_editor/static/css/components/buttons.css +217 -0
- scitex/fig/editor/flask_editor/static/css/components/context-menu.css +93 -0
- scitex/fig/editor/flask_editor/static/css/components/dropdown.css +57 -0
- scitex/fig/editor/flask_editor/static/css/components/forms.css +112 -0
- scitex/fig/editor/flask_editor/static/css/components/modal.css +59 -0
- scitex/fig/editor/flask_editor/static/css/components/sections.css +212 -0
- scitex/fig/editor/flask_editor/static/css/features/canvas.css +176 -0
- scitex/fig/editor/flask_editor/static/css/features/element-inspector.css +190 -0
- scitex/fig/editor/flask_editor/static/css/features/loading.css +59 -0
- scitex/fig/editor/flask_editor/static/css/features/overlay.css +45 -0
- scitex/fig/editor/flask_editor/static/css/features/panel-grid.css +95 -0
- scitex/fig/editor/flask_editor/static/css/features/selection.css +101 -0
- scitex/fig/editor/flask_editor/static/css/features/statistics.css +138 -0
- scitex/fig/editor/flask_editor/static/css/index.css +31 -0
- scitex/fig/editor/flask_editor/static/css/layout/container.css +7 -0
- scitex/fig/editor/flask_editor/static/css/layout/controls.css +56 -0
- scitex/fig/editor/flask_editor/static/css/layout/preview.css +78 -0
- scitex/fig/editor/flask_editor/static/js/alignment/axis.js +314 -0
- scitex/fig/editor/flask_editor/static/js/alignment/basic.js +107 -0
- scitex/fig/editor/flask_editor/static/js/alignment/distribute.js +54 -0
- scitex/fig/editor/flask_editor/static/js/canvas/canvas.js +172 -0
- scitex/fig/editor/flask_editor/static/js/canvas/dragging.js +258 -0
- scitex/fig/editor/flask_editor/static/js/canvas/resize.js +48 -0
- scitex/fig/editor/flask_editor/static/js/canvas/selection.js +71 -0
- scitex/fig/editor/flask_editor/static/js/core/api.js +288 -0
- scitex/fig/editor/flask_editor/static/js/core/state.js +143 -0
- scitex/fig/editor/flask_editor/static/js/core/utils.js +245 -0
- scitex/fig/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
- scitex/fig/editor/flask_editor/static/js/editor/bbox.js +339 -0
- scitex/fig/editor/flask_editor/static/js/editor/element-drag.js +286 -0
- scitex/fig/editor/flask_editor/static/js/editor/overlay.js +371 -0
- scitex/fig/editor/flask_editor/static/js/editor/preview.js +293 -0
- scitex/fig/editor/flask_editor/static/js/main.js +426 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
- scitex/fig/editor/flask_editor/static/js/ui/controls.js +184 -0
- scitex/fig/editor/flask_editor/static/js/ui/download.js +57 -0
- scitex/fig/editor/flask_editor/static/js/ui/help.js +100 -0
- scitex/fig/editor/flask_editor/static/js/ui/theme.js +34 -0
- scitex/fig/editor/flask_editor/templates/__init__.py +123 -0
- scitex/fig/editor/flask_editor/templates/_html.py +852 -0
- scitex/fig/editor/flask_editor/templates/_scripts.py +4933 -0
- scitex/fig/editor/flask_editor/templates/_styles.py +1658 -0
- scitex/{vis → fig}/io/__init__.py +13 -1
- scitex/fig/io/_bundle.py +1058 -0
- scitex/{vis → fig}/io/_canvas.py +1 -1
- scitex/{vis → fig}/io/_data.py +1 -1
- scitex/{vis → fig}/io/_export.py +1 -1
- scitex/{vis → fig}/io/_load.py +1 -1
- scitex/{vis → fig}/io/_panel.py +1 -1
- scitex/{vis → fig}/io/_save.py +1 -1
- scitex/{vis → fig}/model/__init__.py +1 -1
- scitex/{vis → fig}/model/_annotations.py +1 -1
- scitex/{vis → fig}/model/_axes.py +1 -1
- scitex/{vis → fig}/model/_figure.py +1 -1
- scitex/{vis → fig}/model/_guides.py +1 -1
- scitex/{vis → fig}/model/_plot.py +1 -1
- scitex/{vis → fig}/model/_styles.py +1 -1
- scitex/{vis → fig}/utils/__init__.py +1 -1
- scitex/io/__init__.py +22 -26
- scitex/io/_bundle.py +493 -0
- scitex/io/_flush.py +5 -2
- scitex/io/_load.py +98 -0
- scitex/io/_load_modules/_H5Explorer.py +5 -2
- scitex/io/_load_modules/_canvas.py +2 -2
- scitex/io/_load_modules/_image.py +3 -4
- scitex/io/_load_modules/_txt.py +4 -2
- scitex/io/_metadata.py +34 -324
- scitex/io/_metadata_modules/__init__.py +46 -0
- scitex/io/_metadata_modules/_embed.py +70 -0
- scitex/io/_metadata_modules/_read.py +64 -0
- scitex/io/_metadata_modules/_utils.py +79 -0
- scitex/io/_metadata_modules/embed_metadata_jpeg.py +74 -0
- scitex/io/_metadata_modules/embed_metadata_pdf.py +53 -0
- scitex/io/_metadata_modules/embed_metadata_png.py +26 -0
- scitex/io/_metadata_modules/embed_metadata_svg.py +62 -0
- scitex/io/_metadata_modules/read_metadata_jpeg.py +57 -0
- scitex/io/_metadata_modules/read_metadata_pdf.py +51 -0
- scitex/io/_metadata_modules/read_metadata_png.py +39 -0
- scitex/io/_metadata_modules/read_metadata_svg.py +44 -0
- scitex/io/_qr_utils.py +5 -3
- scitex/io/_save.py +548 -30
- scitex/io/_save_modules/_canvas.py +3 -3
- scitex/io/_save_modules/_image.py +5 -9
- scitex/io/_save_modules/_tex.py +7 -4
- scitex/io/_zip_bundle.py +439 -0
- scitex/io/utils/h5_to_zarr.py +11 -9
- scitex/msword/__init__.py +255 -0
- scitex/msword/profiles.py +357 -0
- scitex/msword/reader.py +753 -0
- scitex/msword/utils.py +289 -0
- scitex/msword/writer.py +362 -0
- scitex/plt/__init__.py +5 -2
- scitex/plt/_subplots/_AxesWrapper.py +6 -6
- scitex/plt/_subplots/_AxisWrapper.py +15 -9
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/__init__.py +36 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_labels.py +264 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_metadata.py +213 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_visual.py +128 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +59 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_base.py +34 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_scientific.py +593 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_statistical.py +654 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_stx_aliases.py +527 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_RawMatplotlibMixin.py +321 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/__init__.py +33 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_base.py +152 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +600 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +79 -5
- scitex/plt/_subplots/_FigWrapper.py +6 -6
- scitex/plt/_subplots/_SubplotsWrapper.py +28 -18
- scitex/plt/_subplots/_export_as_csv.py +35 -5
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +8 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +10 -21
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +18 -7
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +28 -12
- scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +13 -1
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +12 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +10 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +18 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +44 -36
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +11 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_bar.py +84 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_barh.py +85 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_conf_mat.py +14 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +16 -6
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +29 -19
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +22 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +10 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter_hist.py +18 -9
- scitex/plt/ax/_plot/_stx_ecdf.py +4 -2
- scitex/plt/gallery/_generate.py +421 -14
- scitex/plt/io/__init__.py +53 -0
- scitex/plt/io/_bundle.py +490 -0
- scitex/plt/io/_layered_bundle.py +1343 -0
- scitex/plt/styles/SCITEX_STYLE.yaml +26 -0
- scitex/plt/styles/__init__.py +14 -0
- scitex/plt/styles/presets.py +78 -0
- scitex/plt/utils/__init__.py +13 -1
- scitex/plt/utils/_collect_figure_metadata.py +10 -14
- scitex/plt/utils/_configure_mpl.py +6 -18
- scitex/plt/utils/_crop.py +32 -14
- scitex/plt/utils/_csv_column_naming.py +54 -0
- scitex/plt/utils/_figure_mm.py +116 -1
- scitex/plt/utils/_hitmap.py +1643 -0
- scitex/plt/utils/metadata/__init__.py +25 -0
- scitex/plt/utils/metadata/_core.py +9 -10
- scitex/plt/utils/metadata/_dimensions.py +6 -3
- scitex/plt/utils/metadata/_editable_export.py +405 -0
- scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
- scitex/schema/__init__.py +109 -16
- scitex/schema/_canvas.py +1 -1
- scitex/schema/_plot.py +1015 -0
- scitex/schema/_stats.py +2 -2
- scitex/stats/__init__.py +117 -0
- scitex/stats/io/__init__.py +29 -0
- scitex/stats/io/_bundle.py +156 -0
- scitex/tex/__init__.py +4 -0
- scitex/tex/_export.py +890 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/METADATA +11 -1
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/RECORD +294 -170
- scitex/io/memo.md +0 -2827
- scitex/plt/REQUESTS.md +0 -191
- scitex/plt/_subplots/TODO.md +0 -53
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +0 -559
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +0 -1609
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +0 -447
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_between.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_betweenx.json +0 -88
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fill_between.json +0 -103
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fillv.json +0 -106
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/bar.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/barh.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/boxplot.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_bar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_barh.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_box.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_boxplot.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violin.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contour.json +0 -97
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contourf.json +0 -98
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/stx_contour.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist.json +0 -101
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist2d.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_ecdf.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_joyplot.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_kde.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/imshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/matshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_conf_mat.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_heatmap.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_image.json +0 -121
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_imshow.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/line/plot.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/line/step.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_line.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_shaded_line.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/hexbin.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/scatter.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stem.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stx_scatter.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/special/pie.json +0 -94
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_raster.json +0 -109
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_rectangle.json +0 -108
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/errorbar.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_errorbar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_ci.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_std.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_median_iqr.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/quiver.json +0 -99
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/streamplot.json +0 -100
- scitex/vis/__init__.py +0 -177
- scitex/vis/editor/_edit.py +0 -390
- scitex/vis/editor/flask_editor/_bbox.py +0 -529
- scitex/vis/editor/flask_editor/_core.py +0 -168
- scitex/vis/editor/flask_editor/_renderer.py +0 -393
- scitex/vis/editor/flask_editor/templates/__init__.py +0 -33
- scitex/vis/editor/flask_editor/templates/_html.py +0 -513
- scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
- scitex/vis/editor/flask_editor/templates/_styles.py +0 -739
- /scitex/{vis → fig}/README.md +0 -0
- /scitex/{vis → fig}/backend/__init__.py +0 -0
- /scitex/{vis → fig}/backend/_export.py +0 -0
- /scitex/{vis → fig}/backend/_render.py +0 -0
- /scitex/{vis → fig}/docs/CANVAS_ARCHITECTURE.md +0 -0
- /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/__init__.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/_utils.py +0 -0
- /scitex/{vis → fig}/io/_directory.py +0 -0
- /scitex/{vis → fig}/model/_plot_types.py +0 -0
- /scitex/{vis → fig}/utils/_defaults.py +0 -0
- /scitex/{vis → fig}/utils/_validate.py +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/WHEEL +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/entry_points.txt +0 -0
- {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
|
-
}
|