You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Office 2016 introduced a new chart family — Waterfall, Funnel, Treemap, Sunburst, Box-Plot, and Histogram — under a separate XML namespace cx: (http://schemas.microsoft.com/office/drawing/2014/chartex). These do not live inside the <c:chartSpace> tree that python-pptx writes; they live in <cx:chartSpace> and ship as a different Content-Type (application/vnd.ms-office.chartex+xml). python-pptx today has zero cx: support — there is no XL_CHART_TYPE enum entry for any of these, and no writer path. Demand is real (scanny/python-pptx#583, #778, #479, #651, #305, #371, #386, #944, #1047) and there is a publishable fork (GetThematic/python-pptx) that already implements a clean waterfall path on top of the existing 1.0 codebase.
Sub-features
Add cx: namespace XML element classes mirroring the existing c: lineage
New content-type application/vnd.ms-office.chartex+xml registration in opc/constants.py
OOXML: ECMA-376 5th ed. Part 4 — Chart Extensibility (cx:). Top-level <cx:chartSpace> with <cx:chartData>, <cx:plotArea>, <cx:plotAreaRegion>. Per-type elements: <cx:treemap>, <cx:sunburst>, <cx:waterfall>, <cx:funnel>, <cx:boxWhisker>, <cx:clusteredColumn> (used for Histograms with cx:binning).
Code paths: new src/pptx/chart/cx_chart.py, new src/pptx/oxml/chart/cx_*.py, extend src/pptx/enum/chart.py, extend src/pptx/parts/chart.py, register content-type in src/pptx/opc/constants.py.
Acceptance criteria
A user can call slide.shapes.add_chart(XL_CHART_TYPE.WATERFALL, ...) and PowerPoint opens the resulting deck with a real Waterfall chart (not a corruption banner, not a placeholder).
A pptx that ALREADY contains a Waterfall (authored in PowerPoint) reads, modifies one unrelated slide, and saves without corrupting the Waterfall.
30+ behave scenarios across the implemented cx: types.
Documentation page for cx: charts in docs/user/charts.rst.
Effort: L
Big surface; the cx: family is essentially a parallel chart writer. Strongly recommend phased delivery and start by cherry-picking GetThematic/python-pptx Waterfall as Phase A.
Problem
Office 2016 introduced a new chart family — Waterfall, Funnel, Treemap, Sunburst, Box-Plot, and Histogram — under a separate XML namespace
cx:(http://schemas.microsoft.com/office/drawing/2014/chartex). These do not live inside the<c:chartSpace>tree that python-pptx writes; they live in<cx:chartSpace>and ship as a differentContent-Type(application/vnd.ms-office.chartex+xml). python-pptx today has zerocx:support — there is noXL_CHART_TYPEenum entry for any of these, and no writer path. Demand is real (scanny/python-pptx#583, #778, #479, #651, #305, #371, #386, #944, #1047) and there is a publishable fork (GetThematic/python-pptx) that already implements a clean waterfall path on top of the existing 1.0 codebase.Sub-features
cx:namespace XML element classes mirroring the existingc:lineageapplication/vnd.ms-office.chartex+xmlregistration inopc/constants.pyXL_CHART_TYPEenum extended withWATERFALL,FUNNEL,TREEMAP,SUNBURST,BOX_PLOT,HISTOGRAM_PARETO,HISTOGRAMSlide.shapes.add_chart(XL_CHART_TYPE.WATERFALL, x, y, cx, cy, chart_data)dispatches tocx:writerChart.replace_data(...)forcx:chartsPrior art
GetThematic/python-pptx— clean waterfall + chartEx round-trip preservation. Highest-quality cherry-pick candidate in this epic. PR-shaped already.Bastian2203/threeD-feature-python-pptx— adjacent (3D Bar/Column/Area) but inc:namespace, notcx:. Different epic; not relevant here.cx:). Top-level<cx:chartSpace>with<cx:chartData>,<cx:plotArea>,<cx:plotAreaRegion>. Per-type elements:<cx:treemap>,<cx:sunburst>,<cx:waterfall>,<cx:funnel>,<cx:boxWhisker>,<cx:clusteredColumn>(used for Histograms withcx:binning).src/pptx/chart/cx_chart.py, newsrc/pptx/oxml/chart/cx_*.py, extendsrc/pptx/enum/chart.py, extendsrc/pptx/parts/chart.py, register content-type insrc/pptx/opc/constants.py.Acceptance criteria
slide.shapes.add_chart(XL_CHART_TYPE.WATERFALL, ...)and PowerPoint opens the resulting deck with a real Waterfall chart (not a corruption banner, not a placeholder).cx:types.cx:charts indocs/user/charts.rst.Effort: L
Big surface; the
cx:family is essentially a parallel chart writer. Strongly recommend phased delivery and start by cherry-pickingGetThematic/python-pptxWaterfall as Phase A.