DaSPi 2.3.2__tar.gz → 2.3.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.
- {daspi-2.3.2 → daspi-2.3.3}/PKG-INFO +1 -1
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/plotter.py +111 -33
- {daspi-2.3.2 → daspi-2.3.3}/pyproject.toml +1 -1
- daspi-2.3.3/tests/charts/Formatting_Features_Test_alignments_basic.png +0 -0
- daspi-2.3.3/tests/charts/Formatting_Features_Test_all_alignments.png +0 -0
- daspi-2.3.3/tests/charts/Formatting_Features_Test_angles_basic.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_callable_formatters.png +0 -0
- daspi-2.3.3/tests/charts/Formatting_Features_Test_combined_all_features.png +0 -0
- daspi-2.3.3/tests/charts/Formatting_Features_Test_extreme_angles.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_formatters_basic.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_formatters_scientific.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_multivariate_formatting.png +0 -0
- daspi-2.3.3/tests/charts/Formatting_Features_Test_orientation_mapping.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_percentage_formatter.png +0 -0
- daspi-2.3.3/tests/charts/GaussianKDEContourUnivariate_comparison_with_violin.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_custom_color.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_custom_width.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_joint_chart_mixed_plots.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_multivariate_chart_facets.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_resolution_high.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_horizontal.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fade.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fill.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_with_hue.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_bar_stacking.png +0 -0
- daspi-2.3.3/tests/charts/JointChart_kdes_kde-mean.png +0 -0
- daspi-2.3.3/tests/charts/JointChart_kdes_mixed-kde.png +0 -0
- daspi-2.3.3/tests/charts/JointChart_pareto_marked.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_probability_dists-prob.png +0 -0
- daspi-2.3.3/tests/charts/JointChart_regression_kde.png +0 -0
- daspi-2.3.3/tests/charts/MultivariateChart_full-stripes.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/MultivariateChart_full.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_bivariate-univariate-charts_contour-mean-test.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_bivariate-univariate-charts_mean-test.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_simple.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_smoothed.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_user.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_gage_study_model_basic.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_pair_comparison_charts_basic.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_parameter_relevance_charts_basic.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_process-capabity-analysis-charts_hue.png +0 -0
- daspi-2.3.3/tests/charts/Precasts_residual_charts_basic.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_KDE-cumulative_multiple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_KDE-cumulative_simple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_KDE_multiple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_KDE_ridge.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_KDE_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_beeswarm_multiple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_beeswarm_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_blandaltman_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_blandaltman_user.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_fill.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_multiple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_simple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_categorical-float-features_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_mean-test.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_sem.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_std-test.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_var-test.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_fitted-density_cdf-multiple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_fitted-density_pdf-data.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_fitted-density_pdf-norm.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_jitter_multiple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_jitter_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_line_hue.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_line_hue_size.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_pareto_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_pareto_transposed.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_quantiles_multiple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_quantiles_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_full.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue-shape.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue-size.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_shape.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes-65ci.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes-99ci.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_size-shape.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_size.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_violin_mono.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_violin_multiple.png +0 -0
- daspi-2.3.3/tests/charts/SingleChart_violin_simple.png +0 -0
- daspi-2.3.3/tests/charts/_debug_kde_bottom_crop.png +0 -0
- daspi-2.3.3/tests/charts/_debug_violin_bottom_crop.png +0 -0
- daspi-2.3.3/tests/charts/_debug_violin_top_crop.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_alignments_basic.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_all_alignments.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_angles_basic.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_combined_all_features.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_extreme_angles.png +0 -0
- daspi-2.3.2/tests/charts/Formatting_Features_Test_orientation_mapping.png +0 -0
- daspi-2.3.2/tests/charts/GaussianKDEContourUnivariate_comparison_with_violin.png +0 -0
- daspi-2.3.2/tests/charts/JointChart_kdes_kde-mean.png +0 -0
- daspi-2.3.2/tests/charts/JointChart_kdes_mixed-kde.png +0 -0
- daspi-2.3.2/tests/charts/JointChart_pareto_marked.png +0 -0
- daspi-2.3.2/tests/charts/JointChart_regression_kde.png +0 -0
- daspi-2.3.2/tests/charts/MultivariateChart_full-stripes.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_simple.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_smoothed.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_user.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_gage_study_model_basic.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_pair_comparison_charts_basic.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_parameter_relevance_charts_basic.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_process-capabity-analysis-charts_hue.png +0 -0
- daspi-2.3.2/tests/charts/Precasts_residual_charts_basic.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_KDE-cumulative_multiple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_KDE-cumulative_simple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_KDE_multiple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_KDE_ridge.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_KDE_simple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_categorical-float-features_simple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_fitted-density_cdf-multiple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_fitted-density_pdf-data.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_fitted-density_pdf-norm.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_quantiles_multiple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_quantiles_simple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes-65ci.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes-99ci.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_violin_mono.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_violin_multiple.png +0 -0
- daspi-2.3.2/tests/charts/SingleChart_violin_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/LICENSE +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/README.md +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/_typing.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/_version.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/convert.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/model.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/tables.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/config.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/constants.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/ancova.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova2.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova2_unbalanced.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova3.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova3_unbalanced.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/carpet_full-factorial.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/covariate.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/drop_card.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/eeprom_full-factorial.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/eeprom_partial-factorial.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_adjustment.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_layer_thickness.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_spc.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/iris.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/mpg.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/painkillers-dissolution.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/partial_factorial.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/penguins.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/process_capability.mpx +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/salt_sticks.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/shoe-sole.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/tips.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/doe/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/doe/build.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/appearance.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/chart.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/classify.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/facets.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/precast.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/daspi-dark.mplstyle +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/daspi.mplstyle +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/ggplot2.mplstyle +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/seaborn.mplstyle +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/requirements.txt +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/confidence.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/estimation.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/hypothesis.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/montecarlo.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/daspi/strings.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/ANOVA_SS_Fehler.mpx +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/ANOVA_SS_Fehler.mpx.bak +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/GageRnR.mpx +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/GageRnR.mpx.bak +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/__init__.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/anova_convert_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/anova_model_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/anova_tables_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_probability_norm-prob.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_gage_rnr_model_basic.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_transposed.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine-contour_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_mono.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_multiple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_simple.png +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/config_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/anova3_result.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/dists_10-samples.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/dists_25-samples.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/gage_rnr.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/gage_study.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/generate_dists.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/grnr_d-optimal.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/data/uncertainties.csv +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/doe_build_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_appearance_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_chart_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_classify_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_facets_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_plotter_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_templates_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_visual_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/r2_pred.mpx +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/r2_pred.mpx.bak +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_confidence_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_estimation_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_hypothesis_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_montecarlo_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/strings_test.py +0 -0
- {daspi-2.3.2 → daspi-2.3.3}/tests/test_full_factorial_design_builder.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: DaSPi
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3
|
|
4
4
|
Summary: Visualize and analyze your data with DaSPi. This package is designed for users who want to find relevant influencing factors in processes and validate improvements.
|
|
5
5
|
Author-Email: Reto Jäggli <reto@jaeggli.email>
|
|
6
6
|
License: MIT
|
|
@@ -264,6 +264,21 @@ class SpreadOpacity:
|
|
|
264
264
|
alphas = ((i + 1) * COLOR.FILL_ALPHA / n for i in range(n))
|
|
265
265
|
return {q: a for q, a in zip(self.agreements[::-1], alphas)}
|
|
266
266
|
|
|
267
|
+
@staticmethod
|
|
268
|
+
def _unique_subgroups(column: Series) -> list[float | int]:
|
|
269
|
+
"""Get the distinct subgroup labels referenced in `column`,
|
|
270
|
+
in first-seen order. Entries are either plain labels or
|
|
271
|
+
`(own, next)` tuples produced by `subgroup_values` with
|
|
272
|
+
`sharp_edges=True`, so a plain `.unique()` on `column` would
|
|
273
|
+
not work: it would return the tuples themselves instead of
|
|
274
|
+
the individual labels they contain."""
|
|
275
|
+
seen: list[float | int] = []
|
|
276
|
+
for label in column:
|
|
277
|
+
for value in (label if isinstance(label, tuple) else (label,)):
|
|
278
|
+
if value not in seen:
|
|
279
|
+
seen.append(value)
|
|
280
|
+
return seen
|
|
281
|
+
|
|
267
282
|
def _kw_fill(
|
|
268
283
|
self,
|
|
269
284
|
color: str | tuple,
|
|
@@ -290,14 +305,28 @@ class SpreadOpacity:
|
|
|
290
305
|
dict[str, Any]
|
|
291
306
|
A dictionary containing keyword arguments for the fill
|
|
292
307
|
operation, including color, alpha (transparency), edgecolor,
|
|
293
|
-
linewidth, where, and interpolate.
|
|
308
|
+
linewidth, where, and interpolate.
|
|
309
|
+
|
|
310
|
+
Notes
|
|
311
|
+
-----
|
|
312
|
+
- `edgecolor` is forced to 'none' because the mplstyle sheets
|
|
313
|
+
set a default `patch.edgecolor`, which would otherwise stroke
|
|
314
|
+
each separate quantile patch and leave a visible seam where
|
|
315
|
+
adjacent patches meet.
|
|
316
|
+
- A boundary sample may belong to two subgroups at once, stored
|
|
317
|
+
as a `(own, next)` tuple by `subgroup_values` (see
|
|
318
|
+
`sharp_edges`). `where` treats such a sample as a match for
|
|
319
|
+
both of its labels, so the neighboring patches share that
|
|
320
|
+
exact point and meet without a gap or an overlapping area."""
|
|
294
321
|
alpha = self._alphas.get(agreement, COLOR.FILL_ALPHA)
|
|
322
|
+
labels = data[PLOTTER.SUBGROUP]
|
|
295
323
|
kw = {
|
|
296
324
|
'color': color,
|
|
297
325
|
'alpha': alpha,
|
|
298
|
-
'edgecolor':
|
|
299
|
-
'
|
|
300
|
-
|
|
326
|
+
'edgecolor': 'none',
|
|
327
|
+
'where': labels.apply(
|
|
328
|
+
lambda label: agreement in label
|
|
329
|
+
if isinstance(label, tuple) else label == agreement),
|
|
301
330
|
'interpolate': False}
|
|
302
331
|
return kw
|
|
303
332
|
|
|
@@ -338,8 +367,9 @@ class SpreadOpacity:
|
|
|
338
367
|
def subgroup_values(
|
|
339
368
|
self,
|
|
340
369
|
sequence: NDArray | list[float] | int,
|
|
341
|
-
quantiles: list[float]
|
|
342
|
-
|
|
370
|
+
quantiles: list[float],
|
|
371
|
+
sharp_edges: bool = False
|
|
372
|
+
) -> list[float | int | tuple[float | int, ...]]:
|
|
343
373
|
"""Generate a list of subgroup values based on the agreements.
|
|
344
374
|
|
|
345
375
|
This method creates a list of subgroup values derived from the
|
|
@@ -358,12 +388,25 @@ class SpreadOpacity:
|
|
|
358
388
|
quantiles : list[float]
|
|
359
389
|
The list of quantiles used to determine the subgroup
|
|
360
390
|
boundaries.
|
|
391
|
+
sharp_edges : bool, optional
|
|
392
|
+
If True, the last sample of each subgroup run is turned
|
|
393
|
+
into a `(own, next)` tuple instead of a plain label, so it
|
|
394
|
+
also belongs to the following subgroup. `_kw_fill` then
|
|
395
|
+
includes that same sample in both neighboring `where`
|
|
396
|
+
masks, so the two `fill_between`/`fill_betweenx` patches
|
|
397
|
+
share one exact point and meet without a gap or an
|
|
398
|
+
overlapping area. Needed for continuous curves (e.g.
|
|
399
|
+
`DensityCurve`), whose quantile bands are carved out of
|
|
400
|
+
one shared curve; not for discrete areas (e.g.
|
|
401
|
+
`QuantileBoxes`), whose rows already have their own
|
|
402
|
+
explicit bounds. Default is False.
|
|
361
403
|
|
|
362
404
|
Returns
|
|
363
405
|
-------
|
|
364
|
-
list[float | int]:
|
|
406
|
+
list[float | int | tuple[float | int, ...]]:
|
|
365
407
|
A list of subgroup values, which can include both floats
|
|
366
|
-
and integers.
|
|
408
|
+
and integers. If `sharp_edges` is True, boundary samples
|
|
409
|
+
are `(own, next)` tuples instead of plain labels.
|
|
367
410
|
"""
|
|
368
411
|
subgroup = []
|
|
369
412
|
names = self.agreements[::-1] + self.agreements[1:]
|
|
@@ -389,7 +432,13 @@ class SpreadOpacity:
|
|
|
389
432
|
subgroup = subgroup[:difference]
|
|
390
433
|
else:
|
|
391
434
|
subgroup.extend([names[-1]] * difference)
|
|
392
|
-
|
|
435
|
+
|
|
436
|
+
if not sharp_edges:
|
|
437
|
+
return subgroup
|
|
438
|
+
return [
|
|
439
|
+
name if i == len(subgroup) - 1 or name == subgroup[i + 1]
|
|
440
|
+
else (name, subgroup[i + 1])
|
|
441
|
+
for i, name in enumerate(subgroup)]
|
|
393
442
|
|
|
394
443
|
|
|
395
444
|
class Plotter(ABC):
|
|
@@ -4345,7 +4394,10 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4345
4394
|
If margin is 0, The two ends of the estimated density curve then
|
|
4346
4395
|
show the minimum and maximum value. Default is 0.
|
|
4347
4396
|
fill : bool, optional
|
|
4348
|
-
Flag whether to fill in the curves, by default True
|
|
4397
|
+
Flag whether to fill in the curves, by default True. Has no
|
|
4398
|
+
effect if `cumulative` is True: the area under a CDF has no
|
|
4399
|
+
meaningful interpretation as probability mass (unlike a PDF),
|
|
4400
|
+
so it is never filled.
|
|
4349
4401
|
agreements : tuple[float, ...] or tuple[int, ...], optional
|
|
4350
4402
|
Specifies the tolerated process variation for calculating
|
|
4351
4403
|
quantiles. These quantiles are used to represent the filled area
|
|
@@ -4429,6 +4481,11 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4429
4481
|
n_points: int
|
|
4430
4482
|
"""Number of points that have the density estimation and its
|
|
4431
4483
|
sequence."""
|
|
4484
|
+
_draw_lower_line_: bool = False
|
|
4485
|
+
"""Whether the lower estimation is also drawn as a line. The lower
|
|
4486
|
+
estimation is a flat line at the feature base for most subclasses,
|
|
4487
|
+
so only double-sided curves (e.g. `Violin`) need to set this to
|
|
4488
|
+
True."""
|
|
4432
4489
|
|
|
4433
4490
|
def __init__(
|
|
4434
4491
|
self,
|
|
@@ -4483,7 +4540,7 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4483
4540
|
def kw_default(self) -> dict[str, Any]:
|
|
4484
4541
|
"""Default keyword arguments for plotting (read-only)"""
|
|
4485
4542
|
kwds = {
|
|
4486
|
-
'color': COLOR.DARKEN if self.fill else self.color,}
|
|
4543
|
+
'color': COLOR.DARKEN if self.fill and not self.cumulative else self.color,}
|
|
4487
4544
|
return kwds
|
|
4488
4545
|
|
|
4489
4546
|
@property
|
|
@@ -4498,8 +4555,12 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4498
4555
|
|
|
4499
4556
|
@property
|
|
4500
4557
|
def highlight_quantiles(self) -> bool:
|
|
4501
|
-
"""Flag indicating whether the quantiles should be highlighted.
|
|
4502
|
-
|
|
4558
|
+
"""Flag indicating whether the quantiles should be highlighted.
|
|
4559
|
+
Always False for `cumulative` curves: the area under a CDF has
|
|
4560
|
+
no meaningful interpretation as probability mass (unlike a
|
|
4561
|
+
PDF), so quantile fill bands would shade a large area for a
|
|
4562
|
+
small probability range and be visually misleading."""
|
|
4563
|
+
return bool(self.agreements) and self.fill and not self.cumulative
|
|
4503
4564
|
|
|
4504
4565
|
def estimate(
|
|
4505
4566
|
self,
|
|
@@ -4620,7 +4681,7 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4620
4681
|
ones = np.ones(len(sequence))
|
|
4621
4682
|
if self.highlight_quantiles and len(sequence) > 1:
|
|
4622
4683
|
quantiles = self.quantiles(target_data)
|
|
4623
|
-
subgroups = self.subgroup_values(sequence, quantiles)
|
|
4684
|
+
subgroups = self.subgroup_values(sequence, quantiles, sharp_edges=True)
|
|
4624
4685
|
else:
|
|
4625
4686
|
subgroups = 0 * ones
|
|
4626
4687
|
|
|
@@ -4631,22 +4692,18 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4631
4692
|
PLOTTER.F_BASE_NAME: feature_data * ones})
|
|
4632
4693
|
return data
|
|
4633
4694
|
|
|
4695
|
+
@staticmethod
|
|
4634
4696
|
def _get_lower_estimation_(
|
|
4635
|
-
self,
|
|
4636
4697
|
f_base: float | int, # noqa: PYI041
|
|
4637
4698
|
estim_upp: Series
|
|
4638
4699
|
) -> Series:
|
|
4639
|
-
"""Get the lower estimation of the
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
feature base."""
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
estim_low = pd.Series(
|
|
4647
|
-
f_base * np.ones(len(estim_upp)),
|
|
4648
|
-
index=estim_upp.index)
|
|
4649
|
-
return estim_low
|
|
4700
|
+
"""Get the lower estimation of the density curve as a straight
|
|
4701
|
+
line at the location of the feature base. Subclasses whose
|
|
4702
|
+
curve is double-sided (e.g. `Violin`) override this to mirror
|
|
4703
|
+
`estim_upp` at the feature base instead."""
|
|
4704
|
+
return pd.Series(
|
|
4705
|
+
f_base * np.ones(len(estim_upp)),
|
|
4706
|
+
index=estim_upp.index)
|
|
4650
4707
|
|
|
4651
4708
|
def __call__(
|
|
4652
4709
|
self,
|
|
@@ -4675,20 +4732,28 @@ class DensityCurve(SpreadOpacity, TransformPlotter):
|
|
|
4675
4732
|
estim_low = self._get_lower_estimation_(f_base, estim_upp) # pyright: ignore[reportArgumentType]
|
|
4676
4733
|
sequence = group[self.target]
|
|
4677
4734
|
|
|
4678
|
-
for agreement in group[PLOTTER.SUBGROUP]
|
|
4735
|
+
for agreement in self._unique_subgroups(group[PLOTTER.SUBGROUP]):
|
|
4679
4736
|
_kwds = self._kw_fill(self.color, agreement, group) | kwds
|
|
4680
4737
|
if self.target_on_y:
|
|
4681
|
-
if self.fill:
|
|
4738
|
+
if self.fill and not self.cumulative:
|
|
4682
4739
|
self.ax.fill_betweenx(
|
|
4683
4740
|
sequence, estim_low, estim_upp, **_kwds)
|
|
4684
|
-
self.
|
|
4685
|
-
|
|
4741
|
+
if self._draw_lower_line_:
|
|
4742
|
+
self.ax.plot(
|
|
4743
|
+
estim_upp, sequence, estim_low, sequence,
|
|
4744
|
+
**_kw_line)
|
|
4745
|
+
else:
|
|
4746
|
+
self.ax.plot(estim_upp, sequence, **_kw_line)
|
|
4686
4747
|
else:
|
|
4687
|
-
if self.fill:
|
|
4748
|
+
if self.fill and not self.cumulative:
|
|
4688
4749
|
self.ax.fill_between(
|
|
4689
4750
|
sequence, estim_low, estim_upp, **_kwds)
|
|
4690
|
-
self.
|
|
4691
|
-
|
|
4751
|
+
if self._draw_lower_line_:
|
|
4752
|
+
self.ax.plot(
|
|
4753
|
+
sequence, estim_upp, sequence, estim_low,
|
|
4754
|
+
**_kw_line)
|
|
4755
|
+
else:
|
|
4756
|
+
self.ax.plot(sequence, estim_upp, **_kw_line)
|
|
4692
4757
|
|
|
4693
4758
|
|
|
4694
4759
|
class GaussianKDE(DensityCurve):
|
|
@@ -5505,6 +5570,19 @@ class Violin(GaussianKDE):
|
|
|
5505
5570
|
kwds = {'color': self.color, 'alpha': COLOR.FILL_ALPHA}
|
|
5506
5571
|
return kwds
|
|
5507
5572
|
|
|
5573
|
+
_draw_lower_line_: bool = True
|
|
5574
|
+
"""The violin is double-sided, so the lower estimation is also
|
|
5575
|
+
drawn as a line."""
|
|
5576
|
+
|
|
5577
|
+
@staticmethod
|
|
5578
|
+
def _get_lower_estimation_(
|
|
5579
|
+
f_base: float | int, # noqa: PYI041
|
|
5580
|
+
estim_upp: Series
|
|
5581
|
+
) -> Series:
|
|
5582
|
+
"""Mirror the upper kernel density estimate at the feature
|
|
5583
|
+
base to get the lower estimation for the double-sided violin."""
|
|
5584
|
+
return 2 * f_base - estim_upp
|
|
5585
|
+
|
|
5508
5586
|
|
|
5509
5587
|
class FittedDensity(DensityCurve):
|
|
5510
5588
|
"""Class for plotting a fitted probability density function (PDF)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "DaSPi"
|
|
3
|
-
version = "2.3.
|
|
3
|
+
version = "2.3.3"
|
|
4
4
|
description = "Visualize and analyze your data with DaSPi. This package is designed for users who want to find relevant influencing factors in processes and validate improvements."
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Reto Jäggli", email = "reto@jaeggli.email" },
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index f70b112..27269d4 100644
|
|
|
Binary file
|
|
Binary file
|
|
index bf01011..2390f28 100644
|
|
|
Binary file
|
|
index 6966fb5..e8dc5a5 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_multivariate_formatting.png
RENAMED
|
index 2031dce..09aa431 100644
|
|
|
Binary file
|
|
index 10ce019..8ddafe5 100644
|
|
|
Binary file
|
|
index 7731764..72006fb 100644
|
|
|
Binary file
|
|
index e670672..0a30291 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_joint_chart_mixed_plots.png
RENAMED
|
index 4ef22c7..0dcf2b7 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_multivariate_chart_facets.png
RENAMED
|
index 82b0800..9bc66b2 100644
|
|
|
Binary file
|
|
index 32cf254..e5f23b1 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_horizontal.png
RENAMED
|
index 5ce17c5..b9c46a1 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fade.png
RENAMED
|
index 49d6468..7602eb6 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fill.png
RENAMED
|
index 07b1ccd..c719bb4 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_simple.png
RENAMED
|
index 60b59d9..a521852 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_with_hue.png
RENAMED
|
index 52a5b42..c2821e5 100644
|
|
|
Binary file
|
|
index ff3be98..c434a32 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index fb99e84..5a39f6d 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index f2a045f..f4f6571 100644
|
|
|
Binary file
|
{daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_bivariate-univariate-charts_contour-mean-test.png
RENAMED
|
index 087e360..35f47b9 100644
|
|
|
Binary file
|
|
index b811757..e24089c 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index fe9eddd..84b3cc5 100644
|
|
|
Binary file
|
|
index 3aca114..6fdb924 100644
|
|
|
Binary file
|
|
index 83983d5..91d7349 100644
|
|
|
Binary file
|
|
index f891908..f6e2fe7 100644
|
|
|
Binary file
|
|
index 91ff6b6..9990d0c 100644
|
|
|
Binary file
|
|
index 2fc81aa..52e05a2 100644
|
|
|
Binary file
|
|
index 50485d5..6900946 100644
|
|
|
Binary file
|
|
index c46a2e6..40bc3df 100644
|
|
|
Binary file
|
|
index a4f7c67..16d7062 100644
|
|
|
Binary file
|
|
index 0a435ff..a3333cb 100644
|
|
|
Binary file
|
|
index 3734c7e..cd4bcd8 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index 40abc60..462d419 100644
|
|
|
Binary file
|
|
index ec425f2..ddc035e 100644
|
|
|
Binary file
|
|
index 72015ff..1f1fd12 100644
|
|
|
Binary file
|
|
index fe002b0..b3bd587 100644
|
|
|
Binary file
|
|
index 322fce9..4b0166f 100644
|
|
|
Binary file
|
|
index cc1b51c..2bd6e86 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index 88ed211..e5302f1 100644
|
|
|
Binary file
|
|
index 467b925..0039763 100644
|
|
|
Binary file
|
|
index 7e228a0..58eb221 100644
|
|
|
Binary file
|
|
index 86ed2ae..a45b9ed 100644
|
|
|
Binary file
|
|
index 4c7d3aa..2269e4e 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
index aa2d371..abb9e96 100644
|
|
|
Binary file
|
|
index 49cd6e6..74a9aee 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
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
|