scitex 2.8.1__py3-none-any.whl → 2.10.0__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 +15 -7
- scitex/__version__.py +1 -2
- scitex/_install_guide.py +250 -0
- scitex/_optional_deps.py +206 -39
- scitex/ai/_gen_ai/_Groq.py +2 -4
- scitex/ai/_gen_ai/_OpenAI.py +5 -2
- scitex/ai/_gen_ai/_Perplexity.py +20 -6
- scitex/audio/__init__.py +24 -15
- scitex/audio/_cross_process_lock.py +139 -0
- scitex/audio/_mcp_handlers.py +256 -0
- scitex/audio/_mcp_tool_schemas.py +203 -0
- scitex/audio/engines/elevenlabs_engine.py +5 -2
- scitex/audio/mcp_server.py +98 -457
- scitex/bridge/__init__.py +30 -19
- scitex/bridge/_figrecipe.py +245 -0
- scitex/bridge/_helpers.py +2 -1
- scitex/bridge/_plt_vis.py +23 -10
- scitex/bridge/_stats_plt.py +18 -5
- scitex/bridge/_stats_vis.py +16 -2
- scitex/browser/__init__.py +84 -44
- scitex/browser/automation/__init__.py +5 -1
- scitex/browser/core/BrowserMixin.py +17 -4
- scitex/browser/core/__init__.py +11 -2
- scitex/browser/remote/CaptchaHandler.py +1 -1
- scitex/browser/remote/ZenRowsAPIClient.py +1 -1
- scitex/capture/grid.py +487 -0
- scitex/capture/mcp_handlers.py +401 -0
- scitex/capture/mcp_tool_defs.py +192 -0
- scitex/capture/mcp_tools.py +241 -0
- scitex/capture/mcp_utils.py +30 -0
- scitex/cli/convert.py +421 -0
- scitex/cli/main.py +6 -4
- scitex/datetime/__init__.py +46 -0
- scitex/datetime/_linspace.py +100 -0
- scitex/datetime/_normalize_timestamp.py +306 -0
- scitex/db/_delete_duplicates.py +4 -4
- scitex/db/_sqlite3/_delete_duplicates.py +11 -2
- scitex/dev/plt/__init__.py +61 -62
- scitex/dev/plt/demo_plotters/__init__.py +0 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axhline.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axhspan.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axvline.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axvspan.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_bar.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_barh.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_boxplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_contour.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_contourf.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_errorbar.py +30 -0
- scitex/dev/plt/demo_plotters/plot_mpl_eventplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_fill.py +30 -0
- scitex/dev/plt/demo_plotters/plot_mpl_fill_between.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hexbin.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hist.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hist2d.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_imshow.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_pcolormesh.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_pie.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_plot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_quiver.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_scatter.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_stackplot.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_stem.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_step.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_violinplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_sns_barplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_boxplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_heatmap.py +28 -0
- scitex/dev/plt/demo_plotters/plot_sns_histplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_kdeplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_lineplot.py +31 -0
- scitex/dev/plt/demo_plotters/plot_sns_scatterplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_stripplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_swarmplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_violinplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_bar.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_barh.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_box.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_boxplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_conf_mat.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_contour.py +31 -0
- scitex/dev/plt/demo_plotters/plot_stx_ecdf.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_errorbar.py +30 -0
- scitex/dev/plt/demo_plotters/plot_stx_fill_between.py +31 -0
- scitex/dev/plt/demo_plotters/plot_stx_fillv.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_heatmap.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_image.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_imshow.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_joyplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_kde.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_line.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_mean_ci.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_mean_std.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_median_iqr.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_raster.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_rectangle.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_scatter.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_shaded_line.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_violin.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_violinplot.py +28 -0
- scitex/dev/plt/mpl/get_dir_ax.py +46 -0
- scitex/dev/plt/mpl/get_signatures.py +176 -0
- scitex/dev/plt/mpl/get_signatures_details.py +522 -0
- scitex/dict/_pop_keys.py +1 -7
- scitex/dsp/__init__.py +15 -10
- scitex/dsp/add_noise.py +5 -2
- scitex/dsp/example.py +35 -22
- scitex/dsp/filt.py +8 -3
- scitex/dsp/reference.py +3 -2
- scitex/dsp/utils/__init__.py +2 -1
- scitex/dsp/utils/_differential_bandpass_filters.py +14 -4
- scitex/dt/__init__.py +39 -2
- scitex/errors.py +82 -521
- scitex/fig/__init__.py +4 -4
- scitex/fig/editor/edit/panel_loader.py +1 -1
- scitex/fig/io/_bundle.py +7 -7
- scitex/fts/README.md +262 -0
- scitex/fts/TODO.md +66 -0
- scitex/fts/__init__.py +90 -0
- scitex/fts/_bundle/README_IN_BUNDLE.md +102 -0
- scitex/fts/_bundle/_FTS.py +657 -0
- scitex/fts/_bundle/__init__.py +38 -0
- scitex/fts/_bundle/_children.py +216 -0
- scitex/fts/_bundle/_conversion/__init__.py +15 -0
- scitex/fts/_bundle/_conversion/_bundle2dict.py +44 -0
- scitex/fts/_bundle/_conversion/_dict2bundle.py +50 -0
- scitex/fts/_bundle/_dataclasses/_Axes.py +57 -0
- scitex/fts/_bundle/_dataclasses/_BBox.py +54 -0
- scitex/fts/_bundle/_dataclasses/_ColumnDef.py +72 -0
- scitex/fts/_bundle/_dataclasses/_DataFormat.py +40 -0
- scitex/fts/_bundle/_dataclasses/_DataInfo.py +135 -0
- scitex/fts/_bundle/_dataclasses/_DataSource.py +44 -0
- scitex/fts/_bundle/_dataclasses/_Node.py +319 -0
- scitex/fts/_bundle/_dataclasses/_NodeRefs.py +45 -0
- scitex/fts/_bundle/_dataclasses/_SizeMM.py +38 -0
- scitex/fts/_bundle/_dataclasses/__init__.py +35 -0
- scitex/fts/_bundle/_extractors/__init__.py +32 -0
- scitex/fts/_bundle/_extractors/_extract_bar.py +131 -0
- scitex/fts/_bundle/_extractors/_extract_line.py +71 -0
- scitex/fts/_bundle/_extractors/_extract_scatter.py +79 -0
- scitex/fts/_bundle/_loader.py +134 -0
- scitex/fts/_bundle/_mpl_helpers.py +389 -0
- scitex/fts/_bundle/_saver.py +269 -0
- scitex/fts/_bundle/_storage.py +200 -0
- scitex/fts/_bundle/_utils/__init__.py +55 -0
- scitex/fts/_bundle/_utils/_const.py +26 -0
- scitex/fts/_bundle/_utils/_errors.py +73 -0
- scitex/fts/_bundle/_utils/_generate.py +21 -0
- scitex/fts/_bundle/_utils/_types.py +76 -0
- scitex/fts/_bundle/_validation.py +434 -0
- scitex/fts/_bundle/_zipbundle.py +165 -0
- scitex/fts/_fig/__init__.py +22 -0
- scitex/fts/_fig/_backend/__init__.py +53 -0
- scitex/fts/_fig/_backend/_export.py +165 -0
- scitex/fts/_fig/_backend/_parser.py +188 -0
- scitex/fts/_fig/_backend/_render.py +538 -0
- scitex/fts/_fig/_composite.py +345 -0
- scitex/fts/_fig/_dataclasses/_ChannelEncoding.py +46 -0
- scitex/fts/_fig/_dataclasses/_Encoding.py +82 -0
- scitex/fts/_fig/_dataclasses/_Theme.py +441 -0
- scitex/fts/_fig/_dataclasses/_TraceEncoding.py +52 -0
- scitex/fts/_fig/_dataclasses/__init__.py +47 -0
- scitex/fts/_fig/_editor/__init__.py +14 -0
- scitex/fts/_fig/_editor/_cui/__init__.py +33 -0
- scitex/fts/_fig/_editor/_cui/_backend_detector.py +39 -0
- scitex/fts/_fig/_editor/_cui/_bundle_resolver.py +366 -0
- scitex/fts/_fig/_editor/_cui/_editor_launcher.py +175 -0
- scitex/fts/_fig/_editor/_cui/_manual_handler.py +52 -0
- scitex/fts/_fig/_editor/_cui/_panel_loader.py +246 -0
- scitex/fts/_fig/_editor/_cui/_path_resolver.py +66 -0
- scitex/fts/_fig/_editor/_defaults.py +300 -0
- scitex/fts/_fig/_editor/_gui/__init__.py +11 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/__init__.py +20 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/_bbox.py +1339 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/_core.py +1688 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/_plotter.py +664 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/_renderer.py +853 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/_utils.py +79 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/reset.css +41 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/typography.css +16 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/variables.css +85 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/buttons.css +217 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/context-menu.css +93 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/dropdown.css +57 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/forms.css +112 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/modal.css +59 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/sections.css +212 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/canvas.css +176 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/element-inspector.css +190 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/loading.css +59 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/overlay.css +45 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/panel-grid.css +95 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/selection.css +101 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/statistics.css +138 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/index.css +31 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/container.css +7 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/controls.css +56 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/preview.css +78 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/axis.js +314 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/basic.js +107 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/distribute.js +54 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/canvas.js +172 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/dragging.js +258 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/resize.js +48 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/selection.js +71 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/api.js +288 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/state.js +143 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/utils.js +245 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/dev/element-inspector.js +992 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/bbox.js +339 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/element-drag.js +286 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/overlay.js +371 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/preview.js +293 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/main.js +426 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/context-menu.js +152 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/keyboard.js +265 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/controls.js +184 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/download.js +57 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/help.js +100 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/theme.js +34 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/__init__.py +124 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_html.py +851 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_scripts.py +4932 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_styles.py +1657 -0
- scitex/fts/_fig/_editor/_gui/_flask_editor.py +36 -0
- scitex/fts/_fig/_models/_Annotations.py +115 -0
- scitex/fts/_fig/_models/_Axes.py +152 -0
- scitex/fts/_fig/_models/_Figure.py +138 -0
- scitex/fts/_fig/_models/_Guides.py +104 -0
- scitex/fts/_fig/_models/_Plot.py +123 -0
- scitex/fts/_fig/_models/_Styles.py +245 -0
- scitex/fts/_fig/_models/__init__.py +80 -0
- scitex/fts/_fig/_models/_plot_types/__init__.py +156 -0
- scitex/fts/_fig/_models/_plot_types/_bar.py +43 -0
- scitex/fts/_fig/_models/_plot_types/_box.py +38 -0
- scitex/fts/_fig/_models/_plot_types/_distribution.py +36 -0
- scitex/fts/_fig/_models/_plot_types/_errorbar.py +60 -0
- scitex/fts/_fig/_models/_plot_types/_histogram.py +30 -0
- scitex/fts/_fig/_models/_plot_types/_image.py +61 -0
- scitex/fts/_fig/_models/_plot_types/_line.py +57 -0
- scitex/fts/_fig/_models/_plot_types/_scatter.py +30 -0
- scitex/fts/_fig/_models/_plot_types/_seaborn.py +121 -0
- scitex/fts/_fig/_models/_plot_types/_violin.py +36 -0
- scitex/fts/_fig/_utils/__init__.py +129 -0
- scitex/fts/_fig/_utils/_auto_layout.py +127 -0
- scitex/fts/_fig/_utils/_calc_bounds.py +111 -0
- scitex/fts/_fig/_utils/_const_sizes.py +48 -0
- scitex/fts/_fig/_utils/_convert_coords.py +77 -0
- scitex/fts/_fig/_utils/_get_template.py +178 -0
- scitex/fts/_fig/_utils/_normalize.py +73 -0
- scitex/fts/_fig/_utils/_plot_layout.py +397 -0
- scitex/fts/_fig/_utils/_validate.py +197 -0
- scitex/fts/_kinds/__init__.py +45 -0
- scitex/fts/_kinds/_figure/__init__.py +19 -0
- scitex/fts/_kinds/_figure/_composite.py +345 -0
- scitex/fts/_kinds/_plot/__init__.py +25 -0
- scitex/fts/_kinds/_plot/_backend/__init__.py +53 -0
- scitex/fts/_kinds/_plot/_backend/_export.py +165 -0
- scitex/fts/_kinds/_plot/_backend/_parser.py +188 -0
- scitex/fts/_kinds/_plot/_backend/_render.py +538 -0
- scitex/fts/_kinds/_plot/_dataclasses/_ChannelEncoding.py +46 -0
- scitex/fts/_kinds/_plot/_dataclasses/_Encoding.py +82 -0
- scitex/fts/_kinds/_plot/_dataclasses/_Theme.py +441 -0
- scitex/fts/_kinds/_plot/_dataclasses/_TraceEncoding.py +52 -0
- scitex/fts/_kinds/_plot/_dataclasses/__init__.py +47 -0
- scitex/fts/_kinds/_plot/_models/_Annotations.py +115 -0
- scitex/fts/_kinds/_plot/_models/_Axes.py +152 -0
- scitex/fts/_kinds/_plot/_models/_Figure.py +138 -0
- scitex/fts/_kinds/_plot/_models/_Guides.py +104 -0
- scitex/fts/_kinds/_plot/_models/_Plot.py +123 -0
- scitex/fts/_kinds/_plot/_models/_Styles.py +245 -0
- scitex/fts/_kinds/_plot/_models/__init__.py +80 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/__init__.py +156 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_bar.py +43 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_box.py +38 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_distribution.py +36 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_errorbar.py +60 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_histogram.py +30 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_image.py +61 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_line.py +57 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_scatter.py +30 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_seaborn.py +121 -0
- scitex/fts/_kinds/_plot/_models/_plot_types/_violin.py +36 -0
- scitex/fts/_kinds/_plot/_utils/__init__.py +129 -0
- scitex/fts/_kinds/_plot/_utils/_auto_layout.py +127 -0
- scitex/fts/_kinds/_plot/_utils/_calc_bounds.py +111 -0
- scitex/fts/_kinds/_plot/_utils/_const_sizes.py +48 -0
- scitex/fts/_kinds/_plot/_utils/_convert_coords.py +77 -0
- scitex/fts/_kinds/_plot/_utils/_get_template.py +178 -0
- scitex/fts/_kinds/_plot/_utils/_normalize.py +73 -0
- scitex/fts/_kinds/_plot/_utils/_plot_layout.py +397 -0
- scitex/fts/_kinds/_plot/_utils/_validate.py +197 -0
- scitex/fts/_kinds/_shape/__init__.py +141 -0
- scitex/fts/_kinds/_stats/__init__.py +56 -0
- scitex/fts/_kinds/_stats/_dataclasses/_Stats.py +423 -0
- scitex/fts/_kinds/_stats/_dataclasses/__init__.py +48 -0
- scitex/fts/_kinds/_table/__init__.py +72 -0
- scitex/fts/_kinds/_table/_latex/__init__.py +93 -0
- scitex/fts/_kinds/_table/_latex/_editor/__init__.py +11 -0
- scitex/fts/_kinds/_table/_latex/_editor/_app.py +725 -0
- scitex/fts/_kinds/_table/_latex/_export.py +279 -0
- scitex/fts/_kinds/_table/_latex/_figure_exporter.py +153 -0
- scitex/fts/_kinds/_table/_latex/_stats_formatter.py +274 -0
- scitex/fts/_kinds/_table/_latex/_table_exporter.py +362 -0
- scitex/fts/_kinds/_table/_latex/_utils.py +369 -0
- scitex/fts/_kinds/_table/_latex/_validator.py +445 -0
- scitex/fts/_kinds/_text/__init__.py +77 -0
- scitex/fts/_schemas/data_info.schema.json +75 -0
- scitex/fts/_schemas/encoding.schema.json +90 -0
- scitex/fts/_schemas/node.schema.json +145 -0
- scitex/fts/_schemas/render_manifest.schema.json +62 -0
- scitex/fts/_schemas/stats.schema.json +132 -0
- scitex/fts/_schemas/theme.schema.json +141 -0
- scitex/fts/_stats/__init__.py +48 -0
- scitex/fts/_stats/_dataclasses/_Stats.py +423 -0
- scitex/fts/_stats/_dataclasses/__init__.py +48 -0
- scitex/fts/_tables/__init__.py +65 -0
- scitex/fts/_tables/_latex/__init__.py +93 -0
- scitex/fts/_tables/_latex/_editor/__init__.py +11 -0
- scitex/fts/_tables/_latex/_editor/_app.py +725 -0
- scitex/fts/_tables/_latex/_export.py +279 -0
- scitex/fts/_tables/_latex/_figure_exporter.py +153 -0
- scitex/fts/_tables/_latex/_stats_formatter.py +274 -0
- scitex/fts/_tables/_latex/_table_exporter.py +362 -0
- scitex/fts/_tables/_latex/_utils.py +369 -0
- scitex/fts/_tables/_latex/_validator.py +445 -0
- scitex/gen/__init__.py +66 -25
- scitex/gen/misc.py +28 -0
- scitex/io/__init__.py +47 -32
- scitex/io/_load.py +87 -36
- scitex/io/_load_modules/__init__.py +10 -7
- scitex/io/_load_modules/_pandas.py +6 -1
- scitex/io/_save.py +299 -1556
- scitex/io/_save_modules/__init__.py +76 -19
- scitex/io/_save_modules/_figure_utils.py +90 -0
- scitex/io/_save_modules/_image_csv.py +497 -0
- scitex/io/_save_modules/_legends.py +91 -0
- scitex/io/_save_modules/_pltz_bundle.py +356 -0
- scitex/io/_save_modules/_pltz_stx.py +536 -0
- scitex/io/_save_modules/_stx_bundle.py +104 -0
- scitex/io/_save_modules/_symlink.py +96 -0
- scitex/io/_save_modules/_yaml.py +1 -1
- scitex/io/_save_modules/_zarr.py +64 -18
- scitex/io/bundle/README.md +212 -0
- scitex/io/bundle/__init__.py +110 -0
- scitex/io/{_bundle.py → bundle/_core.py} +168 -97
- scitex/io/bundle/_nested.py +713 -0
- scitex/io/bundle/_types.py +74 -0
- scitex/io/{_zip_bundle.py → bundle/_zip.py} +93 -45
- scitex/io/utils/h5_to_zarr.py +1 -1
- scitex/logging/__init__.py +108 -13
- scitex/logging/_errors.py +508 -0
- scitex/logging/_formatters.py +30 -6
- scitex/logging/_warnings.py +261 -0
- scitex/plt/__init__.py +4 -1
- scitex/plt/_figrecipe.py +236 -0
- scitex/plt/_subplots/_AxisWrapper.py +6 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +112 -1
- scitex/plt/_subplots/_FigWrapper.py +15 -0
- scitex/plt/_subplots/_SubplotsWrapper.py +125 -489
- scitex/plt/_subplots/_export_as_csv.py +11 -0
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +2 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_pcolormesh.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stackplot.py +62 -0
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +208 -0
- scitex/plt/_subplots/_fonts.py +71 -0
- scitex/plt/_subplots/_mm_layout.py +282 -0
- scitex/plt/gallery/__init__.py +99 -2
- scitex/plt/styles/_plot_postprocess.py +3 -1
- scitex/plt/utils/_configure_mpl.py +16 -19
- scitex/repro/_RandomStateManager.py +13 -8
- scitex/resource/__init__.py +19 -1
- scitex/resource/_utils/_get_env_info.py +13 -25
- scitex/schema/__init__.py +149 -160
- scitex/schema/_encoding.py +273 -0
- scitex/schema/_figure_elements.py +406 -0
- scitex/schema/_theme.py +360 -0
- scitex/schema/_validation.py +0 -98
- scitex/scholar/__init__.py +56 -14
- scitex/scholar/auth/ScholarAuthManager.py +1 -1
- scitex/scholar/auth/__init__.py +11 -2
- scitex/scholar/auth/providers/BaseAuthenticator.py +1 -1
- scitex/scholar/auth/providers/EZProxyAuthenticator.py +1 -1
- scitex/scholar/auth/providers/OpenAthensAuthenticator.py +1 -1
- scitex/scholar/auth/providers/ShibbolethAuthenticator.py +1 -1
- scitex/scholar/config/ScholarConfig.py +1 -1
- scitex/scholar/core/Scholar.py +1 -1
- scitex/session/_decorator.py +18 -16
- scitex/session/_lifecycle.py +9 -11
- scitex/session/template.py +9 -8
- scitex/sh/test_sh.py +72 -0
- scitex/sh/test_sh_simple.py +61 -0
- scitex/stats/__init__.py +221 -97
- scitex/stats/_schema.py +21 -22
- scitex/stats/descriptive/_circular.py +212 -351
- scitex/stats/descriptive/_describe.py +81 -132
- scitex/stats/descriptive/_nan.py +205 -433
- scitex/stats/descriptive/_real.py +127 -141
- scitex/str/_format_plot_text.py +5 -5
- scitex/str/_latex.py +26 -84
- scitex/str/_latex_fallback.py +53 -47
- scitex/web/_search_pubmed.py +5 -4
- scitex/writer/tests/test_diff_between.py +451 -0
- scitex/writer/tests/test_document_section.py +311 -0
- scitex/writer/tests/test_document_workflow.py +393 -0
- scitex/writer/tests/test_writer.py +361 -0
- scitex/writer/tests/test_writer_integration.py +303 -0
- {scitex-2.8.1.dist-info → scitex-2.10.0.dist-info}/METADATA +364 -181
- {scitex-2.8.1.dist-info → scitex-2.10.0.dist-info}/RECORD +412 -97
- scitex/scholar/docs/to_claude/guidelines/examples/mgmt/ARCHITECTURE_EXAMPLE.md +0 -905
- scitex/scholar/docs/to_claude/guidelines/examples/mgmt/BULLETIN_BOARD_EXAMPLE.md +0 -99
- scitex/scholar/docs/to_claude/guidelines/examples/mgmt/PROJECT_DESCRIPTION_EXAMPLE.md +0 -96
- {scitex-2.8.1.dist-info → scitex-2.10.0.dist-info}/WHEEL +0 -0
- {scitex-2.8.1.dist-info → scitex-2.10.0.dist-info}/entry_points.txt +0 -0
- {scitex-2.8.1.dist-info → scitex-2.10.0.dist-info}/licenses/LICENSE +0 -0
scitex/dev/plt/__init__.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
2
|
# File: /home/ywatanabe/proj/scitex-code/src/scitex/dev/plt/__init__.py
|
|
4
3
|
|
|
5
4
|
"""
|
|
@@ -36,31 +35,31 @@ Usage:
|
|
|
36
35
|
# =============================================================================
|
|
37
36
|
# stx_* API Layer - ArrayLike input (25 plotters)
|
|
38
37
|
# =============================================================================
|
|
39
|
-
from .
|
|
40
|
-
from .
|
|
41
|
-
from .
|
|
42
|
-
from .
|
|
43
|
-
from .
|
|
44
|
-
from .
|
|
45
|
-
from .
|
|
46
|
-
from .
|
|
47
|
-
from .
|
|
48
|
-
from .
|
|
49
|
-
from .
|
|
50
|
-
from .
|
|
51
|
-
from .
|
|
52
|
-
from .
|
|
53
|
-
from .
|
|
54
|
-
from .
|
|
55
|
-
from .
|
|
56
|
-
from .
|
|
57
|
-
from .
|
|
58
|
-
from .
|
|
59
|
-
from .
|
|
60
|
-
from .
|
|
61
|
-
from .
|
|
62
|
-
from .
|
|
63
|
-
from .plot_stx_violinplot import plot_stx_violinplot
|
|
38
|
+
from .demo_plotters.plot_stx_bar import plot_stx_bar
|
|
39
|
+
from .demo_plotters.plot_stx_barh import plot_stx_barh
|
|
40
|
+
from .demo_plotters.plot_stx_box import plot_stx_box
|
|
41
|
+
from .demo_plotters.plot_stx_boxplot import plot_stx_boxplot
|
|
42
|
+
from .demo_plotters.plot_stx_conf_mat import plot_stx_conf_mat
|
|
43
|
+
from .demo_plotters.plot_stx_contour import plot_stx_contour
|
|
44
|
+
from .demo_plotters.plot_stx_ecdf import plot_stx_ecdf
|
|
45
|
+
from .demo_plotters.plot_stx_errorbar import plot_stx_errorbar
|
|
46
|
+
from .demo_plotters.plot_stx_fill_between import plot_stx_fill_between
|
|
47
|
+
from .demo_plotters.plot_stx_fillv import plot_stx_fillv
|
|
48
|
+
from .demo_plotters.plot_stx_heatmap import plot_stx_heatmap
|
|
49
|
+
from .demo_plotters.plot_stx_image import plot_stx_image
|
|
50
|
+
from .demo_plotters.plot_stx_imshow import plot_stx_imshow
|
|
51
|
+
from .demo_plotters.plot_stx_joyplot import plot_stx_joyplot
|
|
52
|
+
from .demo_plotters.plot_stx_kde import plot_stx_kde
|
|
53
|
+
from .demo_plotters.plot_stx_line import plot_stx_line
|
|
54
|
+
from .demo_plotters.plot_stx_mean_ci import plot_stx_mean_ci
|
|
55
|
+
from .demo_plotters.plot_stx_mean_std import plot_stx_mean_std
|
|
56
|
+
from .demo_plotters.plot_stx_median_iqr import plot_stx_median_iqr
|
|
57
|
+
from .demo_plotters.plot_stx_raster import plot_stx_raster
|
|
58
|
+
from .demo_plotters.plot_stx_rectangle import plot_stx_rectangle
|
|
59
|
+
from .demo_plotters.plot_stx_scatter import plot_stx_scatter
|
|
60
|
+
from .demo_plotters.plot_stx_shaded_line import plot_stx_shaded_line
|
|
61
|
+
from .demo_plotters.plot_stx_violin import plot_stx_violin
|
|
62
|
+
from .demo_plotters.plot_stx_violinplot import plot_stx_violinplot
|
|
64
63
|
|
|
65
64
|
PLOTTERS_STX = {
|
|
66
65
|
"stx_line": plot_stx_line,
|
|
@@ -93,16 +92,16 @@ PLOTTERS_STX = {
|
|
|
93
92
|
# =============================================================================
|
|
94
93
|
# sns_* API Layer - DataFrame input (10 plotters)
|
|
95
94
|
# =============================================================================
|
|
96
|
-
from .
|
|
97
|
-
from .
|
|
98
|
-
from .
|
|
99
|
-
from .plot_sns_histplot import plot_sns_histplot
|
|
100
|
-
from .plot_sns_kdeplot import plot_sns_kdeplot
|
|
101
|
-
from .
|
|
102
|
-
from .
|
|
103
|
-
from .
|
|
104
|
-
from .
|
|
105
|
-
from .
|
|
95
|
+
from .demo_plotters.plot_sns_barplot import plot_sns_barplot
|
|
96
|
+
from .demo_plotters.plot_sns_boxplot import plot_sns_boxplot
|
|
97
|
+
from .demo_plotters.plot_sns_heatmap import plot_sns_heatmap
|
|
98
|
+
from .demo_plotters.plot_sns_histplot import plot_sns_histplot
|
|
99
|
+
from .demo_plotters.plot_sns_kdeplot import plot_sns_kdeplot
|
|
100
|
+
from .demo_plotters.plot_sns_lineplot import plot_sns_lineplot
|
|
101
|
+
from .demo_plotters.plot_sns_scatterplot import plot_sns_scatterplot
|
|
102
|
+
from .demo_plotters.plot_sns_stripplot import plot_sns_stripplot
|
|
103
|
+
from .demo_plotters.plot_sns_swarmplot import plot_sns_swarmplot
|
|
104
|
+
from .demo_plotters.plot_sns_violinplot import plot_sns_violinplot
|
|
106
105
|
|
|
107
106
|
PLOTTERS_SNS = {
|
|
108
107
|
"sns_boxplot": plot_sns_boxplot,
|
|
@@ -120,32 +119,32 @@ PLOTTERS_SNS = {
|
|
|
120
119
|
# =============================================================================
|
|
121
120
|
# mpl_* API Layer - Matplotlib-style input (26 plotters)
|
|
122
121
|
# =============================================================================
|
|
123
|
-
from .
|
|
124
|
-
from .
|
|
125
|
-
from .
|
|
126
|
-
from .
|
|
127
|
-
from .
|
|
128
|
-
from .
|
|
129
|
-
from .
|
|
130
|
-
from .
|
|
131
|
-
from .
|
|
132
|
-
from .plot_mpl_errorbar import plot_mpl_errorbar
|
|
133
|
-
from .
|
|
134
|
-
from .
|
|
135
|
-
from .
|
|
136
|
-
from .
|
|
137
|
-
from .
|
|
138
|
-
from .
|
|
139
|
-
from .
|
|
140
|
-
from .
|
|
141
|
-
from .
|
|
142
|
-
from .
|
|
143
|
-
from .
|
|
144
|
-
from .
|
|
145
|
-
from .
|
|
146
|
-
from .
|
|
147
|
-
from .
|
|
148
|
-
from .
|
|
122
|
+
from .demo_plotters.plot_mpl_axhline import plot_mpl_axhline
|
|
123
|
+
from .demo_plotters.plot_mpl_axhspan import plot_mpl_axhspan
|
|
124
|
+
from .demo_plotters.plot_mpl_axvline import plot_mpl_axvline
|
|
125
|
+
from .demo_plotters.plot_mpl_axvspan import plot_mpl_axvspan
|
|
126
|
+
from .demo_plotters.plot_mpl_bar import plot_mpl_bar
|
|
127
|
+
from .demo_plotters.plot_mpl_barh import plot_mpl_barh
|
|
128
|
+
from .demo_plotters.plot_mpl_boxplot import plot_mpl_boxplot
|
|
129
|
+
from .demo_plotters.plot_mpl_contour import plot_mpl_contour
|
|
130
|
+
from .demo_plotters.plot_mpl_contourf import plot_mpl_contourf
|
|
131
|
+
from .demo_plotters.plot_mpl_errorbar import plot_mpl_errorbar
|
|
132
|
+
from .demo_plotters.plot_mpl_eventplot import plot_mpl_eventplot
|
|
133
|
+
from .demo_plotters.plot_mpl_fill import plot_mpl_fill
|
|
134
|
+
from .demo_plotters.plot_mpl_fill_between import plot_mpl_fill_between
|
|
135
|
+
from .demo_plotters.plot_mpl_hexbin import plot_mpl_hexbin
|
|
136
|
+
from .demo_plotters.plot_mpl_hist import plot_mpl_hist
|
|
137
|
+
from .demo_plotters.plot_mpl_hist2d import plot_mpl_hist2d
|
|
138
|
+
from .demo_plotters.plot_mpl_imshow import plot_mpl_imshow
|
|
139
|
+
from .demo_plotters.plot_mpl_pcolormesh import plot_mpl_pcolormesh
|
|
140
|
+
from .demo_plotters.plot_mpl_pie import plot_mpl_pie
|
|
141
|
+
from .demo_plotters.plot_mpl_plot import plot_mpl_plot
|
|
142
|
+
from .demo_plotters.plot_mpl_quiver import plot_mpl_quiver
|
|
143
|
+
from .demo_plotters.plot_mpl_scatter import plot_mpl_scatter
|
|
144
|
+
from .demo_plotters.plot_mpl_stackplot import plot_mpl_stackplot
|
|
145
|
+
from .demo_plotters.plot_mpl_stem import plot_mpl_stem
|
|
146
|
+
from .demo_plotters.plot_mpl_step import plot_mpl_step
|
|
147
|
+
from .demo_plotters.plot_mpl_violinplot import plot_mpl_violinplot
|
|
149
148
|
|
|
150
149
|
PLOTTERS_MPL = {
|
|
151
150
|
"mpl_plot": plot_mpl_plot,
|
|
File without changes
|
|
@@ -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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_fill_between.py - mpl_fill_between demo
|
|
4
|
+
|
|
5
|
+
"""mpl_fill_between: fill between."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_fill_between(plt, rng, ax=None):
|
|
11
|
+
"""mpl_fill_between - fill between.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_fill_between() - identical to ax.fill_between()
|
|
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(0, 2*np.pi, 100)
|
|
21
|
+
y1, y2 = np.sin(x), np.sin(x) + 0.5
|
|
22
|
+
ax.mpl_fill_between(x, y1, y2, alpha=0.3)
|
|
23
|
+
ax.plot(x, y1)
|
|
24
|
+
ax.plot(x, y2)
|
|
25
|
+
ax.set_xyt("X", "Y", "mpl_fill_between")
|
|
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,28 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# File: plot_mpl_hexbin.py - mpl_hexbin demo
|
|
4
|
+
|
|
5
|
+
"""mpl_hexbin: hexbin plot."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_hexbin(plt, rng, ax=None):
|
|
11
|
+
"""mpl_hexbin - hexbin plot.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_hexbin() - identical to ax.hexbin()
|
|
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, y = rng.normal(0, 1, 1000), rng.normal(0, 1, 1000)
|
|
21
|
+
ax.mpl_hexbin(x, y, gridsize=15)
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_hexbin")
|
|
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_hist.py - mpl_hist demo
|
|
4
|
+
|
|
5
|
+
"""mpl_hist: histogram."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_hist(plt, rng, ax=None):
|
|
11
|
+
"""mpl_hist - histogram.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_hist() - identical to ax.hist()
|
|
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.standard_normal(1000)
|
|
21
|
+
ax.mpl_hist(data, bins=30, edgecolor='white', alpha=0.8)
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_hist")
|
|
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_hist2d.py - mpl_hist2d demo
|
|
4
|
+
|
|
5
|
+
"""mpl_hist2d: 2D histogram."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_hist2d(plt, rng, ax=None):
|
|
11
|
+
"""mpl_hist2d - 2D histogram.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_hist2d() - identical to ax.hist2d()
|
|
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, y = rng.normal(0, 1, 1000), rng.normal(0, 1, 1000)
|
|
21
|
+
ax.mpl_hist2d(x, y, bins=20)
|
|
22
|
+
ax.set_xyt("X", "Y", "mpl_hist2d")
|
|
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_imshow.py - mpl_imshow demo
|
|
4
|
+
|
|
5
|
+
"""mpl_imshow: image show."""
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def plot_mpl_imshow(plt, rng, ax=None):
|
|
11
|
+
"""mpl_imshow - image show.
|
|
12
|
+
|
|
13
|
+
Demonstrates: ax.mpl_imshow() - identical to ax.imshow()
|
|
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.uniform(0, 1, (10, 10))
|
|
21
|
+
im = ax.mpl_imshow(data, cmap='viridis', aspect='auto')
|
|
22
|
+
fig.colorbar(im, ax=ax)
|
|
23
|
+
ax.set_xyt("X", "Y", "mpl_imshow")
|
|
24
|
+
if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
|
|
25
|
+
ax.legend()
|
|
26
|
+
return fig, ax
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# EOF
|