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
scitex/bridge/_helpers.py
CHANGED
|
@@ -117,7 +117,7 @@ def _detect_backend(target) -> Literal["plt", "vis"]:
|
|
|
117
117
|
"""
|
|
118
118
|
# Check for vis FigureModel
|
|
119
119
|
try:
|
|
120
|
-
from scitex.
|
|
120
|
+
from scitex.fig.model import FigureModel
|
|
121
121
|
if isinstance(target, FigureModel):
|
|
122
122
|
return "vis"
|
|
123
123
|
except ImportError:
|
scitex/bridge/_plt_vis.py
CHANGED
scitex/bridge/_stats_vis.py
CHANGED
|
@@ -27,7 +27,7 @@ When bridging between plt and vis, coordinate transformation may be needed.
|
|
|
27
27
|
from typing import Optional, Dict, Any, List, Tuple
|
|
28
28
|
|
|
29
29
|
from scitex.schema import StatResult, Position, StatPositioning
|
|
30
|
-
from scitex.
|
|
30
|
+
from scitex.fig.model import AnnotationModel, FigureModel, AxesModel, TextStyle
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
def stat_result_to_annotation(
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: /home/ywatanabe/proj/scitex-code/src/scitex/dev/plt/__init__.py
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
Development plotting utilities with three API layers.
|
|
7
|
+
|
|
8
|
+
All plotters follow signature: (plt, rng, ax=None) -> (fig, ax)
|
|
9
|
+
|
|
10
|
+
API Layers:
|
|
11
|
+
-----------
|
|
12
|
+
stx_* : SciTeX canonical (ArrayLike input, tracked)
|
|
13
|
+
sns_* : Seaborn-style (DataFrame input, tracked)
|
|
14
|
+
mpl_* : Matplotlib-style (raw args, tracked)
|
|
15
|
+
|
|
16
|
+
Usage:
|
|
17
|
+
from scitex.dev.plt import PLOTTERS_STX, PLOTTERS_SNS, PLOTTERS_MPL
|
|
18
|
+
|
|
19
|
+
@stx.session
|
|
20
|
+
def main(plt=stx.INJECTED, rng_manager=stx.INJECTED):
|
|
21
|
+
rng = rng_manager("demo")
|
|
22
|
+
|
|
23
|
+
# stx_* API (ArrayLike)
|
|
24
|
+
for name, plotter in PLOTTERS_STX.items():
|
|
25
|
+
fig, ax = plotter(plt, rng)
|
|
26
|
+
|
|
27
|
+
# sns_* API (DataFrame)
|
|
28
|
+
for name, plotter in PLOTTERS_SNS.items():
|
|
29
|
+
fig, ax = plotter(plt, rng)
|
|
30
|
+
|
|
31
|
+
# mpl_* API (matplotlib-style)
|
|
32
|
+
for name, plotter in PLOTTERS_MPL.items():
|
|
33
|
+
fig, ax = plotter(plt, rng)
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
# =============================================================================
|
|
37
|
+
# stx_* API Layer - ArrayLike input (25 plotters)
|
|
38
|
+
# =============================================================================
|
|
39
|
+
from .plot_stx_line import plot_stx_line
|
|
40
|
+
from .plot_stx_mean_std import plot_stx_mean_std
|
|
41
|
+
from .plot_stx_mean_ci import plot_stx_mean_ci
|
|
42
|
+
from .plot_stx_median_iqr import plot_stx_median_iqr
|
|
43
|
+
from .plot_stx_shaded_line import plot_stx_shaded_line
|
|
44
|
+
from .plot_stx_box import plot_stx_box
|
|
45
|
+
from .plot_stx_violin import plot_stx_violin
|
|
46
|
+
from .plot_stx_scatter import plot_stx_scatter
|
|
47
|
+
from .plot_stx_bar import plot_stx_bar
|
|
48
|
+
from .plot_stx_barh import plot_stx_barh
|
|
49
|
+
from .plot_stx_errorbar import plot_stx_errorbar
|
|
50
|
+
from .plot_stx_fill_between import plot_stx_fill_between
|
|
51
|
+
from .plot_stx_kde import plot_stx_kde
|
|
52
|
+
from .plot_stx_ecdf import plot_stx_ecdf
|
|
53
|
+
from .plot_stx_heatmap import plot_stx_heatmap
|
|
54
|
+
from .plot_stx_image import plot_stx_image
|
|
55
|
+
from .plot_stx_imshow import plot_stx_imshow
|
|
56
|
+
from .plot_stx_contour import plot_stx_contour
|
|
57
|
+
from .plot_stx_raster import plot_stx_raster
|
|
58
|
+
from .plot_stx_conf_mat import plot_stx_conf_mat
|
|
59
|
+
from .plot_stx_joyplot import plot_stx_joyplot
|
|
60
|
+
from .plot_stx_rectangle import plot_stx_rectangle
|
|
61
|
+
from .plot_stx_fillv import plot_stx_fillv
|
|
62
|
+
from .plot_stx_boxplot import plot_stx_boxplot
|
|
63
|
+
from .plot_stx_violinplot import plot_stx_violinplot
|
|
64
|
+
|
|
65
|
+
PLOTTERS_STX = {
|
|
66
|
+
"stx_line": plot_stx_line,
|
|
67
|
+
"stx_mean_std": plot_stx_mean_std,
|
|
68
|
+
"stx_mean_ci": plot_stx_mean_ci,
|
|
69
|
+
"stx_median_iqr": plot_stx_median_iqr,
|
|
70
|
+
"stx_shaded_line": plot_stx_shaded_line,
|
|
71
|
+
"stx_box": plot_stx_box,
|
|
72
|
+
"stx_violin": plot_stx_violin,
|
|
73
|
+
"stx_scatter": plot_stx_scatter,
|
|
74
|
+
"stx_bar": plot_stx_bar,
|
|
75
|
+
"stx_barh": plot_stx_barh,
|
|
76
|
+
"stx_errorbar": plot_stx_errorbar,
|
|
77
|
+
"stx_fill_between": plot_stx_fill_between,
|
|
78
|
+
"stx_kde": plot_stx_kde,
|
|
79
|
+
"stx_ecdf": plot_stx_ecdf,
|
|
80
|
+
"stx_heatmap": plot_stx_heatmap,
|
|
81
|
+
"stx_image": plot_stx_image,
|
|
82
|
+
"stx_imshow": plot_stx_imshow,
|
|
83
|
+
"stx_contour": plot_stx_contour,
|
|
84
|
+
"stx_raster": plot_stx_raster,
|
|
85
|
+
"stx_conf_mat": plot_stx_conf_mat,
|
|
86
|
+
"stx_joyplot": plot_stx_joyplot,
|
|
87
|
+
"stx_rectangle": plot_stx_rectangle,
|
|
88
|
+
"stx_fillv": plot_stx_fillv,
|
|
89
|
+
"stx_boxplot": plot_stx_boxplot,
|
|
90
|
+
"stx_violinplot": plot_stx_violinplot,
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# =============================================================================
|
|
94
|
+
# sns_* API Layer - DataFrame input (10 plotters)
|
|
95
|
+
# =============================================================================
|
|
96
|
+
from .plot_sns_boxplot import plot_sns_boxplot
|
|
97
|
+
from .plot_sns_violinplot import plot_sns_violinplot
|
|
98
|
+
from .plot_sns_barplot import plot_sns_barplot
|
|
99
|
+
from .plot_sns_histplot import plot_sns_histplot
|
|
100
|
+
from .plot_sns_kdeplot import plot_sns_kdeplot
|
|
101
|
+
from .plot_sns_scatterplot import plot_sns_scatterplot
|
|
102
|
+
from .plot_sns_lineplot import plot_sns_lineplot
|
|
103
|
+
from .plot_sns_swarmplot import plot_sns_swarmplot
|
|
104
|
+
from .plot_sns_stripplot import plot_sns_stripplot
|
|
105
|
+
from .plot_sns_heatmap import plot_sns_heatmap
|
|
106
|
+
|
|
107
|
+
PLOTTERS_SNS = {
|
|
108
|
+
"sns_boxplot": plot_sns_boxplot,
|
|
109
|
+
"sns_violinplot": plot_sns_violinplot,
|
|
110
|
+
"sns_barplot": plot_sns_barplot,
|
|
111
|
+
"sns_histplot": plot_sns_histplot,
|
|
112
|
+
"sns_kdeplot": plot_sns_kdeplot,
|
|
113
|
+
"sns_scatterplot": plot_sns_scatterplot,
|
|
114
|
+
"sns_lineplot": plot_sns_lineplot,
|
|
115
|
+
"sns_swarmplot": plot_sns_swarmplot,
|
|
116
|
+
"sns_stripplot": plot_sns_stripplot,
|
|
117
|
+
"sns_heatmap": plot_sns_heatmap,
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
# =============================================================================
|
|
121
|
+
# mpl_* API Layer - Matplotlib-style input (26 plotters)
|
|
122
|
+
# =============================================================================
|
|
123
|
+
from .plot_mpl_plot import plot_mpl_plot
|
|
124
|
+
from .plot_mpl_scatter import plot_mpl_scatter
|
|
125
|
+
from .plot_mpl_bar import plot_mpl_bar
|
|
126
|
+
from .plot_mpl_barh import plot_mpl_barh
|
|
127
|
+
from .plot_mpl_hist import plot_mpl_hist
|
|
128
|
+
from .plot_mpl_hist2d import plot_mpl_hist2d
|
|
129
|
+
from .plot_mpl_hexbin import plot_mpl_hexbin
|
|
130
|
+
from .plot_mpl_boxplot import plot_mpl_boxplot
|
|
131
|
+
from .plot_mpl_violinplot import plot_mpl_violinplot
|
|
132
|
+
from .plot_mpl_errorbar import plot_mpl_errorbar
|
|
133
|
+
from .plot_mpl_step import plot_mpl_step
|
|
134
|
+
from .plot_mpl_stem import plot_mpl_stem
|
|
135
|
+
from .plot_mpl_fill import plot_mpl_fill
|
|
136
|
+
from .plot_mpl_fill_between import plot_mpl_fill_between
|
|
137
|
+
from .plot_mpl_stackplot import plot_mpl_stackplot
|
|
138
|
+
from .plot_mpl_contour import plot_mpl_contour
|
|
139
|
+
from .plot_mpl_contourf import plot_mpl_contourf
|
|
140
|
+
from .plot_mpl_imshow import plot_mpl_imshow
|
|
141
|
+
from .plot_mpl_pcolormesh import plot_mpl_pcolormesh
|
|
142
|
+
from .plot_mpl_pie import plot_mpl_pie
|
|
143
|
+
from .plot_mpl_eventplot import plot_mpl_eventplot
|
|
144
|
+
from .plot_mpl_quiver import plot_mpl_quiver
|
|
145
|
+
from .plot_mpl_axhline import plot_mpl_axhline
|
|
146
|
+
from .plot_mpl_axvline import plot_mpl_axvline
|
|
147
|
+
from .plot_mpl_axhspan import plot_mpl_axhspan
|
|
148
|
+
from .plot_mpl_axvspan import plot_mpl_axvspan
|
|
149
|
+
|
|
150
|
+
PLOTTERS_MPL = {
|
|
151
|
+
"mpl_plot": plot_mpl_plot,
|
|
152
|
+
"mpl_scatter": plot_mpl_scatter,
|
|
153
|
+
"mpl_bar": plot_mpl_bar,
|
|
154
|
+
"mpl_barh": plot_mpl_barh,
|
|
155
|
+
"mpl_hist": plot_mpl_hist,
|
|
156
|
+
"mpl_hist2d": plot_mpl_hist2d,
|
|
157
|
+
"mpl_hexbin": plot_mpl_hexbin,
|
|
158
|
+
"mpl_boxplot": plot_mpl_boxplot,
|
|
159
|
+
"mpl_violinplot": plot_mpl_violinplot,
|
|
160
|
+
"mpl_errorbar": plot_mpl_errorbar,
|
|
161
|
+
"mpl_step": plot_mpl_step,
|
|
162
|
+
"mpl_stem": plot_mpl_stem,
|
|
163
|
+
"mpl_fill": plot_mpl_fill,
|
|
164
|
+
"mpl_fill_between": plot_mpl_fill_between,
|
|
165
|
+
"mpl_stackplot": plot_mpl_stackplot,
|
|
166
|
+
"mpl_contour": plot_mpl_contour,
|
|
167
|
+
"mpl_contourf": plot_mpl_contourf,
|
|
168
|
+
"mpl_imshow": plot_mpl_imshow,
|
|
169
|
+
"mpl_pcolormesh": plot_mpl_pcolormesh,
|
|
170
|
+
"mpl_pie": plot_mpl_pie,
|
|
171
|
+
"mpl_eventplot": plot_mpl_eventplot,
|
|
172
|
+
"mpl_quiver": plot_mpl_quiver,
|
|
173
|
+
"mpl_axhline": plot_mpl_axhline,
|
|
174
|
+
"mpl_axvline": plot_mpl_axvline,
|
|
175
|
+
"mpl_axhspan": plot_mpl_axhspan,
|
|
176
|
+
"mpl_axvspan": plot_mpl_axvspan,
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
# =============================================================================
|
|
180
|
+
# Combined registry
|
|
181
|
+
# =============================================================================
|
|
182
|
+
PLOTTERS = {**PLOTTERS_STX, **PLOTTERS_SNS, **PLOTTERS_MPL}
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def get_plotter(name):
|
|
186
|
+
"""Get a plotter function by name."""
|
|
187
|
+
if name in PLOTTERS:
|
|
188
|
+
return PLOTTERS[name]
|
|
189
|
+
raise KeyError(f"Unknown plotter: {name}. Available: {list(PLOTTERS.keys())}")
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def list_plotters():
|
|
193
|
+
"""List all available plotter names."""
|
|
194
|
+
return list(PLOTTERS.keys())
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
__all__ = [
|
|
198
|
+
# stx_* plotters (25)
|
|
199
|
+
"plot_stx_line",
|
|
200
|
+
"plot_stx_mean_std",
|
|
201
|
+
"plot_stx_mean_ci",
|
|
202
|
+
"plot_stx_median_iqr",
|
|
203
|
+
"plot_stx_shaded_line",
|
|
204
|
+
"plot_stx_box",
|
|
205
|
+
"plot_stx_violin",
|
|
206
|
+
"plot_stx_scatter",
|
|
207
|
+
"plot_stx_bar",
|
|
208
|
+
"plot_stx_barh",
|
|
209
|
+
"plot_stx_errorbar",
|
|
210
|
+
"plot_stx_fill_between",
|
|
211
|
+
"plot_stx_kde",
|
|
212
|
+
"plot_stx_ecdf",
|
|
213
|
+
"plot_stx_heatmap",
|
|
214
|
+
"plot_stx_image",
|
|
215
|
+
"plot_stx_imshow",
|
|
216
|
+
"plot_stx_contour",
|
|
217
|
+
"plot_stx_raster",
|
|
218
|
+
"plot_stx_conf_mat",
|
|
219
|
+
"plot_stx_joyplot",
|
|
220
|
+
"plot_stx_rectangle",
|
|
221
|
+
"plot_stx_fillv",
|
|
222
|
+
"plot_stx_boxplot",
|
|
223
|
+
"plot_stx_violinplot",
|
|
224
|
+
# sns_* plotters (10)
|
|
225
|
+
"plot_sns_boxplot",
|
|
226
|
+
"plot_sns_violinplot",
|
|
227
|
+
"plot_sns_barplot",
|
|
228
|
+
"plot_sns_histplot",
|
|
229
|
+
"plot_sns_kdeplot",
|
|
230
|
+
"plot_sns_scatterplot",
|
|
231
|
+
"plot_sns_lineplot",
|
|
232
|
+
"plot_sns_swarmplot",
|
|
233
|
+
"plot_sns_stripplot",
|
|
234
|
+
"plot_sns_heatmap",
|
|
235
|
+
# mpl_* plotters (26)
|
|
236
|
+
"plot_mpl_plot",
|
|
237
|
+
"plot_mpl_scatter",
|
|
238
|
+
"plot_mpl_bar",
|
|
239
|
+
"plot_mpl_barh",
|
|
240
|
+
"plot_mpl_hist",
|
|
241
|
+
"plot_mpl_hist2d",
|
|
242
|
+
"plot_mpl_hexbin",
|
|
243
|
+
"plot_mpl_boxplot",
|
|
244
|
+
"plot_mpl_violinplot",
|
|
245
|
+
"plot_mpl_errorbar",
|
|
246
|
+
"plot_mpl_step",
|
|
247
|
+
"plot_mpl_stem",
|
|
248
|
+
"plot_mpl_fill",
|
|
249
|
+
"plot_mpl_fill_between",
|
|
250
|
+
"plot_mpl_stackplot",
|
|
251
|
+
"plot_mpl_contour",
|
|
252
|
+
"plot_mpl_contourf",
|
|
253
|
+
"plot_mpl_imshow",
|
|
254
|
+
"plot_mpl_pcolormesh",
|
|
255
|
+
"plot_mpl_pie",
|
|
256
|
+
"plot_mpl_eventplot",
|
|
257
|
+
"plot_mpl_quiver",
|
|
258
|
+
"plot_mpl_axhline",
|
|
259
|
+
"plot_mpl_axvline",
|
|
260
|
+
"plot_mpl_axhspan",
|
|
261
|
+
"plot_mpl_axvspan",
|
|
262
|
+
# Registries
|
|
263
|
+
"PLOTTERS_STX",
|
|
264
|
+
"PLOTTERS_SNS",
|
|
265
|
+
"PLOTTERS_MPL",
|
|
266
|
+
"PLOTTERS",
|
|
267
|
+
# Helper functions
|
|
268
|
+
"get_plotter",
|
|
269
|
+
"list_plotters",
|
|
270
|
+
]
|
|
271
|
+
|
|
272
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_axhline.py - mpl_axhline demo
|
|
4
|
+
|
|
5
|
+
"""mpl_axhline: horizontal line."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_axhline(plt, rng, ax=None):
|
|
11
|
+
"""mpl_axhline - horizontal line.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_axhline() - identical to ax.axhline()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
ax.plot(rng.uniform(0, 10, 20))
|
|
21
|
+
ax.mpl_axhline(y=5, color='r', linestyle='--', label='threshold')
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_axhline")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_axhspan.py - mpl_axhspan demo
|
|
4
|
+
|
|
5
|
+
"""mpl_axhspan: horizontal span."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_axhspan(plt, rng, ax=None):
|
|
11
|
+
"""mpl_axhspan - horizontal span.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_axhspan() - identical to ax.axhspan()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
ax.plot(rng.uniform(0, 10, 20))
|
|
21
|
+
ax.mpl_axhspan(3, 7, alpha=0.3, color='yellow', label='range')
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_axhspan")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_axvline.py - mpl_axvline demo
|
|
4
|
+
|
|
5
|
+
"""mpl_axvline: vertical line."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_axvline(plt, rng, ax=None):
|
|
11
|
+
"""mpl_axvline - vertical line.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_axvline() - identical to ax.axvline()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
ax.plot(rng.uniform(0, 10, 20))
|
|
21
|
+
ax.mpl_axvline(x=10, color='r', linestyle='--', label='event')
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_axvline")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_axvspan.py - mpl_axvspan demo
|
|
4
|
+
|
|
5
|
+
"""mpl_axvspan: vertical span."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_axvspan(plt, rng, ax=None):
|
|
11
|
+
"""mpl_axvspan - vertical span.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_axvspan() - identical to ax.axvspan()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
ax.plot(rng.uniform(0, 10, 20))
|
|
21
|
+
ax.mpl_axvspan(5, 15, alpha=0.3, color='yellow', label='range')
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_axvspan")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_bar.py - mpl_bar demo
|
|
4
|
+
|
|
5
|
+
"""mpl_bar: bar plot."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_bar(plt, rng, ax=None):
|
|
11
|
+
"""mpl_bar - bar plot.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_bar() - identical to ax.bar()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
x = [1, 2, 3, 4, 5]
|
|
21
|
+
height = rng.uniform(2, 8, 5)
|
|
22
|
+
ax.mpl_bar(x, height)
|
|
23
|
+
ax.set_xyt("X", "Y", "mpl_bar")
|
|
24
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
25
|
+
ax.legend()
|
|
26
|
+
return fig, ax
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# EOF
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_barh.py - mpl_barh demo
|
|
4
|
+
|
|
5
|
+
"""mpl_barh: horizontal bar."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_barh(plt, rng, ax=None):
|
|
11
|
+
"""mpl_barh - horizontal bar.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_barh() - identical to ax.barh()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
y = [1, 2, 3, 4, 5]
|
|
21
|
+
width = rng.uniform(2, 8, 5)
|
|
22
|
+
ax.mpl_barh(y, width)
|
|
23
|
+
ax.set_xyt("X", "Y", "mpl_barh")
|
|
24
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
25
|
+
ax.legend()
|
|
26
|
+
return fig, ax
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_boxplot.py - mpl_boxplot demo
|
|
4
|
+
|
|
5
|
+
"""mpl_boxplot: box plot."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_boxplot(plt, rng, ax=None):
|
|
11
|
+
"""mpl_boxplot - box plot.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_boxplot() - identical to ax.boxplot()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
data = [rng.normal(i, 1, 100) for i in range(4)]
|
|
21
|
+
ax.mpl_boxplot(data, tick_labels=['A', 'B', 'C', 'D'])
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_boxplot")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_contour.py - mpl_contour demo
|
|
4
|
+
|
|
5
|
+
"""mpl_contour: contour plot."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_contour(plt, rng, ax=None):
|
|
11
|
+
"""mpl_contour - contour plot.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_contour() - identical to ax.contour()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
x = np.linspace(-3, 3, 50)
|
|
21
|
+
y = np.linspace(-3, 3, 50)
|
|
22
|
+
X, Y = np.meshgrid(x, y)
|
|
23
|
+
Z = np.exp(-(X**2 + Y**2))
|
|
24
|
+
ax.mpl_contour(X, Y, Z, levels=10)
|
|
25
|
+
ax.set_xyt("X", "Y", "mpl_contour")
|
|
26
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
27
|
+
ax.legend()
|
|
28
|
+
return fig, ax
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# EOF
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_contourf.py - mpl_contourf demo
|
|
4
|
+
|
|
5
|
+
"""mpl_contourf: filled contour."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_contourf(plt, rng, ax=None):
|
|
11
|
+
"""mpl_contourf - filled contour.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_contourf() - identical to ax.contourf()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
x = np.linspace(-3, 3, 50)
|
|
21
|
+
y = np.linspace(-3, 3, 50)
|
|
22
|
+
X, Y = np.meshgrid(x, y)
|
|
23
|
+
Z = np.exp(-(X**2 + Y**2))
|
|
24
|
+
ax.mpl_contourf(X, Y, Z, levels=10)
|
|
25
|
+
ax.set_xyt("X", "Y", "mpl_contourf")
|
|
26
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
27
|
+
ax.legend()
|
|
28
|
+
return fig, ax
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# EOF
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_errorbar.py - mpl_errorbar demo
|
|
4
|
+
|
|
5
|
+
"""mpl_errorbar: error bar."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_errorbar(plt, rng, ax=None):
|
|
11
|
+
"""mpl_errorbar - error bar.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_errorbar() - identical to ax.errorbar()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
x = np.arange(1, 6)
|
|
21
|
+
y = rng.uniform(2, 8, 5)
|
|
22
|
+
yerr = rng.uniform(0.5, 1.5, 5)
|
|
23
|
+
ax.mpl_errorbar(x, y, yerr=yerr, fmt='o-', capsize=3)
|
|
24
|
+
ax.set_xyt("X", "Y", "mpl_errorbar")
|
|
25
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
26
|
+
ax.legend()
|
|
27
|
+
return fig, ax
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# EOF
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_eventplot.py - mpl_eventplot demo
|
|
4
|
+
|
|
5
|
+
"""mpl_eventplot: event plot."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_eventplot(plt, rng, ax=None):
|
|
11
|
+
"""mpl_eventplot - event plot.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_eventplot() - identical to ax.eventplot()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
positions = [rng.uniform(0, 10, rng.integers(5, 15)) for _ in range(5)]
|
|
21
|
+
ax.mpl_eventplot(positions, orientation='horizontal')
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_eventplot")
|
|
23
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
24
|
+
ax.legend()
|
|
25
|
+
return fig, ax
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# EOF
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_fill.py - mpl_fill demo
|
|
4
|
+
|
|
5
|
+
"""mpl_fill: filled polygon."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_fill(plt, rng, ax=None):
|
|
11
|
+
"""mpl_fill - filled polygon.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_fill() - identical to ax.fill()
|
|
14
|
+
"""
|
|
15
|
+
if ax is None:
|
|
16
|
+
fig, ax = plt.subplots()
|
|
17
|
+
else:
|
|
18
|
+
fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
|
|
19
|
+
|
|
20
|
+
theta = np.linspace(0, 2*np.pi, 100)
|
|
21
|
+
r = 1 + 0.3 * np.sin(5 * theta)
|
|
22
|
+
x, y = r * np.cos(theta), r * np.sin(theta)
|
|
23
|
+
ax.mpl_fill(x, y, alpha=0.5)
|
|
24
|
+
ax.set_xyt("X", "Y", "mpl_fill")
|
|
25
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
26
|
+
ax.legend()
|
|
27
|
+
return fig, ax
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# EOF
|