A chart as plain JSON: a chart space holding one plot area of chart groups, each a list of series.
Remarks
The shape is DrawingML's c:chartSpace wherever DrawingML has a shape for the thing, and every
chart type is stated in it: the classic types, the 2016 types (waterfall, histogram, box and
whisker, treemap, sunburst, funnel, region map) as group types of their own, and types Excel has
none of. A series is what is drawn: its group says how, its sources are the data it plots (one
per channel: categories, values, x, y, sizes, colors), and its options say how its values are
turned into what is drawn. A point states what is particular to it, and a line derived from a
series is that series' child.
Every field is what the chart states, and nothing else. An absent field is a real value: it means
the application's default applies, and a writer leaves it out. Names are DrawingML's own
(gapWidth, dLbls, crossBetween), except the collections, which are named for what they hold
(groups, axes, series, points).
Values keep DrawingML's units unless a field says otherwise: percentages as whole numbers
(gapWidth: 150), angles in degrees, sizes of lines in points, and the x, y, w, h of a
manual layout as fractions of the chart.
Anything a reader does not model is kept, as the markup it was, in the ChartModel.Unknown
bag of the element that held it. Such markup is in the vocabulary of the file it was read from,
and is written back only to a part of that vocabulary.
A chart as plain JSON: a chart space holding one plot area of chart groups, each a list of series.
Remarks
The shape is DrawingML's
c:chartSpacewherever DrawingML has a shape for the thing, and every chart type is stated in it: the classic types, the 2016 types (waterfall, histogram, box and whisker, treemap, sunburst, funnel, region map) as group types of their own, and types Excel has none of. A series is what is drawn: its group says how, its sources are the data it plots (one per channel: categories, values, x, y, sizes, colors), and its options say how its values are turned into what is drawn. A point states what is particular to it, and a line derived from a series is that series' child.Every field is what the chart states, and nothing else. An absent field is a real value: it means the application's default applies, and a writer leaves it out. Names are DrawingML's own (
gapWidth,dLbls,crossBetween), except the collections, which are named for what they hold (groups,axes,series,points).Values keep DrawingML's units unless a field says otherwise: percentages as whole numbers (
gapWidth: 150), angles in degrees, sizes of lines in points, and thex,y,w,hof a manual layout as fractions of the chart.Anything a reader does not model is kept, as the markup it was, in the ChartModel.Unknown bag of the element that held it. Such markup is in the vocabulary of the file it was read from, and is written back only to a part of that vocabulary.