Single-Chart Property Catalog¶
This is the working source-of-truth inventory for the authored control surface of a single Dataface chart.
A chart's control surface is the full set of authored properties available on a single chart. In YAML hierarchy terms, those properties can appear at the root, branch, or leaf level.
This catalog intentionally focuses on the currently supported authored Dataface surface:
- top-level semantic and channel fields such as
type,x,y,color,theta, andformat - typed nested Dataface surfaces such as
style.*andfilters.*(arbitrary Vega-Liteconfig,transform,params, and composition blocks are rejected)
Chart-level mark and encoding are not part of the authored Dataface surface.
See the Single-Chart Property Catalog Schema for build rules and completeness checks, and the Single-Chart Property Gap Report for mismatches or underdocumented surface area discovered during the audit.
For empirical control-surface checks, see the Chart Property Diagnostics Guide.
Catalog Structure¶
The catalog uses two complementary row types:
- Authored property rows record the exact YAML path a chart author writes, such as
style.axis_xorstyle.columns. - Reusable nested schema rows record shared object shapes once, such as
AxisConfig.*,ScaleConfig.*,TableColumnConfig.*, andSparkConfig.*.
We use root, branch, and leaf for YAML depth:
- Root: a property directly on the chart object, such as
xorstyle - Branch: an intermediate property path such as
style.axis_x - Leaf: a final value-bearing property such as
SparkConfig.color
Catalog Status¶
| Pass | Status | Notes |
|---|---|---|
| Pass 1. Raw inventory | In progress | Top-level and style.* rows captured |
| Pass 2. Normalize and classify | In progress | Initial row schema applied across the current authored surface |
| Pass 3. Cross-check docs/examples/tests | In progress | Runtime and schema mismatches reduced; remaining gaps logged separately |
| Pass 4. Publish complete catalog | In progress | Major authored surfaces are cataloged; remaining work is deeper classification of lower-maturity families |
Support Classification¶
When a property is real but not equally mature, the catalog uses three classifications in the notes:
- Canonical: a first-class authored property we expect people to use directly
- Compatibility: an accepted shorthand, repair path, or alias that is still real but not the preferred canonical authoring path
- Low-maturity accepted surface: accepted by code and kept in the catalog, but not yet backed by meaningful single-chart runtime behavior
Default Owner¶
The default owner column describes where the default should primarily live when the property is reused or centralized:
chart: chart-authored by defaultstructure: scaffold/default-layout behaviortheme: visual styling defaultnone: intentionally not owned by chart presets, themes, or structures as a reusable defaultn/a: derived behavior row, not an authored property
Top-Level Properties¶
| Property path | Surface | Family scope | Default owner | Kind | Maps to | Allowed values | Authored status | Notes |
|---|---|---|---|---|---|---|---|---|
query |
top_level |
all authored charts | chart |
semantic | data source binding | query reference or inline query object | authored | Required in practice for most real charts. |
type |
top_level |
all | chart |
semantic | Vega-Lite mark family or Dataface chart family | chart type literal such as bar, line, area, scatter, pie, table, kpi, map, point_map, bubble_map, auto, and other supported mark types. point is an alias for scatter; choropleth is an alias for map; donut is an alias for pie with inner_radius: 0.5. |
authored | auto remains semantic intent rather than a concrete rendered family. |
title |
top_level |
all | chart |
presentation | chart title handling | string | authored | Present across Vega-Lite and non-Vega renderers. |
description |
top_level |
all | chart |
presentation | metadata and rendered description/title attributes | string | authored | Used for tooling and accessible metadata more than geometry. |
x |
top_level |
axis, point, and some specialized charts | chart |
binding | encoding.x.field or equivalent positional binding |
field name | authored | Invalid for pie top-level surface. |
y |
top_level |
axis, point, and some specialized charts | chart |
binding | encoding.y.field or equivalent positional binding |
field name or list of field names | authored | List-valued y enables layered multi-metric patterns for some families. |
color |
top_level |
many families | chart |
binding | encoding.color.field |
field name | authored | Family meaning varies by chart type. |
size |
top_level |
point, scatter, bubble map, and size-aware families | chart |
binding | encoding.size.field |
field name | authored | Forbidden for explicit line and pie top-level surfaces. |
shape |
top_level |
point/scatter and shape-aware families | chart |
binding | encoding.shape.field |
field name | authored | Primarily meaningful for point-family charts. |
theta |
top_level |
pie and arc-like families | chart |
binding | encoding.theta.field |
field name | authored | Sector-family primary numeric binding. |
x_label |
top_level |
axis and point families | chart |
presentation | encoding.x.title |
string | authored | High-level shorthand for axis title override. |
y_label |
top_level |
axis and point families | chart |
presentation | encoding.y.title |
string | authored | High-level shorthand for axis title override. |
label |
top_level |
KPI charts | chart |
presentation | Dataface KPI label text | string | authored | KPI-only text rendered above the headline value. title is rejected on KPI charts. |
format |
top_level |
quantitative charts and KPI | chart |
presentation | value formatting | format string or FormatConfig |
authored | Interacts with style.axis_y.format and style.scale.zero during semantic resolution. |
geo |
top_level |
map families | chart |
semantic | geographic source config | string or object | authored | Primary top-level map source config. |
geo_source |
top_level |
map families | chart |
semantic | built-in geographic source selector | built-in source name | authored | Convenience shorthand that overlaps with geo. |
lookup |
top_level |
map and joined geography charts | chart |
binding | geoshape lookup join key | field name | authored | Exact-key matching behavior matters. |
value |
top_level |
KPI and map fill cases | chart |
binding | KPI value selection or region fill field | field name, number, or string literal | authored | KPI uses value for the headline value; map uses it for region fill semantics. |
projection |
top_level |
map families and projection-aware charts | chart |
semantic | top-level Vega-Lite projection | projection name or object | authored | Primarily relevant to map-family rendering and projection overrides. |
latitude |
top_level |
point_map and bubble_map families |
chart |
binding | encoding.latitude.field |
field name | authored | Top-level latitude is map-specific. |
longitude |
top_level |
point_map and bubble_map families |
chart |
binding | encoding.longitude.field |
field name | authored | Top-level longitude is map-specific. |
background |
top_level |
map families | chart |
presentation | map background layer config | object | authored | Map-specific authored surface. |
href |
top_level |
Vega-Lite-backed row-mark charts | chart |
behavior | encoding.href |
URL field or template string | authored | Click-through link surface. Structured interactions: are not part of the authored chart schema. |
sort |
top_level |
ordered chart families | chart |
semantic | categorical axis sort behavior | sort object | authored | Forbidden for explicit pie/donut top-level surface. |
style.* Properties¶
| Property path | Surface | Family scope | Default owner | Kind | Maps to | Allowed values | Authored status | Notes |
|---|---|---|---|---|---|---|---|---|
style |
style |
many families | none |
container | typed chart-style patch | object | nested_authored | Parent style container. |
style.legend.disable |
style |
charts that encode color |
structure |
presentation | legend visibility | boolean | nested_authored | Canonical authored legend toggle. |
style.axis.grid |
style |
axis-based charts | structure |
presentation | grid visibility | boolean | nested_authored | Typed grid control. |
style.background |
style |
many families | theme |
presentation | chart SVG background wrapper | color value | nested_authored | Applied after SVG rendering as a wrapper rectangle. |
style.color_scheme |
style |
map |
theme |
presentation | color scale scheme | Vega-Lite color scheme name | nested_authored | Specialized map color-scale override. |
| style.orientation | style | bar charts | structure | semantic | bar orientation transform | vertical or horizontal | nested_authored | Canonical Dataface-specific bar orientation. |
| style.axis_x | style | charts with x encodings | structure | presentation | config.axisX / encoding.x.axis | AxisStyle object | nested_authored | Per-axis styling. Uses reusable AxisConfig.* schema rows. |
| style.axis_x.time_unit | style | bar, line, area | chart | semantic | encoding.x.timeUnit | auto, year, yearquarter, yearmonth, yearweek, yearmonthdate, monthofyear, dayofweek, dayofmonth, dayofyear, hourofday, none | nested_authored | Temporal bucketing. Long-form time-part values map to Vega-Lite primitives. |
| style.axis_x.label.time_unit | style | bar, line, area | chart | presentation | encoding.x.axis.labelExpr smart default | same values as style.axis_x.time_unit | nested_authored | Optional label cadence override. Omitted inherits from axis_x.time_unit, except yearweek defaults to month labels. |
| style.axis_x.label.bound | style | axis-based charts | chart | presentation | encoding.x.axis.labelBound | bool or pixel-tolerance number | nested_authored | Hide labels whose bounding boxes overflow the axis range. Symmetric on axis_y. |
| style.axis_x.label.flush | style | axis-based charts | chart | presentation | encoding.x.axis.labelFlush | bool or pixel-tolerance number | nested_authored | Align first/last labels flush with scale range. VL default differs by axis (true for x, false for y). Symmetric on axis_y. |
| style.axis_x.label.offset | style | axis-based charts | chart | presentation | encoding.x.axis.labelOffset | pixel number | nested_authored | Pixel offset of label from its anchor. Negative moves toward chart interior. Symmetric on axis_y. |
| style.axis_x.label.line_height | style | axis-based charts | chart | presentation | encoding.x.axis.labelLineHeight | pixel number | nested_authored | Line height for multi-line labels produced by label.expr returning an array. Symmetric on axis_y. |
| style.axis_x.label.anchor | style | axis-based charts | chart | presentation | encoding.x.axis.labelAnchor | "start", "middle", "end" | nested_authored | Label position relative to tick. Different from label.align (text-anchor of content). Use "end" to attach rotated labels to their tick edge. Symmetric on axis_y. |
| style.axis_y | style | charts with y encodings | structure | presentation | config.axisY / encoding.y.axis | AxisStyle object | nested_authored | Per-axis styling. style.axis_y.format participates in authored format resolution. |
| style.scale | style | charts with quantitative encodings | chart | presentation | config.scale | ScaleStyle object | nested_authored | Global scale config. style.scale.zero participates in zero-baseline handling. |
| style.stack | style | bar, area, and stacking-aware charts | chart | semantic | encoding.y.stack | true, false, "zero", "normalize", "center" | nested_authored | Stacking behavior. false for grouped bars, "center" for streamgraphs. |
| style.palette | style | charts with color encoding | theme | presentation | encoding.color.scale.scheme | named color scheme string | nested_authored | Named scheme shorthand. For explicit colors, use style.range.category. |
| style.columns | style | table charts | chart | presentation | table column config surface | list of column config objects | nested_authored | Uses reusable TableColumnConfig.* rows. |
| style.header_overflow | style | table charts | structure | presentation | table header overflow behavior | string | nested_authored | Table-only style. |
| style.max_bars | style | spark_bar charts | structure | presentation | spark-bar row cap | integer | nested_authored | Specialized spark-bar style. |
| style.labels_hidden | style | spark_bar charts | structure | presentation | hide spark-bar left labels (default: false) | boolean | nested_authored | Specialized spark-bar style. |
| style.counts_hidden | style | spark_bar charts | structure | presentation | hide spark-bar right counts (default: false) | boolean | nested_authored | Specialized spark-bar style. |
| style.bar_height | style | spark_bar charts | structure | presentation | spark-bar row/bar height | integer | nested_authored | Specialized spark-bar style. |
| style.bar_color | style | spark_bar charts | theme | presentation | spark-bar fill color | color value | nested_authored | Specialized spark-bar style. |
| style.bar_background | style | spark_bar charts | theme | presentation | spark-bar track/background color | color value | nested_authored | Specialized spark-bar style. |
filters.* Properties¶
| Property path | Surface | Family scope | Default owner | Kind | Maps to | Allowed values | Authored status | Notes |
|---|---|---|---|---|---|---|---|---|
filters |
filters |
many families | chart |
semantic | executor-side row filtering | object | nested_authored | Variables resolve first, then exact-match AND logic is applied against returned rows. |
Specialized Family Rows¶
| Property path | Surface | Family scope | Default owner | Kind | Maps to | Allowed values | Authored status | Notes |
|---|---|---|---|---|---|---|---|---|
x |
top_level |
histogram |
chart |
binding | histogram bin field | field name | authored | Histogram-specific meaning differs from ordinary bar charts because the field is binned. |
value |
top_level |
map |
chart |
binding | region fill field | field name | authored | Map-family specialized semantic. |
latitude |
top_level |
point_map, bubble_map |
chart |
binding | encoding.latitude.field |
field name | authored | May be auto-detected from common names when omitted. |
longitude |
top_level |
point_map, bubble_map |
chart |
binding | encoding.longitude.field |
field name | authored | May be auto-detected from common names when omitted. |
Reusable Nested Schemas¶
These reusable schema families are still part of the authored surface, even when their child rows are shared instead of duplicated under every authored path:
AxisConfig.*ScaleConfig.*TableColumnConfig.*SparkConfig.*
Derived Behavior Rows To Track In Later Passes¶
These are not authored top-level properties, but they already need to be reserved in the catalog because they materially affect how authored chart properties behave.
| Property path | Surface | Default owner | Notes |
|---|---|---|---|
derived.format_inference |
derived_behavior |
n/a |
format may become "auto" in the intent layer and be inferred from data-aware enrichment. |
derived.zero_inference |
derived_behavior |
n/a |
Zero-baseline behavior is currently mediated through style.scale.zero and enrichment, not a separate authored top-level property. |
derived.type_inference |
derived_behavior |
n/a |
type: auto can resolve to a concrete chart family based on data shape and partial authored intent. |
derived.top_level_vs_nested_precedence |
derived_behavior |
n/a |
Some semantic behavior comes from both top-level shorthand and nested properties, especially formatting and explicit chart-family validation. |
derived.chart_background_wrapper |
derived_behavior |
n/a |
style.background is applied after SVG rendering as a wrapper rectangle rather than as a Vega-Lite-native spec property. |
derived.series_promotion |
derived_behavior |
n/a |
Compatibility preprocessing rewrites series into list-valued y before field-name resolution and semantic enrichment. |
derived.chart_level_filter_resolution |
derived_behavior |
n/a |
Chart-level filters resolve variables first, then apply exact-match AND logic against returned rows in the executor. |
derived.tooltip_defaults |
derived_behavior |
n/a |
Hover tooltips are generated by the renderer; there is no authored interactions.hover schema. |
derived.preaggregated_plot_key_requirement |
derived_behavior |
n/a |
bar, line, area, arc, and heatmap-like families reject duplicate plotted keys and expect pre-aggregated data at render time. |
derived.histogram_auto_binning |
derived_behavior |
n/a |
histogram bins the authored x field automatically and always renders count on the Y axis. |
derived.point_map_field_autodetection |
derived_behavior |
n/a |
point_map and bubble_map auto-detect latitude/longitude fields from common names when top-level bindings are omitted. |
Next Passes¶
- Expand reusable nested schema inventories such as
AxisConfig.*,ScaleConfig.*,TableColumnConfig.*, andSparkConfig.*. - Continue classifying specialized families and compatibility surfaces.
- Cross-check examples and docs against the reduced authored surface so auxiliary guides stay aligned.