Skip to content

Commit 0e0d79f

Browse files
author
miranov25
committed
Phase 13.43.DF v1.0: summary_fit — standalone fit-result figures.
New module plots/_summary_fit.py (~650 LOC) plus outer-layer consume wired through DFDraw.{hist,profile,scatter,draw}. Faceted aggregation in _dispatch_2d_facet and _dispatch_faceted_render per v1.2 §4.2.0. _consumed normalize set extended to include summary_fit per §4.6 / C-3. 13 summary_fit.* keys added to DEFAULT_STYLE per §4.3. 26 invariance tests (F.34-F.48 + F.38a + F.47b + F.49-F.56 + F.56b) in TestPhase1343SummaryFit. Taxonomy staged in-commit (FIT.summary, 26 tests; invariance 313 -> 339). CRR §2 disclosures: vector-dispatch summary_fit attaches to stats[0]; 3D facet summary_fit deferred to FIX1; module-level set_style replaces v1.2 §3.10 instance-style language; _make_row extracts from (params, param_names, param_errors) triplet; _all_param_names excludes n_data; title auto-fit uses char-count approximation. Spec: PHASE_13_43_DF_v1_2_SummaryFit_Proposal.md (LOCKED 2026-05-27). Predecessor: PHASE_13_42_DF_FIX2_END @ 79d449c. Gate: 987 -> 1013 / 0 / 0 / 1.
1 parent 79d449c commit 0e0d79f

7 files changed

Lines changed: 1896 additions & 17 deletions

File tree

UTILS/dfextensions/dfdraw/docs/CAPABILITY_MATRIX.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Capability Matrix — dfdraw
22

3-
**Generated:** 2026-05-27 11:43 UTC
3+
**Generated:** 2026-05-27 18:36 UTC
44
**Phase:** 13.15.DF
55
**Generator:** `scripts/generate_capability_matrix.py`
66
**Sources:** `tests/feature_taxonomy.py` + `tests/test_layer_classification.py`
@@ -9,13 +9,13 @@
99

1010
| Status | Count | % |
1111
|--------|------:|--:|
12-
| ✅ Verified | 50 | 46% |
13-
| ☑️ Smoke-only | 57 | 53% |
12+
| ✅ Verified | 51 | 47% |
13+
| ☑️ Smoke-only | 57 | 52% |
1414
| 🧨 Broken | 0 | 0% |
1515
| 📋 Planned | 1 | 1% |
16-
| **Total features** | **108** | |
17-
| **Total proof tests** | **542** | |
18-
| **Invariance tests** | **313** | |
16+
| **Total features** | **109** | |
17+
| **Total proof tests** | **569** | |
18+
| **Invariance tests** | **340** | |
1919

2020
**Status key:**
2121
- ✅ Verified — has at least one invariance test (A ≡ B check)
@@ -173,6 +173,7 @@
173173
| ✅ | **FACET.list_grid** — facet_by accepts Union[str, List[str]] for 1D/2D/3D faceting. Convention LOCKED matching numpy/pandas (n_rows, n_cols, ...) shape: facet_by[0]=ROW (vertical within figure), facet_by[1]=COLUMN (horizontal within figure), facet_by[2]=FIGID (separate figures, one per value). facet_by[3+] raises NotImplementedError. 3D returns (List[Figure], List[axes_2d], List[stats_dict]) — DEVIATES from standard (fig, ax, stats) contract; documented prominently in inline help. New params: share_x/share_y ∈ {'all','row','col','none'} (within-figure axis sharing), share_across_figures: bool (3D global range lock). Per-plot-kind lock for share_across_figures (CP1-2): scatter locks x AND y; hist/profile locks x only (y auto-scales per figure to handle sparse-figID variance). New helpers: _normalize_facet_args, _to_mpl_share (symmetric {'all':True,'row':'row','col':'col','none':False} — v1.2 CP0-1 fix for Hard Constraint #3), _validate_share_axis_value, _resolve_facet_values (discrete or pd.cut/qcut Interval), _filter_facet_value (CP1-3 discrete vs binned), _compute_global_ranges. dfdraw is FIRST major plotting library with unified API where Nth faceting dimension generates separate figures (seaborn/ggplot2/plotly/altair all require manual loops). _validate_facet_by_binning guard for list input (v1.3 P1-A). Per-plot-kind dispatch: hist uses range= (matplotlib convention); profile uses range= which DFDraw.profile remaps to draw_profile's x_range= internally; scatter uses ax.set_xlim/set_ylim post-draw (no native range params); hist also locks ax.set_xlim post-draw (range= only locks bins, not axis xlim). Empty cell handling: '(no data)' diagnostic + stats={'n':0,'empty':True} — Phase 13.41.DF | 23 | 0 |
174174
| | **FIT** | | |
175175
|| **FIT.inline** — Inline fits (fit= parameter on hist/profile/scatter/draw) | 41 | 0 |
176+
|| **FIT.summary** — Summary fit — standalone table + params figure | 27 | 0 |
176177

177178
---
178179

UTILS/dfextensions/dfdraw/drawer.py

Lines changed: 327 additions & 11 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)