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
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-12-13 (ywatanabe)"
|
|
4
|
+
# File: _statistical.py - Statistical plot methods
|
|
5
|
+
|
|
6
|
+
"""Statistical plotting methods including line plots, box plots, and violin plots."""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
from typing import List, Optional, Sequence, Tuple, Union
|
|
10
|
+
|
|
11
|
+
import numpy as np
|
|
12
|
+
import pandas as pd
|
|
13
|
+
|
|
14
|
+
from scitex.types import ArrayLike
|
|
15
|
+
|
|
16
|
+
__FILE__ = __file__
|
|
17
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class StatisticalPlotMixin:
|
|
21
|
+
"""Mixin for statistical plotting methods.
|
|
22
|
+
|
|
23
|
+
Provides methods for:
|
|
24
|
+
- Distribution plots (boxplot, violin)
|
|
25
|
+
- Line plots with uncertainty (mean±std, mean±CI, median±IQR)
|
|
26
|
+
- Histograms with bin alignment
|
|
27
|
+
- Geometric shapes (rectangles, filled regions)
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def stx_rectangle(
|
|
31
|
+
self,
|
|
32
|
+
x: float,
|
|
33
|
+
y: float,
|
|
34
|
+
width: float,
|
|
35
|
+
height: float,
|
|
36
|
+
*,
|
|
37
|
+
track: bool = True,
|
|
38
|
+
id: Optional[str] = None,
|
|
39
|
+
**kwargs,
|
|
40
|
+
) -> "Axes":
|
|
41
|
+
"""Draw a rectangle on the axes.
|
|
42
|
+
|
|
43
|
+
Parameters
|
|
44
|
+
----------
|
|
45
|
+
x : float
|
|
46
|
+
X coordinate of the lower-left corner.
|
|
47
|
+
y : float
|
|
48
|
+
Y coordinate of the lower-left corner.
|
|
49
|
+
width : float
|
|
50
|
+
Width of the rectangle.
|
|
51
|
+
height : float
|
|
52
|
+
Height of the rectangle.
|
|
53
|
+
track : bool, default True
|
|
54
|
+
Enable data tracking for reproducibility.
|
|
55
|
+
id : str, optional
|
|
56
|
+
Unique identifier for this plot element.
|
|
57
|
+
**kwargs
|
|
58
|
+
Additional arguments passed to the rectangle function.
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
Axes
|
|
63
|
+
The axes with the rectangle added.
|
|
64
|
+
|
|
65
|
+
Examples
|
|
66
|
+
--------
|
|
67
|
+
>>> ax.stx_rectangle(0, 0, 1, 2, color='blue', alpha=0.5)
|
|
68
|
+
"""
|
|
69
|
+
method_name = "stx_rectangle"
|
|
70
|
+
|
|
71
|
+
with self._no_tracking():
|
|
72
|
+
self._axis_mpl = self._get_ax_module().stx_rectangle(
|
|
73
|
+
self._axis_mpl, x, y, width, height, **kwargs
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
tracked_dict = {"x": x, "y": y, "width": width, "height": height}
|
|
77
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
78
|
+
self._apply_scitex_postprocess(method_name)
|
|
79
|
+
|
|
80
|
+
return self._axis_mpl
|
|
81
|
+
|
|
82
|
+
def stx_fillv(
|
|
83
|
+
self,
|
|
84
|
+
starts: ArrayLike,
|
|
85
|
+
ends: ArrayLike,
|
|
86
|
+
*,
|
|
87
|
+
color: str = "red",
|
|
88
|
+
alpha: float = 0.2,
|
|
89
|
+
track: bool = True,
|
|
90
|
+
id: Optional[str] = None,
|
|
91
|
+
**kwargs,
|
|
92
|
+
) -> "Axes":
|
|
93
|
+
"""Fill vertical spans between start and end positions.
|
|
94
|
+
|
|
95
|
+
Parameters
|
|
96
|
+
----------
|
|
97
|
+
starts : array-like
|
|
98
|
+
Start x-coordinates of each span.
|
|
99
|
+
ends : array-like
|
|
100
|
+
End x-coordinates of each span.
|
|
101
|
+
color : str, default 'red'
|
|
102
|
+
Fill color.
|
|
103
|
+
alpha : float, default 0.2
|
|
104
|
+
Transparency level.
|
|
105
|
+
track : bool, default True
|
|
106
|
+
Enable data tracking for reproducibility.
|
|
107
|
+
id : str, optional
|
|
108
|
+
Unique identifier for this plot element.
|
|
109
|
+
**kwargs
|
|
110
|
+
Additional arguments passed to the fill function.
|
|
111
|
+
|
|
112
|
+
Returns
|
|
113
|
+
-------
|
|
114
|
+
Axes
|
|
115
|
+
The axes with the filled spans added.
|
|
116
|
+
|
|
117
|
+
Examples
|
|
118
|
+
--------
|
|
119
|
+
>>> ax.stx_fillv([0, 2, 4], [1, 3, 5], color='green')
|
|
120
|
+
"""
|
|
121
|
+
method_name = "stx_fillv"
|
|
122
|
+
|
|
123
|
+
with self._no_tracking():
|
|
124
|
+
self._axis_mpl = self._get_ax_module().stx_fillv(
|
|
125
|
+
self._axis_mpl, starts, ends, color=color, alpha=alpha
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
tracked_dict = {"starts": starts, "ends": ends}
|
|
129
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
130
|
+
self._apply_scitex_postprocess(method_name)
|
|
131
|
+
|
|
132
|
+
return self._axis_mpl
|
|
133
|
+
|
|
134
|
+
def stx_box(
|
|
135
|
+
self,
|
|
136
|
+
data: Union[ArrayLike, Sequence[ArrayLike]],
|
|
137
|
+
*,
|
|
138
|
+
colors: Optional[List[str]] = None,
|
|
139
|
+
track: bool = True,
|
|
140
|
+
id: Optional[str] = None,
|
|
141
|
+
**kwargs,
|
|
142
|
+
) -> dict:
|
|
143
|
+
"""Create a boxplot with SciTeX styling and tracking.
|
|
144
|
+
|
|
145
|
+
Parameters
|
|
146
|
+
----------
|
|
147
|
+
data : array-like or sequence of array-like
|
|
148
|
+
Data for the boxplot. Can be a single array or list of arrays
|
|
149
|
+
where each array represents a group.
|
|
150
|
+
colors : list of str, optional
|
|
151
|
+
Colors for each box. If None, uses default palette.
|
|
152
|
+
track : bool, default True
|
|
153
|
+
Enable data tracking for reproducibility.
|
|
154
|
+
id : str, optional
|
|
155
|
+
Unique identifier for this plot element.
|
|
156
|
+
**kwargs
|
|
157
|
+
Additional arguments passed to `matplotlib.axes.Axes.boxplot`.
|
|
158
|
+
|
|
159
|
+
Returns
|
|
160
|
+
-------
|
|
161
|
+
dict
|
|
162
|
+
Dictionary mapping component names ('boxes', 'whiskers', etc.)
|
|
163
|
+
to lists of Line2D or Patch artists.
|
|
164
|
+
|
|
165
|
+
See Also
|
|
166
|
+
--------
|
|
167
|
+
stx_boxplot : Alias for this method.
|
|
168
|
+
sns_boxplot : DataFrame-based boxplot.
|
|
169
|
+
stx_violin : Violin plot alternative.
|
|
170
|
+
|
|
171
|
+
Examples
|
|
172
|
+
--------
|
|
173
|
+
>>> ax.stx_box([data1, data2, data3], labels=['A', 'B', 'C'])
|
|
174
|
+
>>> ax.stx_box(data, notch=True, patch_artist=True)
|
|
175
|
+
"""
|
|
176
|
+
method_name = "stx_box"
|
|
177
|
+
|
|
178
|
+
_data = data.copy()
|
|
179
|
+
|
|
180
|
+
if kwargs.get("label"):
|
|
181
|
+
n_per_group = [len(g) for g in data]
|
|
182
|
+
n_min, n_max = min(n_per_group), max(n_per_group)
|
|
183
|
+
n_str = str(n_min) if n_min == n_max else f"{n_min}-{n_max}"
|
|
184
|
+
kwargs["label"] = kwargs["label"] + f" ($n$={n_str})"
|
|
185
|
+
|
|
186
|
+
if "patch_artist" not in kwargs:
|
|
187
|
+
kwargs["patch_artist"] = True
|
|
188
|
+
|
|
189
|
+
with self._no_tracking():
|
|
190
|
+
result = self._axis_mpl.boxplot(data, **kwargs)
|
|
191
|
+
|
|
192
|
+
n_per_group = [len(g) for g in data]
|
|
193
|
+
tracked_dict = {"data": _data, "n": n_per_group}
|
|
194
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
195
|
+
|
|
196
|
+
from scitex.plt.ax import style_boxplot
|
|
197
|
+
|
|
198
|
+
style_boxplot(result, colors=colors)
|
|
199
|
+
|
|
200
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
201
|
+
|
|
202
|
+
return result
|
|
203
|
+
|
|
204
|
+
def hist(
|
|
205
|
+
self,
|
|
206
|
+
x: ArrayLike,
|
|
207
|
+
*,
|
|
208
|
+
bins: Union[int, str, ArrayLike] = 10,
|
|
209
|
+
range: Optional[Tuple[float, float]] = None,
|
|
210
|
+
align_bins: bool = True,
|
|
211
|
+
track: bool = True,
|
|
212
|
+
id: Optional[str] = None,
|
|
213
|
+
**kwargs,
|
|
214
|
+
) -> Tuple[np.ndarray, np.ndarray, "BarContainer"]:
|
|
215
|
+
"""Plot a histogram with optional bin alignment across multiple histograms.
|
|
216
|
+
|
|
217
|
+
Parameters
|
|
218
|
+
----------
|
|
219
|
+
x : array-like
|
|
220
|
+
Input data for the histogram.
|
|
221
|
+
bins : int, str, or array-like, default 10
|
|
222
|
+
Number of bins, binning strategy ('auto', 'fd', etc.), or bin edges.
|
|
223
|
+
range : tuple of float, optional
|
|
224
|
+
Lower and upper range of the bins. If None, uses data range.
|
|
225
|
+
align_bins : bool, default True
|
|
226
|
+
When True, aligns bins across multiple histograms on the same axes.
|
|
227
|
+
track : bool, default True
|
|
228
|
+
Enable data tracking for reproducibility.
|
|
229
|
+
id : str, optional
|
|
230
|
+
Unique identifier for this plot element.
|
|
231
|
+
**kwargs
|
|
232
|
+
Additional arguments passed to `matplotlib.axes.Axes.hist`.
|
|
233
|
+
|
|
234
|
+
Returns
|
|
235
|
+
-------
|
|
236
|
+
tuple
|
|
237
|
+
(counts, bin_edges, patches) from matplotlib hist.
|
|
238
|
+
|
|
239
|
+
See Also
|
|
240
|
+
--------
|
|
241
|
+
sns_histplot : DataFrame-based histogram with KDE support.
|
|
242
|
+
|
|
243
|
+
Examples
|
|
244
|
+
--------
|
|
245
|
+
>>> ax.hist(data, bins=20, density=True)
|
|
246
|
+
>>> ax.hist(data, bins='auto', alpha=0.7, label='Group A')
|
|
247
|
+
"""
|
|
248
|
+
method_name = "hist"
|
|
249
|
+
|
|
250
|
+
axis_id = str(hash(self._axis_mpl))
|
|
251
|
+
hist_id = id if id is not None else str(self.id)
|
|
252
|
+
|
|
253
|
+
if align_bins:
|
|
254
|
+
from .....plt.utils import histogram_bin_manager
|
|
255
|
+
|
|
256
|
+
bins, range = histogram_bin_manager.register_histogram(
|
|
257
|
+
axis_id, hist_id, x, bins, range
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
with self._no_tracking():
|
|
261
|
+
hist_data = self._axis_mpl.hist(x, bins=bins, range=range, **kwargs)
|
|
262
|
+
|
|
263
|
+
tracked_dict = {
|
|
264
|
+
"args": (x,),
|
|
265
|
+
"hist_result": (hist_data[0], hist_data[1]),
|
|
266
|
+
"bins": bins,
|
|
267
|
+
"range": range,
|
|
268
|
+
}
|
|
269
|
+
self._track(track, id, method_name, tracked_dict, kwargs)
|
|
270
|
+
self._apply_scitex_postprocess(method_name, hist_data)
|
|
271
|
+
|
|
272
|
+
return hist_data
|
|
273
|
+
|
|
274
|
+
def stx_violin(
|
|
275
|
+
self,
|
|
276
|
+
data: Union[pd.DataFrame, List, ArrayLike],
|
|
277
|
+
*,
|
|
278
|
+
x: Optional[str] = None,
|
|
279
|
+
y: Optional[str] = None,
|
|
280
|
+
hue: Optional[str] = None,
|
|
281
|
+
labels: Optional[List[str]] = None,
|
|
282
|
+
colors: Optional[List[str]] = None,
|
|
283
|
+
half: bool = False,
|
|
284
|
+
track: bool = True,
|
|
285
|
+
id: Optional[str] = None,
|
|
286
|
+
**kwargs,
|
|
287
|
+
) -> "Axes":
|
|
288
|
+
"""Create a violin plot with SciTeX styling and tracking.
|
|
289
|
+
|
|
290
|
+
Parameters
|
|
291
|
+
----------
|
|
292
|
+
data : DataFrame, list, or array-like
|
|
293
|
+
Data for the violin plot. Can be:
|
|
294
|
+
- List of arrays (one per violin)
|
|
295
|
+
- DataFrame with columns specified by x, y, hue
|
|
296
|
+
x : str, optional
|
|
297
|
+
Column name for x-axis grouping (DataFrame input).
|
|
298
|
+
y : str, optional
|
|
299
|
+
Column name for y-axis values (DataFrame input).
|
|
300
|
+
hue : str, optional
|
|
301
|
+
Column name for color grouping (DataFrame input).
|
|
302
|
+
labels : list of str, optional
|
|
303
|
+
Labels for each violin (list input).
|
|
304
|
+
colors : list of str, optional
|
|
305
|
+
Colors for each violin.
|
|
306
|
+
half : bool, default False
|
|
307
|
+
If True, draw half-violins (useful for paired comparisons).
|
|
308
|
+
track : bool, default True
|
|
309
|
+
Enable data tracking for reproducibility.
|
|
310
|
+
id : str, optional
|
|
311
|
+
Unique identifier for this plot element.
|
|
312
|
+
**kwargs
|
|
313
|
+
Additional arguments passed to the violin function.
|
|
314
|
+
|
|
315
|
+
Returns
|
|
316
|
+
-------
|
|
317
|
+
Axes
|
|
318
|
+
The axes with the violin plot.
|
|
319
|
+
|
|
320
|
+
See Also
|
|
321
|
+
--------
|
|
322
|
+
stx_violinplot : Alias for this method.
|
|
323
|
+
sns_violinplot : DataFrame-based violin plot.
|
|
324
|
+
stx_box : Boxplot alternative.
|
|
325
|
+
|
|
326
|
+
Examples
|
|
327
|
+
--------
|
|
328
|
+
>>> ax.stx_violin([data1, data2], labels=['A', 'B'])
|
|
329
|
+
>>> ax.stx_violin(df, x='group', y='value', hue='category')
|
|
330
|
+
"""
|
|
331
|
+
method_name = "stx_violin"
|
|
332
|
+
|
|
333
|
+
with self._no_tracking():
|
|
334
|
+
if isinstance(data, list) and all(
|
|
335
|
+
isinstance(item, (list, np.ndarray)) for item in data
|
|
336
|
+
):
|
|
337
|
+
self._axis_mpl = self._get_ax_module().stx_violin(
|
|
338
|
+
self._axis_mpl,
|
|
339
|
+
values_list=data,
|
|
340
|
+
labels=labels,
|
|
341
|
+
colors=colors,
|
|
342
|
+
half=half,
|
|
343
|
+
**kwargs,
|
|
344
|
+
)
|
|
345
|
+
else:
|
|
346
|
+
self._axis_mpl = self._get_ax_module().stx_violin(
|
|
347
|
+
self._axis_mpl,
|
|
348
|
+
data=data,
|
|
349
|
+
x=x,
|
|
350
|
+
y=y,
|
|
351
|
+
hue=hue,
|
|
352
|
+
half=half,
|
|
353
|
+
**kwargs,
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
tracked_dict = {
|
|
357
|
+
"data": data,
|
|
358
|
+
"x": x,
|
|
359
|
+
"y": y,
|
|
360
|
+
"hue": hue,
|
|
361
|
+
"half": half,
|
|
362
|
+
"labels": labels,
|
|
363
|
+
"colors": colors,
|
|
364
|
+
}
|
|
365
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
366
|
+
self._apply_scitex_postprocess(method_name)
|
|
367
|
+
|
|
368
|
+
return self._axis_mpl
|
|
369
|
+
|
|
370
|
+
def stx_line(
|
|
371
|
+
self,
|
|
372
|
+
y: ArrayLike,
|
|
373
|
+
*,
|
|
374
|
+
x: Optional[ArrayLike] = None,
|
|
375
|
+
track: bool = True,
|
|
376
|
+
id: Optional[str] = None,
|
|
377
|
+
**kwargs,
|
|
378
|
+
) -> Tuple["Axes", pd.DataFrame]:
|
|
379
|
+
"""Plot a simple line with SciTeX styling.
|
|
380
|
+
|
|
381
|
+
Parameters
|
|
382
|
+
----------
|
|
383
|
+
y : array-like
|
|
384
|
+
Y values for the line.
|
|
385
|
+
x : array-like, optional
|
|
386
|
+
X values for the line. If None, uses integer indices.
|
|
387
|
+
track : bool, default True
|
|
388
|
+
Enable data tracking for reproducibility.
|
|
389
|
+
id : str, optional
|
|
390
|
+
Unique identifier for this plot element.
|
|
391
|
+
**kwargs
|
|
392
|
+
Additional arguments passed to the line plot function.
|
|
393
|
+
|
|
394
|
+
Returns
|
|
395
|
+
-------
|
|
396
|
+
tuple
|
|
397
|
+
(Axes, DataFrame) - The axes and a DataFrame with the plotted data.
|
|
398
|
+
|
|
399
|
+
See Also
|
|
400
|
+
--------
|
|
401
|
+
stx_mean_std : Line with standard deviation shading.
|
|
402
|
+
stx_shaded_line : Line with custom shaded region.
|
|
403
|
+
sns_lineplot : DataFrame-based line plot.
|
|
404
|
+
|
|
405
|
+
Examples
|
|
406
|
+
--------
|
|
407
|
+
>>> ax.stx_line(y_values)
|
|
408
|
+
>>> ax.stx_line(y, x=x, label='Series A', color='blue')
|
|
409
|
+
"""
|
|
410
|
+
method_name = "stx_line"
|
|
411
|
+
|
|
412
|
+
with self._no_tracking():
|
|
413
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_line(
|
|
414
|
+
self._axis_mpl, y, xx=x, **kwargs
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
tracked_dict = {"plot_df": plot_df}
|
|
418
|
+
self._track(track, id, method_name, tracked_dict, kwargs)
|
|
419
|
+
self._apply_scitex_postprocess(method_name)
|
|
420
|
+
|
|
421
|
+
return self._axis_mpl, plot_df
|
|
422
|
+
|
|
423
|
+
def stx_mean_std(
|
|
424
|
+
self,
|
|
425
|
+
data: ArrayLike,
|
|
426
|
+
*,
|
|
427
|
+
x: Optional[ArrayLike] = None,
|
|
428
|
+
sd: float = 1.0,
|
|
429
|
+
track: bool = True,
|
|
430
|
+
id: Optional[str] = None,
|
|
431
|
+
**kwargs,
|
|
432
|
+
) -> Tuple["Axes", pd.DataFrame]:
|
|
433
|
+
"""Plot mean line with standard deviation shading.
|
|
434
|
+
|
|
435
|
+
Parameters
|
|
436
|
+
----------
|
|
437
|
+
data : array-like
|
|
438
|
+
2D array where each row is an observation and columns are time points.
|
|
439
|
+
x : array-like, optional
|
|
440
|
+
X values. If None, uses integer indices.
|
|
441
|
+
sd : float, default 1.0
|
|
442
|
+
Number of standard deviations for the shaded region.
|
|
443
|
+
track : bool, default True
|
|
444
|
+
Enable data tracking for reproducibility.
|
|
445
|
+
id : str, optional
|
|
446
|
+
Unique identifier for this plot element.
|
|
447
|
+
**kwargs
|
|
448
|
+
Additional arguments passed to the plot function.
|
|
449
|
+
|
|
450
|
+
Returns
|
|
451
|
+
-------
|
|
452
|
+
tuple
|
|
453
|
+
(Axes, DataFrame) - The axes and a DataFrame with mean, upper, lower.
|
|
454
|
+
|
|
455
|
+
See Also
|
|
456
|
+
--------
|
|
457
|
+
stx_mean_ci : Mean with confidence interval.
|
|
458
|
+
stx_median_iqr : Median with interquartile range.
|
|
459
|
+
stx_shaded_line : Custom shaded line.
|
|
460
|
+
|
|
461
|
+
Examples
|
|
462
|
+
--------
|
|
463
|
+
>>> ax.stx_mean_std(data_2d, sd=2, label='Mean±2SD')
|
|
464
|
+
"""
|
|
465
|
+
method_name = "stx_mean_std"
|
|
466
|
+
|
|
467
|
+
with self._no_tracking():
|
|
468
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_mean_std(
|
|
469
|
+
self._axis_mpl, data, xx=x, sd=sd, **kwargs
|
|
470
|
+
)
|
|
471
|
+
|
|
472
|
+
tracked_dict = {"plot_df": plot_df}
|
|
473
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
474
|
+
self._apply_scitex_postprocess(method_name)
|
|
475
|
+
|
|
476
|
+
return self._axis_mpl, plot_df
|
|
477
|
+
|
|
478
|
+
def stx_mean_ci(
|
|
479
|
+
self,
|
|
480
|
+
data: ArrayLike,
|
|
481
|
+
*,
|
|
482
|
+
x: Optional[ArrayLike] = None,
|
|
483
|
+
ci: float = 95.0,
|
|
484
|
+
track: bool = True,
|
|
485
|
+
id: Optional[str] = None,
|
|
486
|
+
**kwargs,
|
|
487
|
+
) -> Tuple["Axes", pd.DataFrame]:
|
|
488
|
+
"""Plot mean line with confidence interval shading.
|
|
489
|
+
|
|
490
|
+
Parameters
|
|
491
|
+
----------
|
|
492
|
+
data : array-like
|
|
493
|
+
2D array where each row is an observation and columns are time points.
|
|
494
|
+
x : array-like, optional
|
|
495
|
+
X values. If None, uses integer indices.
|
|
496
|
+
ci : float, default 95.0
|
|
497
|
+
Confidence interval percentage (e.g., 95 for 95% CI).
|
|
498
|
+
track : bool, default True
|
|
499
|
+
Enable data tracking for reproducibility.
|
|
500
|
+
id : str, optional
|
|
501
|
+
Unique identifier for this plot element.
|
|
502
|
+
**kwargs
|
|
503
|
+
Additional arguments passed to the plot function.
|
|
504
|
+
|
|
505
|
+
Returns
|
|
506
|
+
-------
|
|
507
|
+
tuple
|
|
508
|
+
(Axes, DataFrame) - The axes and a DataFrame with mean, upper, lower.
|
|
509
|
+
|
|
510
|
+
See Also
|
|
511
|
+
--------
|
|
512
|
+
stx_mean_std : Mean with standard deviation.
|
|
513
|
+
stx_median_iqr : Median with interquartile range.
|
|
514
|
+
|
|
515
|
+
Examples
|
|
516
|
+
--------
|
|
517
|
+
>>> ax.stx_mean_ci(data_2d, ci=99, label='Mean±99%CI')
|
|
518
|
+
"""
|
|
519
|
+
method_name = "stx_mean_ci"
|
|
520
|
+
|
|
521
|
+
with self._no_tracking():
|
|
522
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_mean_ci(
|
|
523
|
+
self._axis_mpl, data, xx=x, perc=ci, **kwargs
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
tracked_dict = {"plot_df": plot_df}
|
|
527
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
528
|
+
self._apply_scitex_postprocess(method_name)
|
|
529
|
+
|
|
530
|
+
return self._axis_mpl, plot_df
|
|
531
|
+
|
|
532
|
+
def stx_median_iqr(
|
|
533
|
+
self,
|
|
534
|
+
data: ArrayLike,
|
|
535
|
+
*,
|
|
536
|
+
x: Optional[ArrayLike] = None,
|
|
537
|
+
track: bool = True,
|
|
538
|
+
id: Optional[str] = None,
|
|
539
|
+
**kwargs,
|
|
540
|
+
) -> Tuple["Axes", pd.DataFrame]:
|
|
541
|
+
"""Plot median line with interquartile range shading.
|
|
542
|
+
|
|
543
|
+
Parameters
|
|
544
|
+
----------
|
|
545
|
+
data : array-like
|
|
546
|
+
2D array where each row is an observation and columns are time points.
|
|
547
|
+
x : array-like, optional
|
|
548
|
+
X values. If None, uses integer indices.
|
|
549
|
+
track : bool, default True
|
|
550
|
+
Enable data tracking for reproducibility.
|
|
551
|
+
id : str, optional
|
|
552
|
+
Unique identifier for this plot element.
|
|
553
|
+
**kwargs
|
|
554
|
+
Additional arguments passed to the plot function.
|
|
555
|
+
|
|
556
|
+
Returns
|
|
557
|
+
-------
|
|
558
|
+
tuple
|
|
559
|
+
(Axes, DataFrame) - The axes and a DataFrame with median, Q1, Q3.
|
|
560
|
+
|
|
561
|
+
See Also
|
|
562
|
+
--------
|
|
563
|
+
stx_mean_std : Mean with standard deviation.
|
|
564
|
+
stx_mean_ci : Mean with confidence interval.
|
|
565
|
+
|
|
566
|
+
Examples
|
|
567
|
+
--------
|
|
568
|
+
>>> ax.stx_median_iqr(data_2d, label='Median±IQR')
|
|
569
|
+
"""
|
|
570
|
+
method_name = "stx_median_iqr"
|
|
571
|
+
|
|
572
|
+
with self._no_tracking():
|
|
573
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_median_iqr(
|
|
574
|
+
self._axis_mpl, data, xx=x, **kwargs
|
|
575
|
+
)
|
|
576
|
+
|
|
577
|
+
tracked_dict = {"plot_df": plot_df}
|
|
578
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
579
|
+
self._apply_scitex_postprocess(method_name)
|
|
580
|
+
|
|
581
|
+
return self._axis_mpl, plot_df
|
|
582
|
+
|
|
583
|
+
def stx_shaded_line(
|
|
584
|
+
self,
|
|
585
|
+
x: ArrayLike,
|
|
586
|
+
y_lower: ArrayLike,
|
|
587
|
+
y_middle: ArrayLike,
|
|
588
|
+
y_upper: ArrayLike,
|
|
589
|
+
*,
|
|
590
|
+
color: Optional[Union[str, List[str]]] = None,
|
|
591
|
+
label: Optional[Union[str, List[str]]] = None,
|
|
592
|
+
track: bool = True,
|
|
593
|
+
id: Optional[str] = None,
|
|
594
|
+
**kwargs,
|
|
595
|
+
) -> Tuple["Axes", pd.DataFrame]:
|
|
596
|
+
"""Plot a line with shaded area between lower and upper bounds.
|
|
597
|
+
|
|
598
|
+
Parameters
|
|
599
|
+
----------
|
|
600
|
+
x : array-like
|
|
601
|
+
X coordinates.
|
|
602
|
+
y_lower : array-like
|
|
603
|
+
Lower bound of the shaded region.
|
|
604
|
+
y_middle : array-like
|
|
605
|
+
Center line values.
|
|
606
|
+
y_upper : array-like
|
|
607
|
+
Upper bound of the shaded region.
|
|
608
|
+
color : str or list of str, optional
|
|
609
|
+
Color(s) for the line and shading.
|
|
610
|
+
label : str or list of str, optional
|
|
611
|
+
Label(s) for the legend.
|
|
612
|
+
track : bool, default True
|
|
613
|
+
Enable data tracking for reproducibility.
|
|
614
|
+
id : str, optional
|
|
615
|
+
Unique identifier for this plot element.
|
|
616
|
+
**kwargs
|
|
617
|
+
Additional arguments passed to the plot function.
|
|
618
|
+
|
|
619
|
+
Returns
|
|
620
|
+
-------
|
|
621
|
+
tuple
|
|
622
|
+
(Axes, DataFrame) - The axes and a DataFrame with the plotted data.
|
|
623
|
+
|
|
624
|
+
See Also
|
|
625
|
+
--------
|
|
626
|
+
stx_mean_std : Mean with standard deviation.
|
|
627
|
+
stx_fill_between : Simple fill between curves.
|
|
628
|
+
|
|
629
|
+
Examples
|
|
630
|
+
--------
|
|
631
|
+
>>> ax.stx_shaded_line(x, lower, mean, upper, color='blue', label='Result')
|
|
632
|
+
"""
|
|
633
|
+
method_name = "stx_shaded_line"
|
|
634
|
+
|
|
635
|
+
with self._no_tracking():
|
|
636
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_shaded_line(
|
|
637
|
+
self._axis_mpl,
|
|
638
|
+
x,
|
|
639
|
+
y_lower,
|
|
640
|
+
y_middle,
|
|
641
|
+
y_upper,
|
|
642
|
+
color=color,
|
|
643
|
+
label=label,
|
|
644
|
+
**kwargs,
|
|
645
|
+
)
|
|
646
|
+
|
|
647
|
+
tracked_dict = {"plot_df": plot_df}
|
|
648
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
649
|
+
self._apply_scitex_postprocess(method_name)
|
|
650
|
+
|
|
651
|
+
return self._axis_mpl, plot_df
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
# EOF
|