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.
Files changed (219) hide show
  1. {daspi-2.3.2 → daspi-2.3.3}/PKG-INFO +1 -1
  2. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/plotter.py +111 -33
  3. {daspi-2.3.2 → daspi-2.3.3}/pyproject.toml +1 -1
  4. daspi-2.3.3/tests/charts/Formatting_Features_Test_alignments_basic.png +0 -0
  5. daspi-2.3.3/tests/charts/Formatting_Features_Test_all_alignments.png +0 -0
  6. daspi-2.3.3/tests/charts/Formatting_Features_Test_angles_basic.png +0 -0
  7. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_callable_formatters.png +0 -0
  8. daspi-2.3.3/tests/charts/Formatting_Features_Test_combined_all_features.png +0 -0
  9. daspi-2.3.3/tests/charts/Formatting_Features_Test_extreme_angles.png +0 -0
  10. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_formatters_basic.png +0 -0
  11. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_formatters_scientific.png +0 -0
  12. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_multivariate_formatting.png +0 -0
  13. daspi-2.3.3/tests/charts/Formatting_Features_Test_orientation_mapping.png +0 -0
  14. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Formatting_Features_Test_percentage_formatter.png +0 -0
  15. daspi-2.3.3/tests/charts/GaussianKDEContourUnivariate_comparison_with_violin.png +0 -0
  16. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_custom_color.png +0 -0
  17. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_custom_width.png +0 -0
  18. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_joint_chart_mixed_plots.png +0 -0
  19. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_multivariate_chart_facets.png +0 -0
  20. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_resolution_high.png +0 -0
  21. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_horizontal.png +0 -0
  22. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fade.png +0 -0
  23. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fill.png +0 -0
  24. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_simple.png +0 -0
  25. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/GaussianKDEContourUnivariate_single_chart_with_hue.png +0 -0
  26. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_bar_stacking.png +0 -0
  27. daspi-2.3.3/tests/charts/JointChart_kdes_kde-mean.png +0 -0
  28. daspi-2.3.3/tests/charts/JointChart_kdes_mixed-kde.png +0 -0
  29. daspi-2.3.3/tests/charts/JointChart_pareto_marked.png +0 -0
  30. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_probability_dists-prob.png +0 -0
  31. daspi-2.3.3/tests/charts/JointChart_regression_kde.png +0 -0
  32. daspi-2.3.3/tests/charts/MultivariateChart_full-stripes.png +0 -0
  33. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/MultivariateChart_full.png +0 -0
  34. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_bivariate-univariate-charts_contour-mean-test.png +0 -0
  35. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_bivariate-univariate-charts_mean-test.png +0 -0
  36. daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_simple.png +0 -0
  37. daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_smoothed.png +0 -0
  38. daspi-2.3.3/tests/charts/Precasts_bivariate-univariate-charts_user.png +0 -0
  39. daspi-2.3.3/tests/charts/Precasts_gage_study_model_basic.png +0 -0
  40. daspi-2.3.3/tests/charts/Precasts_pair_comparison_charts_basic.png +0 -0
  41. daspi-2.3.3/tests/charts/Precasts_parameter_relevance_charts_basic.png +0 -0
  42. daspi-2.3.3/tests/charts/Precasts_process-capabity-analysis-charts_hue.png +0 -0
  43. daspi-2.3.3/tests/charts/Precasts_residual_charts_basic.png +0 -0
  44. daspi-2.3.3/tests/charts/SingleChart_KDE-cumulative_multiple.png +0 -0
  45. daspi-2.3.3/tests/charts/SingleChart_KDE-cumulative_simple.png +0 -0
  46. daspi-2.3.3/tests/charts/SingleChart_KDE_multiple.png +0 -0
  47. daspi-2.3.3/tests/charts/SingleChart_KDE_ridge.png +0 -0
  48. daspi-2.3.3/tests/charts/SingleChart_KDE_simple.png +0 -0
  49. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_beeswarm_multiple.png +0 -0
  50. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_beeswarm_simple.png +0 -0
  51. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_blandaltman_simple.png +0 -0
  52. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_blandaltman_user.png +0 -0
  53. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_fill.png +0 -0
  54. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_multiple.png +0 -0
  55. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_box_simple.png +0 -0
  56. daspi-2.3.3/tests/charts/SingleChart_categorical-float-features_simple.png +0 -0
  57. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_mean-test.png +0 -0
  58. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_sem.png +0 -0
  59. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_std-test.png +0 -0
  60. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_errorbar_var-test.png +0 -0
  61. daspi-2.3.3/tests/charts/SingleChart_fitted-density_cdf-multiple.png +0 -0
  62. daspi-2.3.3/tests/charts/SingleChart_fitted-density_pdf-data.png +0 -0
  63. daspi-2.3.3/tests/charts/SingleChart_fitted-density_pdf-norm.png +0 -0
  64. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_jitter_multiple.png +0 -0
  65. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_jitter_simple.png +0 -0
  66. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_line_hue.png +0 -0
  67. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_line_hue_size.png +0 -0
  68. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_pareto_simple.png +0 -0
  69. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_pareto_transposed.png +0 -0
  70. daspi-2.3.3/tests/charts/SingleChart_quantiles_multiple.png +0 -0
  71. daspi-2.3.3/tests/charts/SingleChart_quantiles_simple.png +0 -0
  72. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_full.png +0 -0
  73. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue-shape.png +0 -0
  74. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue-size.png +0 -0
  75. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_hue.png +0 -0
  76. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_shape.png +0 -0
  77. daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes-65ci.png +0 -0
  78. daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes-99ci.png +0 -0
  79. daspi-2.3.3/tests/charts/SingleChart_scatter_simple-stripes.png +0 -0
  80. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_size-shape.png +0 -0
  81. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_size.png +0 -0
  82. daspi-2.3.3/tests/charts/SingleChart_violin_mono.png +0 -0
  83. daspi-2.3.3/tests/charts/SingleChart_violin_multiple.png +0 -0
  84. daspi-2.3.3/tests/charts/SingleChart_violin_simple.png +0 -0
  85. daspi-2.3.3/tests/charts/_debug_kde_bottom_crop.png +0 -0
  86. daspi-2.3.3/tests/charts/_debug_violin_bottom_crop.png +0 -0
  87. daspi-2.3.3/tests/charts/_debug_violin_top_crop.png +0 -0
  88. daspi-2.3.2/tests/charts/Formatting_Features_Test_alignments_basic.png +0 -0
  89. daspi-2.3.2/tests/charts/Formatting_Features_Test_all_alignments.png +0 -0
  90. daspi-2.3.2/tests/charts/Formatting_Features_Test_angles_basic.png +0 -0
  91. daspi-2.3.2/tests/charts/Formatting_Features_Test_combined_all_features.png +0 -0
  92. daspi-2.3.2/tests/charts/Formatting_Features_Test_extreme_angles.png +0 -0
  93. daspi-2.3.2/tests/charts/Formatting_Features_Test_orientation_mapping.png +0 -0
  94. daspi-2.3.2/tests/charts/GaussianKDEContourUnivariate_comparison_with_violin.png +0 -0
  95. daspi-2.3.2/tests/charts/JointChart_kdes_kde-mean.png +0 -0
  96. daspi-2.3.2/tests/charts/JointChart_kdes_mixed-kde.png +0 -0
  97. daspi-2.3.2/tests/charts/JointChart_pareto_marked.png +0 -0
  98. daspi-2.3.2/tests/charts/JointChart_regression_kde.png +0 -0
  99. daspi-2.3.2/tests/charts/MultivariateChart_full-stripes.png +0 -0
  100. daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_simple.png +0 -0
  101. daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_smoothed.png +0 -0
  102. daspi-2.3.2/tests/charts/Precasts_bivariate-univariate-charts_user.png +0 -0
  103. daspi-2.3.2/tests/charts/Precasts_gage_study_model_basic.png +0 -0
  104. daspi-2.3.2/tests/charts/Precasts_pair_comparison_charts_basic.png +0 -0
  105. daspi-2.3.2/tests/charts/Precasts_parameter_relevance_charts_basic.png +0 -0
  106. daspi-2.3.2/tests/charts/Precasts_process-capabity-analysis-charts_hue.png +0 -0
  107. daspi-2.3.2/tests/charts/Precasts_residual_charts_basic.png +0 -0
  108. daspi-2.3.2/tests/charts/SingleChart_KDE-cumulative_multiple.png +0 -0
  109. daspi-2.3.2/tests/charts/SingleChart_KDE-cumulative_simple.png +0 -0
  110. daspi-2.3.2/tests/charts/SingleChart_KDE_multiple.png +0 -0
  111. daspi-2.3.2/tests/charts/SingleChart_KDE_ridge.png +0 -0
  112. daspi-2.3.2/tests/charts/SingleChart_KDE_simple.png +0 -0
  113. daspi-2.3.2/tests/charts/SingleChart_categorical-float-features_simple.png +0 -0
  114. daspi-2.3.2/tests/charts/SingleChart_fitted-density_cdf-multiple.png +0 -0
  115. daspi-2.3.2/tests/charts/SingleChart_fitted-density_pdf-data.png +0 -0
  116. daspi-2.3.2/tests/charts/SingleChart_fitted-density_pdf-norm.png +0 -0
  117. daspi-2.3.2/tests/charts/SingleChart_quantiles_multiple.png +0 -0
  118. daspi-2.3.2/tests/charts/SingleChart_quantiles_simple.png +0 -0
  119. daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes-65ci.png +0 -0
  120. daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes-99ci.png +0 -0
  121. daspi-2.3.2/tests/charts/SingleChart_scatter_simple-stripes.png +0 -0
  122. daspi-2.3.2/tests/charts/SingleChart_violin_mono.png +0 -0
  123. daspi-2.3.2/tests/charts/SingleChart_violin_multiple.png +0 -0
  124. daspi-2.3.2/tests/charts/SingleChart_violin_simple.png +0 -0
  125. {daspi-2.3.2 → daspi-2.3.3}/LICENSE +0 -0
  126. {daspi-2.3.2 → daspi-2.3.3}/README.md +0 -0
  127. {daspi-2.3.2 → daspi-2.3.3}/daspi/__init__.py +0 -0
  128. {daspi-2.3.2 → daspi-2.3.3}/daspi/_typing.py +0 -0
  129. {daspi-2.3.2 → daspi-2.3.3}/daspi/_version.py +0 -0
  130. {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/__init__.py +0 -0
  131. {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/convert.py +0 -0
  132. {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/model.py +0 -0
  133. {daspi-2.3.2 → daspi-2.3.3}/daspi/anova/tables.py +0 -0
  134. {daspi-2.3.2 → daspi-2.3.3}/daspi/config.py +0 -0
  135. {daspi-2.3.2 → daspi-2.3.3}/daspi/constants.py +0 -0
  136. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/__init__.py +0 -0
  137. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/ancova.csv +0 -0
  138. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova.csv +0 -0
  139. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova2.csv +0 -0
  140. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova2_unbalanced.csv +0 -0
  141. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova3.csv +0 -0
  142. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/anova3_unbalanced.csv +0 -0
  143. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/carpet_full-factorial.csv +0 -0
  144. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/covariate.csv +0 -0
  145. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/drop_card.csv +0 -0
  146. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/eeprom_full-factorial.csv +0 -0
  147. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/eeprom_partial-factorial.csv +0 -0
  148. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_adjustment.csv +0 -0
  149. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_layer_thickness.csv +0 -0
  150. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/grnr_spc.csv +0 -0
  151. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/iris.csv +0 -0
  152. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/mpg.csv +0 -0
  153. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/painkillers-dissolution.csv +0 -0
  154. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/partial_factorial.csv +0 -0
  155. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/penguins.csv +0 -0
  156. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/process_capability.mpx +0 -0
  157. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/salt_sticks.csv +0 -0
  158. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/shoe-sole.csv +0 -0
  159. {daspi-2.3.2 → daspi-2.3.3}/daspi/datasets/tips.csv +0 -0
  160. {daspi-2.3.2 → daspi-2.3.3}/daspi/doe/__init__.py +0 -0
  161. {daspi-2.3.2 → daspi-2.3.3}/daspi/doe/build.py +0 -0
  162. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/__init__.py +0 -0
  163. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/appearance.py +0 -0
  164. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/chart.py +0 -0
  165. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/classify.py +0 -0
  166. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/facets.py +0 -0
  167. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/precast.py +0 -0
  168. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/daspi-dark.mplstyle +0 -0
  169. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/daspi.mplstyle +0 -0
  170. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/ggplot2.mplstyle +0 -0
  171. {daspi-2.3.2 → daspi-2.3.3}/daspi/plotlib/styles/seaborn.mplstyle +0 -0
  172. {daspi-2.3.2 → daspi-2.3.3}/daspi/requirements.txt +0 -0
  173. {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/__init__.py +0 -0
  174. {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/confidence.py +0 -0
  175. {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/estimation.py +0 -0
  176. {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/hypothesis.py +0 -0
  177. {daspi-2.3.2 → daspi-2.3.3}/daspi/statistics/montecarlo.py +0 -0
  178. {daspi-2.3.2 → daspi-2.3.3}/daspi/strings.py +0 -0
  179. {daspi-2.3.2 → daspi-2.3.3}/tests/ANOVA_SS_Fehler.mpx +0 -0
  180. {daspi-2.3.2 → daspi-2.3.3}/tests/ANOVA_SS_Fehler.mpx.bak +0 -0
  181. {daspi-2.3.2 → daspi-2.3.3}/tests/GageRnR.mpx +0 -0
  182. {daspi-2.3.2 → daspi-2.3.3}/tests/GageRnR.mpx.bak +0 -0
  183. {daspi-2.3.2 → daspi-2.3.3}/tests/__init__.py +0 -0
  184. {daspi-2.3.2 → daspi-2.3.3}/tests/anova_convert_test.py +0 -0
  185. {daspi-2.3.2 → daspi-2.3.3}/tests/anova_model_test.py +0 -0
  186. {daspi-2.3.2 → daspi-2.3.3}/tests/anova_tables_test.py +0 -0
  187. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/JointChart_probability_norm-prob.png +0 -0
  188. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/Precasts_gage_rnr_model_basic.png +0 -0
  189. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_simple.png +0 -0
  190. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_scatter_transposed.png +0 -0
  191. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine-contour_simple.png +0 -0
  192. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_mono.png +0 -0
  193. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_multiple.png +0 -0
  194. {daspi-2.3.2 → daspi-2.3.3}/tests/charts/SingleChart_violine_simple.png +0 -0
  195. {daspi-2.3.2 → daspi-2.3.3}/tests/config_test.py +0 -0
  196. {daspi-2.3.2 → daspi-2.3.3}/tests/data/anova3_result.csv +0 -0
  197. {daspi-2.3.2 → daspi-2.3.3}/tests/data/dists_10-samples.csv +0 -0
  198. {daspi-2.3.2 → daspi-2.3.3}/tests/data/dists_25-samples.csv +0 -0
  199. {daspi-2.3.2 → daspi-2.3.3}/tests/data/gage_rnr.csv +0 -0
  200. {daspi-2.3.2 → daspi-2.3.3}/tests/data/gage_study.csv +0 -0
  201. {daspi-2.3.2 → daspi-2.3.3}/tests/data/generate_dists.py +0 -0
  202. {daspi-2.3.2 → daspi-2.3.3}/tests/data/grnr_d-optimal.csv +0 -0
  203. {daspi-2.3.2 → daspi-2.3.3}/tests/data/uncertainties.csv +0 -0
  204. {daspi-2.3.2 → daspi-2.3.3}/tests/doe_build_test.py +0 -0
  205. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_appearance_test.py +0 -0
  206. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_chart_test.py +0 -0
  207. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_classify_test.py +0 -0
  208. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_facets_test.py +0 -0
  209. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_plotter_test.py +0 -0
  210. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_templates_test.py +0 -0
  211. {daspi-2.3.2 → daspi-2.3.3}/tests/plotlib_visual_test.py +0 -0
  212. {daspi-2.3.2 → daspi-2.3.3}/tests/r2_pred.mpx +0 -0
  213. {daspi-2.3.2 → daspi-2.3.3}/tests/r2_pred.mpx.bak +0 -0
  214. {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_confidence_test.py +0 -0
  215. {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_estimation_test.py +0 -0
  216. {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_hypothesis_test.py +0 -0
  217. {daspi-2.3.2 → daspi-2.3.3}/tests/statistics_montecarlo_test.py +0 -0
  218. {daspi-2.3.2 → daspi-2.3.3}/tests/strings_test.py +0 -0
  219. {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.2
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': mcolors.to_rgb(color) + (alpha/2,),
299
- 'linewidth': 1,
300
- 'where': data[PLOTTER.SUBGROUP]==agreement,
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
- ) -> list[float | int]:
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
- return subgroup
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
- return bool(self.agreements) and self.fill
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 kernel density. For the KDE
4640
- it is just a straight line at the location of the feature base.
4641
- For Violin the upper kernel density estimate is mirrored at the
4642
- feature base."""
4643
- if self.__class__.__name__ == 'Violin':
4644
- estim_low = 2 * f_base - estim_upp
4645
- else:
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].unique():
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.ax.plot(
4685
- estim_upp, sequence, estim_low, sequence, **_kw_line)
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.ax.plot(
4691
- sequence, estim_upp, sequence, estim_low,**_kw_line)
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.2"
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" },
index bf01011..2390f28 100644
Binary file
index 7731764..72006fb 100644
Binary file
index e670672..0a30291 100644
Binary file
index ff3be98..c434a32 100644
Binary file
index fb99e84..5a39f6d 100644
Binary file
index f2a045f..f4f6571 100644
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
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
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
index aa2d371..abb9e96 100644
Binary file
index 49cd6e6..74a9aee 100644
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