Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

1475 lines
40 KiB
JSON

{
"$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"
]
}
}
}