jarvisplot 2.1.2__tar.gz → 2.1.3__tar.gz
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.
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/PKG-INFO +1 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/PKG-INFO +1 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/corrplot_runtime.py +39 -11
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/corrplot/diamond.json +2 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/core_runtime.py +46 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/method_notes.yaml +1 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/type-correlation-matrix.yaml +3 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/pyproject.toml +1 -1
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_corrplot.py +73 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/SOURCES.txt +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/entry_points.txt +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/requires.txt +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/JarvisPLOT.egg-info/top_level.txt +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/README.md +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/__init__.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/adapters_rect.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/adapters_ternary.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/bin_stat_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/colorbar_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/config_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/corr_layout.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/corr_layout_diamond.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/corr_order.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/correlation_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/data_pipelines.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/debug_config.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/density_cell_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/design_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/dynesty_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/figure.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/figure_types.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/helper.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/layer_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/layout_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/method_registry.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/posterior_hpd.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/posterior_mesh.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/preprocessor.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/profile_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/significance_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/Figure/style_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/__init__.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/agent_digest.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/agent_io.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cache_store.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/capabilities.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/rect.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/rectratio.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/ternary.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/4x1/rect.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/4x1/ternary.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/args.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/colors/colormaps.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/corrplot/matrix.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/default/output.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/flowchart/default.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/gambit/2x1/ternary.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/gambit.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/icons/gambit_small.png +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cards/style_preference.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cli.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/cli_help.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/client.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/column_demand.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/column_probe.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/config.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/config_address.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/core.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/core_assets.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/data_access.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/data_loader.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/data_loader_hdf5.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/data_loader_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/data_loader_summary.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/dataset_types.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/diagnostic_guidance.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/diagnostics.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/dryrun_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/expr_names.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/fix_apply.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/flowchart.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/inner_func.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/man_catalog.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/man_methods.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/man_render_agent.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/man_render_human.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/man_transforms.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/agent-output.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/cli-map.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/data-columns.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/debug-overlay.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/layer-method.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/manifest.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/style-axes.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/validate.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/workflow.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/memtrace.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/method_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/render_health.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/core/common.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/core/dataset.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/core/figure.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/core/layer.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/core/transform.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/manifest.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/bar.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/barh.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/contour.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/contourf.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/corrplot.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/errorbar.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/fill.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/fill_between.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/hist.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/hist2d.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/imshow.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/jpcontour.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/jpcontourf.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/jpfield.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/pcolor.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/pcolormesh.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/plot.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/quiver.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/scatter.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/stairs.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/step.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/tricontour.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/tricontourf.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/tripcolor.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/triplot.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/voronoi.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/methods/voronoif.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema/plot-config.json +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema_catalog.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/schema_diagnostics.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/templates_catalog.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/transform_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/__init__.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/cmaps.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/dataframes.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/expression.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/interpolator.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/utils/pathing.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/validation.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/__init__.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/cap.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/config_cmd.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/data.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/doctor.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/dryrun.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/explain.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/man.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/suggest.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/template.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/verbs/validate.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/jarvisplot/yaml_io.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/setup.cfg +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_agent_digest.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_agent_envelope.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_axis_title.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_capabilities.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_card_debug_shape.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_cli_help.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_cli_verbs.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_cmaps.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_column_existence.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_config_addressing.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_config_edit.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_config_expand.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_correlation_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_data_access.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_data_describe.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_data_head_eval.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_data_loader_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_data_pipelines.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_debug_config.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_debug_switches.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_debug_yaml_override.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_density_cell_transform.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_design_runtime.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_diagnostic_guidance.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_docs_status_labels.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_doctor_partial.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_explain.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_figure_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_figure_type_expander.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_fix_application.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_flowchart_renderer.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_imshow_adapter.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_interp_2d_transform.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_interp_natural_neighbor.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_interpolator_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_jpcontour_methods.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_man_cli.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_method_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_parse_data_metadata.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_pathing_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_posterior_hpd.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_render_health.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_row_ledger.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_schema_catalog.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_suggest.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_suggest_axes.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_template_catalog.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_template_json.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_ternary_debug.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_transform_contracts.py +0 -0
- {jarvisplot-2.1.2 → jarvisplot-2.1.3}/tests/test_validate_no_matplotlib.py +0 -0
|
@@ -45,10 +45,15 @@ GLYPHS = ("circle", "square", "ellipse", "color", "shade", "pie", "number")
|
|
|
45
45
|
|
|
46
46
|
_TRIANGLES = ("full", "upper", "lower")
|
|
47
47
|
|
|
48
|
+
#: What the tint may be told to mean. `selected` is the author's own grouping,
|
|
49
|
+
#: `alternate` the figure's own, `none` nothing.
|
|
50
|
+
_STRIPES = ("alternate", "selected", "none")
|
|
51
|
+
|
|
48
52
|
#: Formals resolved at config time. They arrive because the user wrote them
|
|
49
53
|
#: in the layer, and are dropped here rather than forwarded to matplotlib.
|
|
50
54
|
_CONFIG_TIME = ("order", "hclust.method", "addrect", "col", "tl.pos", "tl.cex",
|
|
51
|
-
"tl.col", "tl.srt", "tl.offset", "cl.cex", "edge.numbers.cex"
|
|
55
|
+
"tl.col", "tl.srt", "tl.offset", "cl.cex", "edge.numbers.cex",
|
|
56
|
+
"stripe.variables")
|
|
52
57
|
|
|
53
58
|
|
|
54
59
|
def _pop(kwargs: dict, name: str, default=None):
|
|
@@ -270,14 +275,25 @@ def _notch_vertices(n: int, side: str = "left", diag: bool = False):
|
|
|
270
275
|
)
|
|
271
276
|
|
|
272
277
|
|
|
273
|
-
def _shaded_variables(n: int, blocks=None) -> np.ndarray:
|
|
274
|
-
"""Which variables carry the tint
|
|
278
|
+
def _shaded_variables(n: int, blocks=None, selected=None) -> np.ndarray:
|
|
279
|
+
"""Which variables carry the tint.
|
|
280
|
+
|
|
281
|
+
Three answers, and they say different things. ``selected`` is an explicit
|
|
282
|
+
set of positions -- the author naming the variables that matter, so the
|
|
283
|
+
tint is *their* grouping and nothing is inferred. Otherwise it is read off
|
|
284
|
+
the figure: alternate **blocks** when the clustering cut some, so the
|
|
285
|
+
shading says where one group ends and the next begins (which is what the
|
|
286
|
+
boxes were for), and alternate **names** when it did not.
|
|
275
287
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
next begins -- which is what the boxes were for.
|
|
288
|
+
``selected`` arrives as positions, not names: the order is settled at
|
|
289
|
+
config time and only the order knows which position a name ended up at.
|
|
279
290
|
"""
|
|
280
291
|
shaded = np.zeros(int(n), dtype=bool)
|
|
292
|
+
if selected is not None:
|
|
293
|
+
for position in selected:
|
|
294
|
+
if 0 <= int(position) < int(n):
|
|
295
|
+
shaded[int(position)] = True
|
|
296
|
+
return shaded
|
|
281
297
|
if blocks:
|
|
282
298
|
for position, (start, end) in enumerate(blocks):
|
|
283
299
|
if position % 2 == 0:
|
|
@@ -728,9 +744,21 @@ def draw_corrplot(ax, **kwargs):
|
|
|
728
744
|
# Diamond only. See the stripe block below for why it is not decoration.
|
|
729
745
|
stripe = _pop(kwargs, "stripe", "alternate")
|
|
730
746
|
stripe = "none" if stripe is False else str(stripe).strip().lower()
|
|
731
|
-
if stripe not in
|
|
747
|
+
if stripe not in _STRIPES:
|
|
748
|
+
raise ValueError(
|
|
749
|
+
"corrplot stripe must be one of {}; got {!r}. `selected` takes the "
|
|
750
|
+
"variables to tint in `stripe.variables`.".format(
|
|
751
|
+
", ".join(_STRIPES), stripe
|
|
752
|
+
)
|
|
753
|
+
)
|
|
754
|
+
# Positions, resolved from `stripe.variables` at config time -- see
|
|
755
|
+
# `core_runtime._corr_shaded_positions`. The names cannot be resolved here
|
|
756
|
+
# because `order` has already moved them.
|
|
757
|
+
shaded_positions = kwargs.pop("__corr_shaded__", None)
|
|
758
|
+
if stripe == "selected" and shaded_positions is None:
|
|
732
759
|
raise ValueError(
|
|
733
|
-
"corrplot stripe
|
|
760
|
+
"corrplot stripe: selected needs stripe.variables -- the names to "
|
|
761
|
+
"tint. Without them the tint would say nothing."
|
|
734
762
|
)
|
|
735
763
|
stripe_color = _pop(kwargs, "stripe.col", "#EFEFEF")
|
|
736
764
|
# Diamond only. See `_edge_rules`: the rotated matrix has no top or bottom
|
|
@@ -883,7 +911,7 @@ def draw_corrplot(ax, **kwargs):
|
|
|
883
911
|
edge_color, clip, zorder + 40,
|
|
884
912
|
)
|
|
885
913
|
|
|
886
|
-
if diamond and stripe
|
|
914
|
+
if diamond and stripe != "none" and np.any(drawn):
|
|
887
915
|
# Every other variable's cells, tinted. Not decoration: a variable's
|
|
888
916
|
# pairs run away from its name as a V, and at 40 names a reader
|
|
889
917
|
# following one of those arms has nothing to hold on to. The band is
|
|
@@ -899,7 +927,7 @@ def draw_corrplot(ax, **kwargs):
|
|
|
899
927
|
#
|
|
900
928
|
# The union of those variables' cells rather than one band each, so a
|
|
901
929
|
# cell where two bands cross is filled once and the tint stays even.
|
|
902
|
-
shaded = _shaded_variables(n, blocks)
|
|
930
|
+
shaded = _shaded_variables(n, blocks, shaded_positions)
|
|
903
931
|
band = shaded[index_x.astype(int)] | shaded[index_y.astype(int)]
|
|
904
932
|
band &= drawn
|
|
905
933
|
if np.any(band):
|
|
@@ -1091,7 +1119,7 @@ def draw_corrplot(ax, **kwargs):
|
|
|
1091
1119
|
# block above), so a box around each of them would be the same fact drawn
|
|
1092
1120
|
# twice, in the heaviest ink on the figure. `addrect` still decides *what*
|
|
1093
1121
|
# the blocks are; it just stops drawing them.
|
|
1094
|
-
if blocks and not (diamond and stripe
|
|
1122
|
+
if blocks and not (diamond and stripe == "alternate"):
|
|
1095
1123
|
for start, end in blocks:
|
|
1096
1124
|
if diamond:
|
|
1097
1125
|
ax.add_patch(
|
|
@@ -498,7 +498,8 @@
|
|
|
498
498
|
"type": {"type": "enum", "values": ["upper", "lower"], "default": "upper", "forbidden": ["full"]},
|
|
499
499
|
"diag": {"type": "boolean", "default": true},
|
|
500
500
|
"side": {"type": "enum", "values": ["left", "right"], "default": "right"},
|
|
501
|
-
"stripe": {"type": "enum", "values": ["alternate", "none"], "default": "alternate", "false_alias": "none"},
|
|
501
|
+
"stripe": {"type": "enum", "values": ["alternate", "selected", "none"], "default": "alternate", "false_alias": "none"},
|
|
502
|
+
"stripe.variables": {"type": "list_of_strings", "default": null, "requires": {"stripe": "selected"}},
|
|
502
503
|
"order": {"type": "enum", "values": ["original", "AOE", "FPC", "hclust", "alphabet"], "default": "original"},
|
|
503
504
|
"hclust.method": {"type": "enum", "values": ["single", "complete", "average", "weighted", "mcquitty", "median", "centroid", "ward.D", "ward.D2"], "default": "complete"},
|
|
504
505
|
"addrect": {"type": "integer_or_null", "default": null, "requires": {"order": "hclust"}},
|
|
@@ -590,6 +590,47 @@ def _solve_corr_diamond(card, info, style, columns, axes_name):
|
|
|
590
590
|
return geom, solved
|
|
591
591
|
|
|
592
592
|
|
|
593
|
+
def _corr_shaded_positions(style: Mapping, columns, name: str):
|
|
594
|
+
"""`stripe.variables` resolved against the order the figure ended up in.
|
|
595
|
+
|
|
596
|
+
It has to happen here and not at draw time. The renderer sees positions,
|
|
597
|
+
and which position a variable holds is `order`'s answer, settled a moment
|
|
598
|
+
ago -- a name resolved against the *unordered* columns would tint a
|
|
599
|
+
different variable on every reordering and never say so.
|
|
600
|
+
|
|
601
|
+
A name that is not in the matrix is an error rather than a silent miss, for
|
|
602
|
+
the same reason: a tint that quietly did nothing is indistinguishable from
|
|
603
|
+
a tint that was not asked for.
|
|
604
|
+
"""
|
|
605
|
+
stripe = style.get("stripe", "alternate")
|
|
606
|
+
stripe = "none" if stripe is False else str(stripe or "").strip().lower()
|
|
607
|
+
wanted = style.get("stripe.variables")
|
|
608
|
+
if wanted is None:
|
|
609
|
+
return None
|
|
610
|
+
if stripe != "selected":
|
|
611
|
+
raise ValueError(
|
|
612
|
+
"figure '{}' gives corrplot stripe.variables with stripe: {}. The "
|
|
613
|
+
"names are only read by stripe: selected; leaving them here would "
|
|
614
|
+
"draw the other tint and say nothing about them.".format(name, stripe)
|
|
615
|
+
)
|
|
616
|
+
if isinstance(wanted, str) or not isinstance(wanted, (list, tuple, set)):
|
|
617
|
+
raise ValueError(
|
|
618
|
+
"figure '{}' gives corrplot stripe.variables: {!r}. It takes a "
|
|
619
|
+
"list of variable names.".format(name, wanted)
|
|
620
|
+
)
|
|
621
|
+
at = {str(column): position for position, column in enumerate(columns)}
|
|
622
|
+
missing = [str(v) for v in wanted if str(v) not in at]
|
|
623
|
+
if missing:
|
|
624
|
+
raise ValueError(
|
|
625
|
+
"figure '{}' asks corrplot to tint {}, which {} not in the matrix. "
|
|
626
|
+
"The variables drawn are: {}.".format(
|
|
627
|
+
name, ", ".join(missing), "is" if len(missing) == 1 else "are",
|
|
628
|
+
", ".join(str(c) for c in columns),
|
|
629
|
+
)
|
|
630
|
+
)
|
|
631
|
+
return sorted(at[str(v)] for v in wanted)
|
|
632
|
+
|
|
633
|
+
|
|
593
634
|
def _as_corr_bool(value, default: bool = False) -> bool:
|
|
594
635
|
if value is None:
|
|
595
636
|
return default
|
|
@@ -1000,6 +1041,11 @@ def _prebuild_one(core, info: dict, card: Mapping) -> None:
|
|
|
1000
1041
|
# but placed and sized by the solve.
|
|
1001
1042
|
layer["style"]["__corr_number_mm__"] = geom.number_pad_mm
|
|
1002
1043
|
layer["style"]["__corr_number_pt__"] = geom.number_size_pt
|
|
1044
|
+
# `stripe.variables` names variables; the renderer draws positions, and
|
|
1045
|
+
# only the order settled above knows which is which.
|
|
1046
|
+
shaded = _corr_shaded_positions(style, columns, info.get("name", "?"))
|
|
1047
|
+
if shaded is not None:
|
|
1048
|
+
layer["style"]["__corr_shaded__"] = shaded
|
|
1003
1049
|
|
|
1004
1050
|
if blocks:
|
|
1005
1051
|
# The boxes are cuts of the tree the order came from, so they are
|
|
@@ -62,7 +62,7 @@ corrplot:
|
|
|
62
62
|
- "Reserved: only the [corrplot, matrix] or [corrplot, diamond] style card provides its axes (axcorr / axccorr)."
|
|
63
63
|
- "No coordinates needed — x_index / y_index / rho are the transform's own output columns."
|
|
64
64
|
- "style takes R's formals: method (circle|square|ellipse|color|shade|pie|number), type, diag, glyph.scale, outline, addgrid.col, plus the card's own ellipse.scale."
|
|
65
|
-
- "Use [corrplot, matrix] for the square matrix; [corrplot, diamond] keeps one triangle, rotates it 45 degrees, and adds side: left|right (default right, which puts the triangle on the left of the page) plus stripe: alternate|none."
|
|
65
|
+
- "Use [corrplot, matrix] for the square matrix; [corrplot, diamond] keeps one triangle, rotates it 45 degrees, and adds side: left|right (default right, which puts the triangle on the left of the page) plus stripe: alternate|selected|none. stripe: selected takes the variables to tint in stripe.variables, resolved against the solved order; diag: true|false is the self-correlation on the diagonal, on by default."
|
|
66
66
|
- "order (original|AOE|FPC|hclust|alphabet) and addrect are resolved before the figure is built, then written into the transform's `columns`."
|
|
67
67
|
- "sig.level switches on the significance test; unlike R no p.mat is needed, because the table carries n per pair."
|
|
68
68
|
- "The glyph is sized from the solved cell and the coefficient text is back-solved from it, so both survive the 170 mm width clamp."
|
|
@@ -45,7 +45,9 @@ human:
|
|
|
45
45
|
`style: [corrplot, diamond]` picks the other card: the same matrix as
|
|
46
46
|
one triangle turned 45 degrees, names in a plain column of horizontal
|
|
47
47
|
text, each variable's pairs a V rooted at its own name. Same formals,
|
|
48
|
-
plus `side: left | right` (default `right`, the triangle on the left of the page) and `stripe: alternate | none
|
|
48
|
+
plus `side: left | right` (default `right`, the triangle on the left of the page) and `stripe: alternate | selected | none`
|
|
49
|
+
(`selected` names the variables in `stripe.variables`), plus
|
|
50
|
+
`diag: true | false` for the self-correlation on the diagonal.
|
|
49
51
|
- kind: yaml
|
|
50
52
|
title: Minimal figure
|
|
51
53
|
lexer: yaml
|
|
@@ -1328,3 +1328,76 @@ def test_the_tint_is_the_bottom_layer_and_is_one_layer():
|
|
|
1328
1328
|
if a.get_zorder() != pytest.approx(_TINT_ZORDER)
|
|
1329
1329
|
]
|
|
1330
1330
|
assert above and min(above) > _TINT_ZORDER
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
def test_stripe_selected_tints_the_variables_the_author_named():
|
|
1334
|
+
from jarvisplot.Figure.corrplot_runtime import _shaded_variables
|
|
1335
|
+
|
|
1336
|
+
# positions, not names: the renderer never sees a name
|
|
1337
|
+
picked = _shaded_variables(6, blocks=[[0, 2], [3, 5]], selected=[1, 4])
|
|
1338
|
+
assert list(np.flatnonzero(picked)) == [1, 4]
|
|
1339
|
+
# and it wins over the clustering, which is the point -- the tint stops
|
|
1340
|
+
# being the figure's own grouping and becomes the author's
|
|
1341
|
+
assert list(np.flatnonzero(_shaded_variables(6, blocks=[[0, 2], [3, 5]]))) == [0, 1, 2]
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
def test_stripe_variables_are_resolved_against_the_solved_order():
|
|
1345
|
+
# `order` has already moved the names by the time this runs, and only the
|
|
1346
|
+
# order knows where each one ended up. Resolved against the *unordered*
|
|
1347
|
+
# columns the tint would land on a different variable every time the
|
|
1348
|
+
# clustering changed, and never say so.
|
|
1349
|
+
from jarvisplot.core_runtime import _corr_shaded_positions
|
|
1350
|
+
|
|
1351
|
+
ordered = ["c", "a", "d", "b"]
|
|
1352
|
+
style = {"stripe": "selected", "stripe.variables": ["a", "b"]}
|
|
1353
|
+
assert _corr_shaded_positions(style, ordered, "fig") == [1, 3]
|
|
1354
|
+
# sorted, so the renderer gets positions in the order it draws them
|
|
1355
|
+
assert _corr_shaded_positions(
|
|
1356
|
+
{"stripe": "selected", "stripe.variables": ["b", "a"]}, ordered, "fig"
|
|
1357
|
+
) == [1, 3]
|
|
1358
|
+
# nothing asked for, nothing resolved
|
|
1359
|
+
assert _corr_shaded_positions({"stripe": "alternate"}, ordered, "fig") is None
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
def test_a_tint_that_would_quietly_do_nothing_is_refused():
|
|
1363
|
+
# A name not in the matrix, a list given to the wrong mode, and a mode
|
|
1364
|
+
# given no list all have the same failure: a band that says nothing, and
|
|
1365
|
+
# nothing on the page to show it was asked for.
|
|
1366
|
+
from jarvisplot.core_runtime import _corr_shaded_positions
|
|
1367
|
+
|
|
1368
|
+
ordered = ["a", "b", "c"]
|
|
1369
|
+
with pytest.raises(ValueError, match="not in the matrix"):
|
|
1370
|
+
_corr_shaded_positions(
|
|
1371
|
+
{"stripe": "selected", "stripe.variables": ["a", "zz"]}, ordered, "fig"
|
|
1372
|
+
)
|
|
1373
|
+
with pytest.raises(ValueError, match="only read by stripe: selected"):
|
|
1374
|
+
_corr_shaded_positions(
|
|
1375
|
+
{"stripe": "alternate", "stripe.variables": ["a"]}, ordered, "fig"
|
|
1376
|
+
)
|
|
1377
|
+
with pytest.raises(ValueError, match="takes a list"):
|
|
1378
|
+
_corr_shaded_positions(
|
|
1379
|
+
{"stripe": "selected", "stripe.variables": "a"}, ordered, "fig"
|
|
1380
|
+
)
|
|
1381
|
+
# and the renderer refuses the mode without the positions
|
|
1382
|
+
with pytest.raises(ValueError, match="needs stripe.variables"):
|
|
1383
|
+
draw_corrplot(_axes(3), __df__=_long_table(), __corr_layout__="diamond",
|
|
1384
|
+
type="upper", stripe="selected")
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
def test_addrect_draws_its_boxes_again_once_the_tint_is_spoken_for():
|
|
1388
|
+
# The boxes are dropped only because the shading is saying the same thing.
|
|
1389
|
+
# With `selected` it is saying something else, so the clusters need them
|
|
1390
|
+
# back or nothing on the figure says where they are.
|
|
1391
|
+
from matplotlib.patches import Polygon
|
|
1392
|
+
|
|
1393
|
+
def boxes(**corrplot):
|
|
1394
|
+
ax = _axes(6)
|
|
1395
|
+
draw_corrplot(
|
|
1396
|
+
ax, __df__=_long_table(), __corr_layout__="diamond", type="upper",
|
|
1397
|
+
__corr_blocks__=[[0, 1], [2, 2]], __corr_label_mm__=8.0, **corrplot,
|
|
1398
|
+
)
|
|
1399
|
+
return [p for p in ax.patches if isinstance(p, Polygon)]
|
|
1400
|
+
|
|
1401
|
+
assert not boxes(stripe="alternate")
|
|
1402
|
+
assert boxes(stripe="none")
|
|
1403
|
+
assert boxes(stripe="selected", __corr_shaded__=[0])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|