:version
:schemaLocation?
:clip?
-=> location*
- visualization_extension?
- userSource
- (sourceVariable | derivedVariable | expressionVariable)+
- categoricalDomain?
- intervalDomain*
+=> (visualization_extension | location)*
+ userSource+
+ (sourceVariable | derivedVariable | expressionVariable
+ | intervalDomain | categoricalDomain)+
graph
labelFrame[lf1]*
- container?
+ container*
+ legend?
labelFrame[lf2]*
style+
layerController?
:legend1?
:legend2?
:styleCycleRepository?
- :title1?
- :title2?
+ :title#?
:subtitle?
- :footnote1?
- :footnote2?
- :footnote3?
- :textbox1?
- :textbox2?
- :statisticsSummary?
- :statisticsSummary1?
- :dataSetHandle_0?
- :dataSetName_0?
- :dataSetHandle_1?
- :dataSetName_1?
- :dataSetHandle_2?
- :dataSetName_2?
+ :footnote#?
+ :textbox#?
+ :statisticsSummary[statisticsSummary_]?
+ :statisticsSummary#?
+ :dataSetHandle_#?
+ :dataSetName_#?
:percentDomain=(percentDomain)?
- :regionStatistic_2270?
- :regionStatistic_2737?
- :smoothStatistic_2717?
+ :regionStatistic_#?
+ :smoothStatistic_%?
+ :originLineX?
:originLineY?
:boxplotLinkWidth=bool?
+ :line_%?
+ :preserveLocations=bool?
+ :creator?
+ :template?
+ :accelerator=bool?
+ :certified=bool?
=> EMPTY
userSource :missing=(listwise | pairwise)? => EMPTY // Related to omit_empty?
-categoricalDomain => variableReference categories? simpleSort?
+categoricalDomain
+ :date=bool?
+=> (categories | variableReference | domainReference)+ simpleSort?
+
+domainReference
+ :ref=ref categoricalDomain
+=> EMPTY
intervalDomain
:date=bool?
-=> ETC
+=> (variableReference | range)*
+
+range
+ :exact=bool?
+ :max=real
+ :min=real
+=> EMPTY
categories
:remove=bool?
=> ETC
simpleSort
- :method[sort_method]=(custom | natural)
-=> categoryOrder
+ :method[sort_method]=(custom | natural | percent)
+ :descending=bool?
+=> categoryOrder?
sourceVariable
:id
:weight=bool?
:shortLabel?
:description?
-=> variable_extension* (format | stringFormat)?
+ :inputDateFormatPattern?
+ :measurementLevel=(ratio)?
+=> variable_extension* (format | stringFormat | numberFormat)?
derivedVariable
:id
:expression?
:shortLabel?
:label?
+ :source?
=> ETC
valueMapEntry :from :to => EMPTY
:cellStyle=ref style
:style=ref style
:axesOutside=bool?
-=> location+ coordinates faceting? point[p1]? facetLayout?
- line[line1]? point[p2]? schema? interval* lineGuide? line[line2]?
- functionGuide*
+=> (location | coordinates | faceting | point | facetLayout
+ | line | schema | interval | lineGuide | functionGuide | edge | path
+ | planeGuide | frameGuide)*
location
:part=(height | width | top | bottom | left | right)
:method=(sizeToContent | attach | fixed | same)
:min?
:max?
- :target=ref (labelFrame | graph | container)?
+ :target=ref (labelFrame | graph | container | legend)?
:value?
:specifiedByUser=bool?
=> EMPTY
coordinates
-=> (dimension | transposeTransform | reflectionTransform | polarTransform)*
+=> (dimension | transposeTransform | reflectionTransform | polarTransform
+ | sameRatioTransform | insetTransform | rectangularTransform
+ | obliqueTransform)*
dimension
:domain?
:unionDomain=bool?
:clusterGap?
:clusterVariable?
-=> ETC
+=> scale? axis*
+
+scale
+ :invert=bool
+ :method[scale_method] // linear | log.safe
+ :origin=real
+ :base=int?
+=> EMPTY
transposeTransform => ETC
:startAngle=real?
=> ETC
+sameRatioTransform
+ :center=bool
+=> EMPTY
+
+insetTransform
+ :x-min=real
+ :x-max=real
+ :y-min=real
+ :y-max=real
+=> EMPTY
+
+rectangularTransform
+ :distance=real
+ :phi=real
+ :theta=real
+ :zeta=real
+=> EMPTY
+
+obliqueTransform
+ :distance=real
+ :foreShortening=real
+ :theta=real
+ :xscale=real
+=> EMPTY
+
faceting
:method[faceting_method]=(nest | cross | dot)?
-=> layer[layers1]* cross layer[layers2]*
+=> layer[layers1]* cross layer[layers2]* | dot
cross => (unity | nest | cross | variableReference)+
+dot => unity variableReference
+
nest => variableReference[vars]+
unity => EMPTY
-variableReference :ref=ref (sourceVariable | derivedVariable) => EMPTY
+variableReference
+ :ref=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
layer
- :variable=ref (sourceVariable | derivedVariable)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
:value
:visible=bool?
:method[layer_method]=(nest)?
facetLevel
:level=int
:gap?
+ :style=ref style?
=> axis?
point
:showCollidingLabels=bool?
:labelCollisionHandling=(none | normal)?
:style=ref style?
- :positionModifier=(none | stack)?
+ :positionModifier=(none | stack | pile)?
:zOrder=int?
+ :clip=(none)?
+=> styleBy? color? labeling* split? x y z?
+// labeling*3 x y z
+
+split
+ :split=bool
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
=> ETC
line
:name?
:style=ref style?
:dot=bool?
- :positionModifier=(none | stack)?
+ :positionModifier=(none | stack | pile)?
:showDiscontinuity=bool?
:zOrder=int?
:coordinates?
-=> ETC
+=> summaryStatistic? smoothStatistic? styleBy? regionStatistic? distributionStatistic? color? x y?
+
+smoothStatistic
+ :method[smoothStatistic_method]=(step-left | linear)
+ :bounded=bool?
+ :degree=int?
+ :kernel=(uniform)?
+=> EMPTY
+
+regionStatistic
+ :alpha=real
+ :degree=int
+ :predictIndividuals=bool
+ :regionType=(linear)
+=> EMPTY
+
+distributionStatistic
+ :distribution=(normal)
+=> EMPTY
lineGuide
:style=ref style?
:segments=int?
:style=ref style?
:value?
+ :zOrder=int?
=> ETC
+edge
+ :dot=bool
+ :positionModifier=(none | stack | pile)
+ :style=ref style
+=> attach? position_element? linkStatistic? x? y? z?
+
+linkStatistic
+ :y=(base)
+=> EMPTY
+
+path
+ :breakRepresentation=(wings)
+ :dot=bool
+ :labelCollisionHandling=(none | normal)
+ :name
+ :showCollidingLabels=bool
+ :style=ref style
+=> styleBy x y
+
+planeGuide
+ :normal=(x | y | z)
+ :style=ref style
+=> EMPTY
+
+frameGuide
+ :complete=bool?
+ :style=ref style
+ :zOrder=int?
+=> EMPTY
+
+attach
+ :target=(point)
+ :targetKey=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
+
+position[position_element]
+ :variable=ref expressionVariable
+=> EMPTY
+
schema
:dot=bool?
:extremeStyle?
:showCollidingLabels=bool?
:labelCollisionHandling=(none | normal)?
:style=ref style?
- :positionModifier=(none | stack)?
+ :positionModifier=(none | stack | pile)?
:zOrder=int?
=> ETC
:style=ref style
:opposite=bool?
:repeat=(never)?
-=> label? majorTicks
+ :combineAxisLabels=bool?
+ :maxSize=dimension?
+ :zOrder=int?
+ :transform=(linear)?
+=> label? majorTicks minorTicks? axisTransformParameter*
label
:style=ref style
:textFrameStyle=ref style?
- :purpose=(title | subTitle | subSubTitle | layer | footnote)?
+ :purpose=(title | subTitle | subSubTitle | layer | footnote | auto)?
=> text+ | descriptionGroup
descriptionGroup
- :target=ref (faceting | interval)
+ :target=ref (faceting | interval | sourceVariable | line)
:separator?
=> (description | text)+
description
:name?
-=> format*
+=> (format | numberFormat)*
majorTicks
:labelAngle=int
:labelFrequency=int?
:stagger=bool?
:markStyle=ref style?
- :base=int?
-=> gridline?
+ :base=real?
+ :delta=int?
+ :position[majorTicks_position]=(outside)?
+=> gridline? format?
+
+minorTicks
+ :markStyle=ref style
+ :number=int
+ :position[minorTicks_position]=(outside)?
+=> gridline? format?
gridline
:style=ref style
:zOrder=int
=> EMPTY
+axisTransformParameter
+ :parameterName=(base-ratio | base-match | derived-ratio | derived-match)
+ :parameterValue=real
+=> EMPTY
+
setCellProperties
:applyToConverse=bool?
=> (setStyle | setFrameStyle | setFormat | setMetaData)* union[union_]?
:showMillis=bool?
:dayType=(month | year)?
:hourFormat=(AMPM | AS_24 | AS_12)?
- :minimumIntegerDigits=int?
+ :minimumIntegerDigits?
:maximumFractionDigits=int?
:minimumFractionDigits?
:useGrouping=bool?
:tryStringsAsNumbers=bool?
:negativesOutside=bool?
:hiddenseparator=bool?
+ :scalingFactor=real?
=> relabel* affix*
numberFormat
:small=real?
:prefix?
:suffix?
+ :hiddenseparator=bool?
=> affix*
stringFormat => relabel* affix*
intersect => where+ | intersectWhere | alternating | EMPTY
where
- :variable=ref (sourceVariable | derivedVariable)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
:include
=> EMPTY
intersectWhere
- :variable=ref (sourceVariable | derivedVariable)
- :variable2=ref (sourceVariable | derivedVariable)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+ :variable2=ref (sourceVariable | derivedVariable | expressionVariable)
=> EMPTY
alternating => EMPTY
:labelCollisionHandling=(none | normal)?
:showCollidingLabels=bool?
:name?
- :positionModifier=(none | stack)?
+ :positionModifier=(none | stack | pile)?
:zOrder=int?
-=> binStatistic? summaryStatistic? styleBy? color? x? y? labeling? footnotes?
+ :zLocation=real?
+=> binStatistic? summaryStatistic* (styleBy | labeling | color | offset)* x? y? footnotes?
+// styleBy labeling x
+// labeling styleBy x y
+// summaryStatistic color labeling x
+// styleBy labeling offset x
+// summaryStatistic*2 color labeling
labeling
:style=ref style?
- :variable=ref (sourceVariable | derivedVariable)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
:connectingLines=bool?
:textFrameStyle=ref style?
-=> (formatting | format | footnotes)*
+ :clamp=bool?
+=> (formatting | format | summaryStatistic | numberFormat | transparency | footnotes | labelLocation)*
+
+offset
+ :domain=ref categoricalDomain
+ :high
+ :low
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
-formatting :variable=ref (sourceVariable | derivedVariable) => formatMapping*
+transparency
+ :affect=(both | main)
+ :domain=ref intervalDomain
+ :low=real
+ :high=real
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
+
+labelLocation
+ :domain=ref intervalDomain
+ :role=(x | y)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
+
+formatting :variable=ref (sourceVariable | derivedVariable | expressionVariable) => formatMapping*
formatMapping :from=int => format?
color
- :affect=(both)?
+ :affect=(both | main)?
:cycle=ref styleCycle?
:variable?
:clamp=bool?
+ :dimension=int?
+ :domain=ref categoricalDomain?
=> ETC
x
- :variable?
-=> ETC
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
y
- :variable?
-=> ETC
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
+
+z
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
+=> EMPTY
styleBy
:styleCycle?
:variable?
:dimension=int?
-=> ETC
+=> EMPTY
binStatistic
:gridType=(square)?
=> ETC
summaryStatistic
- :method[summaryStatistic_method]=(count | range)?
+ :method[summaryStatistic_method]=(count | range | percent | sum | mean | percentCount)?
:symbol[summaryStatistic_symbol]=(circle | square)?
:summaryBase=(coordinate)?
:convertIntervalToSingleValue=bool?
+ :summaryIndex=int?
+ :augment=(missing)?
=> ETC
footnotes
:superscript=bool?
- :variable=ref (sourceVariable | derivedVariable)
+ :variable=ref (sourceVariable | derivedVariable | expressionVariable)
=> footnoteMapping*
-footnoteMapping :definesReference=int :from=int :to => EMPTY
+footnoteMapping
+ :definesReference=int
+ :from=int
+ :to
+=> EMPTY
+
+legend
+ :style=ref style
+ :tickFrameStyle=ref style
+ :tickTextStyle=ref style
+=> location+ label? legendTarget+
+
+legendTarget
+ :target=ref (styleBy | color | line | point)
+ :domain=ref categoricalDomain?
+=> EMPTY
style
:color=color?
:stroke-dasharray?
:text-fit=bool?
:depth?
- :symbol=(circle | ibeam | flower)?
+ :symbol=(circle | ibeam | flower | square | line | acrossDown | cross
+ | polygon | plus | bowtie | star | arrow | none)?
:margin=dimension?
:padding=dimension?
+ :padding-left=dimension?
+ :padding-right=dimension?
+ :padding-top=dimension?
+ :padding-bottom=dimension?
+ :maxAttachedTextHeight=dimension?
+ :opacity=int?
+ :opacity2=int?
+ :labelInside=(preferred | false)?
+ :glyph-sides=int?
+ :glyph-angle=real?
+ :glyph-aspect=real?
=> style*
layerController
extension[container_extension] :combinedFootnotes=(true) => EMPTY
-labelFrame :style=ref style => location+ label? paragraph?
+labelFrame
+ :style=ref style
+=> labelFrame_extension* location+ label? paragraph?
-legend
- :style=ref style?
- :tickFrameStyle=ref style?
- :tickTextStyle=ref style?
-=> ETC
+extension[labelFrame_extension]
+ :graphId=ref graph
+ :position[labelFrame_position]=(title | footnote)
+=> EMPTY
paragraph :hangingIndent=dimension? => EMPTY
-styleCycle
-=> ETC
+styleCycle => cycle+ styleCycle_extension*
+
+cycle => style+
+
+extension[styleCycle_extension]
+ :aesthetic=(color)?
+ :immutables=int?
+=> EMPTY