{ "$schema": "../_schema.json", "element": "chart", "shared_base": true, "properties": { "areafill": { "type": "string", "aliases": [ "area.fill" ], "add": true, "set": true, "get": false, "description": "fill applied to every series shape. Solid color or gradient 'c1-c2[:angle]'.", "examples": [ "--prop areafill=4472C4-A5C8FF:90" ] }, "autotitledeleted": { "type": "bool", "add": true, "set": true, "get": false, "description": "suppress the auto-generated 'Chart Title' placeholder.", "examples": [ "--prop autotitledeleted=true" ] }, "axisfont": { "type": "string", "aliases": [ "axis.font" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] axisFont; see chart-axis schema for full axis-level options", "examples": [ "--prop axisfont=10:8B949E:Helvetica" ] }, "axisline": { "type": "string", "aliases": [ "axis.line" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash; see chart-axis schema for full axis-level options", "examples": [ "--prop axisline=666666:1" ] }, "axismax": { "type": "number", "aliases": [ "max" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] max (on value/value2); see chart-axis schema for full axis-level options", "examples": [ "--prop axismax=1000", "--prop axismax=250" ] }, "axismin": { "type": "number", "aliases": [ "min" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] min (on value/value2); see chart-axis schema for full axis-level options", "examples": [ "--prop axismin=0" ] }, "axisnumfmt": { "type": "string", "aliases": [ "axisnumberformat" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] axisNumFmt / format; see chart-axis schema for full axis-level options", "examples": [ "--prop axisnumfmt=\"#,##0\"" ] }, "axisorientation": { "type": "string", "aliases": [ "axisreverse" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] axisOrientation; see chart-axis schema for full axis-level options", "examples": [ "--prop axisorientation=true" ] }, "axisposition": { "type": "string", "aliases": [ "axispos" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] tickLabelPos / crossBetween; see chart-axis schema for full axis-level options", "examples": [ "--prop axisposition=top" ] }, "axistitle": { "type": "string", "aliases": [ "vtitle" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] title (value-axis); see chart-axis schema for full axis-level options", "examples": [ "--prop axistitle=\"Revenue\"" ] }, "axisvisible": { "type": "bool", "aliases": [ "axis.delete", "axis.visible" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] visible; see chart-axis schema for full axis-level options", "examples": [ "--prop axisvisible=false" ] }, "bubbleScale": { "type": "number", "add": true, "set": true, "get": true, "description": "bubble chart scale (% of default).", "readback": "integer percentage", "enforcement": "report", "aliases": [ "bubblescale" ], "examples": [ "--prop bubblescale=100" ], "appliesWhen": { "chartType": [ "bubble" ] } }, "catAxisVisible": { "type": "bool", "add": true, "set": true, "get": true, "description": "convenience shortcut for /chart[N]/axis[@role=...] visible (on role=category); see chart-axis schema for full axis-level options", "readback": "true | false", "enforcement": "report", "aliases": [ "cataxis.visible", "cataxisvisible" ], "examples": [ "--prop cataxisvisible=false" ] }, "catTitle": { "type": "string", "add": true, "set": true, "get": true, "description": "category axis title text.", "readback": "title string", "enforcement": "report", "aliases": [ "htitle", "cattitle" ], "examples": [ "--prop cattitle=\"Quarter\"" ] }, "cataxisline": { "type": "string", "aliases": [ "cataxis.line" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash (on role=category); see chart-axis schema for full axis-level options", "examples": [ "--prop cataxisline=333333:1" ] }, "categories": { "type": "string", "description": "comma-separated category labels, OR a cell range reference (e.g. Sheet1!A2:A5)", "add": true, "set": true, "get": true, "examples": [ "--prop categories=A,B,C", "--prop categories=\"Q1,Q2,Q3,Q4\"", "--prop categories=\"Sheet1!$A$2:$A$5\"" ], "readback": "comma-separated category labels", "enforcement": "strict" }, "chartFill": { "type": "color", "add": true, "set": true, "get": true, "description": "chart-level fill color (accepts #RRGGBB, named colors, or scheme names).", "readback": "#RRGGBB or color descriptor", "enforcement": "report" }, "chartType": { "type": "enum", "values": [ "bar", "column", "line", "pie", "doughnut", "area", "scatter", "bubble", "radar", "stock", "combo", "waterfall", "funnel", "treemap", "sunburst", "boxWhisker", "histogram", "pareto" ], "modifiers": { "3d": { "suffix": "3d", "example": "column3d", "appliesWhen": { "chartType": [ "bar", "column", "line", "pie", "area" ] } }, "stacked": { "prefix": "stacked", "example": "stackedBar", "appliesWhen": { "chartType": [ "bar", "column", "line", "area" ] } }, "percentStacked": { "prefix": "percentStacked", "example": "percentStackedBar", "appliesWhen": { "chartType": [ "bar", "column", "line", "area" ] } } }, "aliases": [ "type", "col", "donut", "xy", "spider", "ohlc", "wf", "charttype" ], "propAliases": [ "type" ], "add": true, "set": false, "get": true, "examples": [ "--prop chartType=column", "--prop chartType=stackedBar", "--prop chartType=percentStackedColumn", "--prop chartType=column3d", "--prop chartType=waterfall" ], "readback": "normalized chartType string without modifiers (modifiers surface as separate flags in later iterations)", "setNote": "chart type is fixed at creation; changing it post-hoc would require rebuilding the chart XML (series/axes differ per type). Remove and re-add the chart to change its type, or use combotypes for per-series type overrides.", "enforcement": "strict" }, "chartareafill": { "type": "string", "aliases": [ "chartfill" ], "add": true, "set": true, "get": false, "description": "chart-area background fill. Solid color, gradient, or 'none'.", "examples": [ "--prop chartareafill=FFFFFF" ] }, "chartborder": { "type": "string", "aliases": [ "chartarea.border" ], "add": true, "set": true, "get": false, "description": "chart-area outer border line. Same format as plotborder.", "examples": [ "--prop chartborder=000000:1", "--prop chartborder=none" ] }, "colorrule": { "type": "string", "aliases": [ "conditionalcolor", "colorRule" ], "add": true, "set": true, "get": false, "description": "conditional per-data-point color. Format: 'threshold:belowColor:aboveColor'.", "examples": [ "--prop colorrule=0:FF0000:00AA00" ] }, "colors": { "type": "string", "description": "comma-separated series fill colors, positional (1st color → series 1). Per-series dotted keys (series1.color=...) override positions.", "add": true, "set": false, "get": false, "examples": [ "--prop colors=\"4472C4,ED7D31,A5A5A5\"" ], "enforcement": "strict" }, "combosplit": { "type": "number", "add": true, "set": false, "get": false, "description": "combo chart split index: first N series use primary chart type, rest use secondary. Add-time only.", "examples": [ "--prop combosplit=2" ] }, "combotypes": { "type": "string", "aliases": [ "combo.types" ], "add": true, "set": true, "get": false, "description": "rebuild as combo chart with per-series chart types (column,line,area,...). Comma-separated, one per series.", "examples": [ "--prop combotypes=\"column,column,line\"" ] }, "crossBetween": { "type": "string", "add": true, "set": true, "get": true, "description": "category axis cross-between behavior (between / midCat).", "examples": [ "--prop crossBetween=between", "--prop crossbetween=midcat" ], "readback": "crossBetween token", "enforcement": "report", "aliases": [ "crossbetween" ] }, "crosses": { "type": "string", "add": true, "set": true, "get": true, "description": "where the value axis crosses the category axis. Values: autoZero (default), max, min.", "examples": [ "--prop crosses=max" ], "readback": "crosses token" }, "crossesAt": { "type": "number", "add": true, "set": true, "get": true, "description": "value-axis crossesAt value readback.", "readback": "numeric value", "enforcement": "report", "aliases": [ "crossesat" ], "examples": [ "--prop crossesat=0" ] }, "data": { "type": "string", "description": "inline series spec 'Name:1,2,3' or 'Name1:1,2,3;Name2:4,5,6'. Add-time only; use per-series chart-series Set after creation.", "add": true, "set": false, "get": false, "examples": [ "--prop data=\"Sales:10,20,30\"", "--prop data=\"Sales:10,20,30;Cost:5,8,12\"" ], "readback": "n/a", "enforcement": "report" }, "dataLabels": { "type": "string", "aliases": [ "datalabels", "labels" ], "add": true, "set": true, "get": true, "description": "show/hide data labels. Use 'none' to hide; otherwise comma list of flags: value, percent, category, series, all (also accepts seriesName/categoryName/percentage/values aliases). Position values (outsideEnd/center/insideEnd/insideBase/top/bottom/left/right/bestFit) implicitly enable showVal and apply as dLblPos.", "examples": [ "--prop dataLabels=value", "--prop dataLabels=\"value,percent\"", "--prop dataLabels=outsideEnd", "--prop dataLabels=none" ], "readback": "comma-separated flags: value,percent,category,series" }, "dataTable": { "type": "bool", "aliases": [ "datatable" ], "add": true, "set": true, "get": true, "description": "show data table beneath the chart (with default borders + legend keys).", "examples": [ "--prop dataTable=true" ], "readback": "true | false" }, "decreaseColor": { "type": "color", "add": true, "set": false, "get": false, "description": "waterfall: negative bar color. Add-time only.", "examples": [ "--prop decreaseColor=FF0000" ] }, "dispBlanksAs": { "type": "enum", "values": [ "gap", "zero", "span" ], "add": true, "set": true, "get": true, "description": "how empty cells render (gap leaves a hole, zero plots as 0, span connects across).", "examples": [ "--prop dispBlanksAs=gap" ], "readback": "dispBlanksAs token", "enforcement": "report" }, "droplines": { "type": "string", "appliesWhen": { "chartType": [ "line" ] }, "add": true, "set": true, "get": true, "description": "drop lines on line chart. true|false toggle or line spec 'color[:width[:dash]]'; 'none' removes.", "examples": [ "--prop droplines=true", "--prop droplines=808080:0.5" ] }, "errbars": { "type": "string", "aliases": [ "errorbars" ], "add": true, "set": true, "get": false, "description": "error bars on each series. Format: 'type:value' where type ∈ fixed (alias: fixedValue), percent (alias: percentage, pct), stddev (alias: standardDeviation), stderr (alias: standardError). 'none' removes.", "examples": [ "--prop errbars=fixed:5", "--prop errbars=none", "--prop errbars=percent:10" ] }, "explosion": { "type": "number", "aliases": [ "explode" ], "add": true, "set": true, "get": true, "description": "pie/doughnut slice explosion 0..100 (percent of radius); 0 removes.", "examples": [ "--prop explosion=10" ], "readback": "as emitted by handler (per-format details vary)" }, "firstSliceAngle": { "type": "number", "add": true, "set": true, "get": true, "description": "pie/doughnut first slice angle (degrees).", "readback": "integer degrees", "enforcement": "report", "aliases": [ "sliceangle", "firstsliceangle" ], "examples": [ "--prop firstsliceangle=90" ], "appliesWhen": { "chartType": [ "pie" ] } }, "gapdepth": { "type": "number", "appliesWhen": { "chartType": [ "bar3d", "line3d", "area3d" ] }, "add": true, "set": true, "get": false, "description": "depth gap between series in 3D bar/line/area charts (percent).", "examples": [ "--prop gapdepth=150" ] }, "gapwidth": { "type": "number", "aliases": [ "gap" ], "add": true, "set": true, "get": true, "description": "gap between bar/column groups, 0..500 (percent of bar width).", "examples": [ "--prop gapwidth=150" ], "readback": "integer 0..500" }, "gradient": { "type": "string", "aliases": [ "gradientfill" ], "add": true, "set": true, "get": true, "description": "gradient fill applied to every series. Format: 'c1-c2[-c3][:angle]' (angle in degrees). Errors if chart has no series.", "examples": [ "--prop gradient=FF0000-0000FF", "--prop gradient=FF0000-00FF00-0000FF:90" ], "readback": "as emitted by handler (per-format details vary)" }, "gradients": { "type": "string", "add": true, "set": true, "get": false, "description": "per-series gradient fills, semicolon-separated; one entry per series.", "examples": [ "--prop gradients=\"FF0000-0000FF;00FF00-FFFF00\"" ] }, "gridlines": { "type": "bool", "aliases": [ "majorgridlines" ], "add": true, "set": true, "get": true, "description": "value-axis major gridlines. true|false toggle, or line spec 'color', 'color:width', 'color:width:dash' to style; 'none' removes.", "examples": [ "--prop gridlines=true", "--prop gridlines=E0E0E0:0.3", "--prop gridlines=none" ], "readback": "true | false" }, "height": { "type": "length", "add": true, "set": true, "get": true, "description": "chart frame height; accepts cm/in/pt/EMU. Ignored if anchor= is set.", "examples": [ "--prop height=10cm" ] }, "hilowlines": { "type": "string", "appliesWhen": { "chartType": [ "line", "stock" ] }, "add": true, "set": true, "get": true, "description": "high-low lines on line/stock chart. Same format as droplines.", "examples": [ "--prop hilowlines=true" ] }, "holeSize": { "type": "number", "add": true, "set": true, "get": true, "description": "doughnut hole size readback.", "readback": "integer 10..90 percent", "enforcement": "report", "aliases": [ "holesize" ], "examples": [ "--prop holesize=50", "--prop holeSize=50" ], "appliesWhen": { "chartType": [ "doughnut" ] } }, "increaseColor": { "type": "color", "add": true, "set": false, "get": false, "description": "waterfall: positive bar color. Add-time only.", "examples": [ "--prop increaseColor=00AA00" ] }, "invertifneg": { "type": "bool", "aliases": [ "invertifnegative" ], "add": true, "set": true, "get": false, "description": "if true, draw negative bars in an inverted (lighter) color.", "examples": [ "--prop invertifneg=true" ] }, "labelPos": { "type": "string", "aliases": [ "labelpos", "labelposition" ], "add": true, "set": true, "get": true, "description": "data label position. Values: center|ctr, insideEnd|inEnd|inside, insideBase|inBase|base, outsideEnd|outEnd|outside, bestFit|best|auto, top|t, bottom|b, left|l, right|r. Restrictions: not supported on doughnut/area/radar/stock; pie/pie3D restricted to ctr/inEnd/inBase/bestFit (other tokens rejected, per OOXML ST_DLblPosPie); stacked series clamp to ctr/inBase/inEnd; combo charts skip entirely.", "examples": [ "--prop labelPos=outsideEnd" ], "readback": "OOXML position token: ctr/inEnd/inBase/outEnd/bestFit/t/b/l/r" }, "labelfont": { "type": "string", "add": true, "set": true, "get": false, "description": "data label text font. Format: 'size:color:fontname' (any segment optional). Readback is split into labelFont.size / labelFont.color / labelFont.bold / labelFont.name (one key per slot) so dump→replay can rebuild the compound spec without parsing.", "examples": [ "--prop labelfont=9:333333:Calibri" ] }, "labelFont.size": { "type": "number", "get": true, "description": "data label font size in points. Readback of the size slot inside labelfont= (BuildLabelTextProperties' DefaultRunProperties.FontSize).", "examples": [] }, "labelFont.color": { "type": "string", "get": true, "description": "data label font color (hex, e.g. #FF0000). Readback of the color slot inside labelfont=.", "examples": [] }, "labelFont.bold": { "type": "bool", "get": true, "description": "data label font bold flag. Emitted only when true.", "examples": [] }, "labelFont.name": { "type": "string", "get": true, "description": "data label font typeface (latin). Readback of the fontname slot inside labelfont=.", "examples": [] }, "labeloffset": { "type": "number", "add": true, "set": true, "get": false, "description": "category-axis label offset 0..1000 (percent of font height); category axis only.", "examples": [ "--prop labeloffset=100" ] }, "labelrotation": { "type": "number", "aliases": [ "xaxis.labelrotation", "valaxis.labelrotation", "yaxis.labelrotation", "xaxis.labelRotation", "valaxis.labelRotation", "yaxis.labelRotation", "xaxislabelrotation", "valaxislabelrotation", "yaxislabelrotation" ], "add": true, "set": true, "get": false, "description": "tick-label rotation in degrees (-90..90). Bare 'labelrotation' targets both axes; xaxis.* targets category, yaxis./valaxis.* targets value.", "examples": [ "--prop labelrotation=-45", "--prop xaxis.labelrotation=30" ] }, "leaderlines": { "type": "bool", "aliases": [ "showleaderlines" ], "add": true, "set": true, "get": false, "description": "show/hide leader lines connecting data labels to slices (pie/doughnut).", "examples": [ "--prop leaderlines=true" ] }, "legend": { "type": "enum", "values": [ "true", "false", "none", "top", "bottom", "left", "right", "topRight", "tr" ], "add": true, "set": true, "get": true, "description": "legend position. 'none'/'false' hides; otherwise place at top|t, bottom|b, left|l, right|r, topRight|tr. Hyphen and underscore variants accepted.", "examples": [ "--prop legend=bottom", "--prop legend=none" ] }, "legend.overlay": { "type": "bool", "aliases": [ "legendoverlay" ], "add": true, "set": true, "get": true, "description": "if true, legend overlays the plot area instead of reserving space.", "examples": [ "--prop legend.overlay=true" ], "readback": "true | false" }, "legendFont": { "type": "string", "aliases": [ "legendfont", "legend.font" ], "add": true, "set": true, "get": true, "description": "legend text font. Format: 'size:color:fontname' (any segment optional).", "examples": [ "--prop legendFont=10:CCCCCC:Arial", "--prop legendFont=9:808080" ], "readback": "size:color:fontname" }, "linedash": { "type": "string", "aliases": [ "dash" ], "add": true, "set": true, "get": false, "description": "line dash style for every series. Values: solid, dash, dashDot, dot, lgDash, lgDashDot, sysDash, sysDot, sysDashDot.", "examples": [ "--prop linedash=dash" ] }, "linewidth": { "type": "number", "add": true, "set": true, "get": false, "description": "line width in points (applies to every series line).", "examples": [ "--prop linewidth=2" ] }, "logbase": { "type": "number", "aliases": [ "logscale", "yaxisscale" ], "add": true, "set": true, "get": false, "description": "value-axis logarithmic base (2..1000 typically). Shorthand: true|yes|log|1 → base 10; false|none|linear|0 removes log scale.", "examples": [ "--prop logbase=10", "--prop logscale=true", "--prop yaxisscale=linear" ] }, "majorTickMark": { "type": "string", "add": true, "set": true, "get": true, "description": "major tick mark style (out / in / cross / none).", "examples": [ "--prop majorTickMark=out", "--prop majortickmark=out" ], "readback": "tick mark token", "enforcement": "report", "aliases": [ "majortick", "majortickmark" ] }, "majorunit": { "type": "number", "add": true, "set": true, "get": false, "description": "value-axis major gridline / tick spacing.", "examples": [ "--prop majorunit=200", "--prop majorunit=50" ] }, "marker": { "type": "string", "aliases": [ "markers" ], "add": true, "set": true, "get": false, "description": "marker symbol for line/scatter/radar series only (other types silently skipped). Format: 'symbol' or 'symbol:size' or 'symbol:size:color'. Symbols: none, auto, circle, square, diamond, triangle, x, plus, star, dash, dot. (picture markers are not implemented.) Chart-level Get surfaces a first-series representative value once any series carries a marker (the dump emitter relies on it for uniform-marker charts); the authoritative per-series read is /chart[N]/series[K] (chart-series schema declares marker get:true).", "examples": [ "--prop marker=circle", "--prop marker=square:8:FF0000" ], "readback": "as emitted by handler (per-format details vary)" }, "markersize": { "type": "number", "add": true, "set": true, "get": false, "description": "marker size 2..72 (line/scatter/radar series only).", "examples": [ "--prop markersize=8" ] }, "markercolor": { "type": "string", "aliases": [ "marker.color" ], "set": true, "get": true, "description": "marker fill color (line/scatter/radar series only). Fans out to every applicable series; preserves existing marker symbol/size. Read back from the first series' marker spPr/solidFill.", "examples": [ "--prop markerColor=FF0000" ], "readback": "as emitted by handler (hex color, e.g. #FF0000)" }, "minorGridlines": { "type": "bool", "aliases": [ "minorgridlines" ], "add": true, "set": true, "get": true, "description": "value-axis minor gridlines; same format as gridlines.", "examples": [ "--prop minorGridlines=true", "--prop minorGridlines=F0F0F0:0.25" ], "readback": "true | false" }, "minorTickMark": { "type": "string", "add": true, "set": true, "get": true, "description": "minor tick mark style (out / in / cross / none).", "examples": [ "--prop minorTickMark=none", "--prop minortickmark=in" ], "readback": "tick mark token", "enforcement": "report", "aliases": [ "minortick", "minortickmark" ] }, "minorunit": { "type": "number", "add": true, "set": true, "get": false, "description": "value-axis minor gridline / tick spacing.", "examples": [ "--prop minorunit=50", "--prop minorunit=10" ] }, "overlap": { "type": "number", "add": true, "set": true, "get": true, "description": "bar/column overlap within a group, -100..100 (negative = gap, positive = overlap).", "examples": [ "--prop overlap=0", "--prop overlap=100" ], "readback": "as emitted by handler (per-format details vary)" }, "plotFill": { "type": "color", "aliases": [ "plotareafill", "plotfill" ], "add": true, "set": true, "get": true, "description": "plot-area background fill. Solid color, gradient 'c1-c2[:angle]', or 'none'.", "examples": [ "--prop plotFill=FAFAFA", "--prop plotareafill=FAFAFA", "--prop plotFill=none" ], "readback": "#RRGGBB or color descriptor" }, "plotborder": { "type": "string", "aliases": [ "plotarea.border" ], "add": true, "set": true, "get": false, "description": "plot-area border line. Format: 'color', 'color:width', 'color:width:dash'; or 'none'.", "examples": [ "--prop plotborder=CCCCCC:0.5", "--prop plotborder=none" ] }, "plotvisonly": { "type": "bool", "aliases": [ "plotvisibleonly" ], "add": true, "set": true, "get": false, "description": "if true, skip plotting hidden worksheet rows/columns.", "examples": [ "--prop plotvisonly=true" ] }, "preset": { "type": "string", "aliases": [ "theme", "style.preset" ], "add": true, "set": true, "get": false, "description": "named style bundle. Values: minimal, dark, corporate, magazine, dashboard, colorful, monochrome (alias mono).", "examples": [ "--prop preset=minimal", "--prop preset=corporate", "--prop preset=dark" ] }, "referenceline": { "type": "string", "aliases": [ "refline", "targetline" ], "add": true, "set": true, "get": false, "description": "horizontal reference / target line. Format: 'value' or 'value:color' or 'value:color:label' or 'value:color:label:dash'. Pass 'none' to remove.", "examples": [ "--prop referenceline=100:FF0000:Target", "--prop referenceline=none", "--prop refline=80:00AA00" ] }, "scatterstyle": { "type": "string", "appliesWhen": { "chartType": [ "scatter" ] }, "add": true, "set": true, "get": false, "description": "scatter chart subtype. Values: line|lineOnly, lineMarker, marker|markerOnly, smooth|smoothLine, smoothMarker.", "examples": [ "--prop scatterstyle=smoothMarker" ] }, "secondaryaxis": { "type": "string", "aliases": [ "secondary" ], "add": true, "set": true, "get": false, "description": "comma-separated 1-based series indices to plot on a secondary value axis.", "examples": [ "--prop secondaryaxis=2", "--prop secondary=\"2,3\"" ] }, "series{N}": { "type": "string", "add": false, "set": true, "get": false, "description": "legacy bare per-series data update (N is the 1-based series index). 'series{N}=\"1,2,3\"' replaces the numeric values for series N; 'series{N}=\"Name:1,2,3\"' also updates the series label. Prefer the dotted form (series{N}.name=, series{N}.values=) for clarity — see chart-series schema.", "examples": [ "--prop series1=\"10,20,30\"", "--prop series2=\"Revenue:5,8,12\"" ] }, "seriesoutline": { "type": "string", "aliases": [ "series.outline" ], "add": true, "set": true, "get": false, "description": "series outline. Format: 'color', 'color:width', or 'color:width:dash' (also accepts '-' separator); 'none' removes.", "examples": [ "--prop seriesoutline=000000:0.5", "--prop seriesoutline=none" ] }, "seriesshadow": { "type": "string", "aliases": [ "series.shadow" ], "add": true, "set": true, "get": false, "description": "outer shadow on every series shape. Format: 'COLOR-BLUR-ANGLE-DIST-OPACITY'; 'none' removes.", "examples": [ "--prop seriesshadow=000000-5-45-3-50", "--prop seriesshadow=none" ] }, "serlines": { "type": "string", "aliases": [ "serieslines" ], "add": true, "set": true, "get": false, "description": "series lines on stacked bar charts (true/false).", "examples": [ "--prop serlines=true" ] }, "shape": { "type": "string", "aliases": [ "barshape" ], "appliesWhen": { "chartType": [ "bar3d" ] }, "add": true, "set": true, "get": false, "description": "3D bar shape. Values: box|cuboid, cone, coneToMax, cylinder, pyramid, pyramidToMax. Bar3D charts only.", "examples": [ "--prop shape=cylinder" ] }, "showMarker": { "type": "string", "add": false, "set": true, "get": true, "description": "show markers on line/scatter series at chart level (true|false).", "examples": [ "--prop showMarker=true" ], "readback": "true | false", "enforcement": "report" }, "shownegbubbles": { "type": "bool", "appliesWhen": { "chartType": [ "bubble" ] }, "add": true, "set": true, "get": false, "description": "render negative-valued bubbles. Bubble charts only.", "examples": [ "--prop shownegbubbles=true" ] }, "sizerepresents": { "type": "string", "appliesWhen": { "chartType": [ "bubble" ] }, "add": true, "set": true, "get": false, "description": "how bubble size value is mapped. Values: area (default), width|w. Bubble charts only.", "examples": [ "--prop sizerepresents=area" ] }, "smooth": { "type": "string", "appliesWhen": { "chartType": [ "line", "scatter" ] }, "add": true, "set": true, "get": true, "description": "smooth lines on line/scatter charts (true|false). Reported unsupported for other chart types.", "examples": [ "--prop smooth=true" ], "readback": "as emitted by handler (per-format details vary)" }, "style": { "type": "number", "aliases": [ "styleid" ], "add": true, "set": true, "get": true, "description": "built-in chart style id 1..48; pass 'none' to clear.", "examples": [ "--prop style=2" ], "readback": "as emitted by handler (per-format details vary)" }, "tickLabelPos": { "type": "string", "add": true, "set": true, "get": true, "description": "tick label position (high / low / nextTo / none).", "examples": [ "--prop tickLabelPos=nextTo", "--prop ticklabelpos=low" ], "readback": "tick label position token", "enforcement": "report", "aliases": [ "ticklabelposition", "ticklabelpos" ] }, "ticklabelskip": { "type": "number", "aliases": [ "tickskip" ], "add": true, "set": true, "get": false, "description": "draw tick labels every Nth category (category axis).", "examples": [ "--prop ticklabelskip=2" ] }, "title": { "type": "string", "description": "chart title text; pass 'none' (case-insensitive) or an empty string to omit/remove the title — on add this skips creating the title element, on set it removes an existing title. Get also returns sub-keys title.font, title.size, title.color, title.bold when set; these are get-only readback fields surfaced from chart title runs.", "add": true, "set": true, "get": true, "examples": [ "--prop title=\"Q1\"", "--prop title=\"2024 Sales\"", "--prop title=none" ], "readback": "chart title", "enforcement": "report" }, "title.bold": { "type": "string", "add": true, "set": true, "get": true, "description": "title bold flag (true|false).", "readback": "true | false" }, "title.color": { "type": "color", "add": true, "set": true, "get": true, "description": "title font color (#RRGGBB, named, or scheme color).", "readback": "#RRGGBB" }, "title.font": { "type": "string", "add": true, "set": true, "get": true, "description": "title font name.", "readback": "font name" }, "title.overlay": { "type": "bool", "aliases": [ "titleoverlay" ], "add": true, "set": true, "get": true, "description": "if true, title overlays the plot area instead of reserving space above it.", "examples": [ "--prop title.overlay=true" ], "readback": "true" }, "title.size": { "type": "font-size", "add": true, "set": true, "get": true, "description": "title font size (e.g. 14 or 14pt).", "readback": "Npt" }, "totalColor": { "type": "color", "add": true, "set": false, "get": false, "description": "waterfall: subtotal/total bar color. Add-time only.", "examples": [ "--prop totalColor=4472C4" ] }, "transparency": { "type": "number", "aliases": [ "opacity", "alpha" ], "add": true, "set": true, "get": false, "description": "series fill transparency (0..100, percent). 'transparency' is inverse of 'opacity'/'alpha' (transparency=30 ≡ opacity=70).", "examples": [ "--prop transparency=30", "--prop opacity=70" ] }, "trendline": { "type": "string", "add": true, "set": true, "get": true, "description": "add trendline to every series. Format: 'type[:order]' or 'type:forward:backward'. Types: linear (default), exp|exponential, log|logarithmic, poly|polynomial, power, movingAvg|moving|movingAverage. Order applies to poly/movingAvg. Pass 'none' to clear.", "examples": [ "--prop trendline=linear", "--prop trendline=poly:3", "--prop trendline=none", "--prop trendline=movingAvg:3" ], "readback": "as emitted by handler (per-format details vary)" }, "updownbars": { "type": "string", "appliesWhen": { "chartType": [ "line", "stock" ] }, "add": true, "set": true, "get": true, "description": "up/down bars on line chart. true | 'gapWidth:upColor:downColor' | 'none'/'false'.", "examples": [ "--prop updownbars=true", "--prop updownbars=150:00AA00:FF0000" ] }, "valaxisline": { "type": "string", "aliases": [ "valaxis.line" ], "add": true, "set": true, "get": false, "description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash (on role=value); see chart-axis schema for full axis-level options", "examples": [ "--prop valaxisline=333333:1" ] }, "varyColors": { "type": "string", "add": true, "set": true, "get": true, "description": "vary colors by data point (true|false; single-series charts).", "examples": [ "--prop varyColors=true" ], "readback": "true | false", "enforcement": "report" }, "view3d": { "type": "string", "aliases": [ "camera", "perspective" ], "add": true, "set": true, "get": true, "description": "3D view angles. Format: 'rotX,rotY,perspective' (any tail optional) or single integer for perspective only. Named-key form (rotX=...) is rejected.", "examples": [ "--prop view3d=15,20,30", "--prop view3d=20", "--prop perspective=30" ], "readback": "as emitted by handler (per-format details vary)" }, "width": { "type": "length", "add": true, "set": true, "get": true, "description": "chart frame width; accepts cm/in/pt/EMU. Ignored if anchor= is set.", "examples": [ "--prop width=18cm", "--prop width=15cm" ] } } }