Visual types
LeapView visuals are defined in dashboard YAML. Every visual has a required type, a query, and type-specific presentation settings. Choose the visual that best fits the analytical task; rendering is inferred from its type.
Every preview is compiled and queried from the YAML printed beside it against a fixed documentation dataset. Invalid or stale examples fail documentation generation.
Visual previews are deliberately isolated and do not run the dashboard interaction runtime. Keep cross-filter and cross-highlight declarations out of these examples. Use the Filters and interactions guide and the Visual Showcase interaction matrix to test selections with canonical filter state, revisions, target planning, and clear behavior.
Label density and collision policy
Supported built-in ECharts visuals compile presentation.labels into one deterministic policy. hidden suppresses rendered labels while retaining full tooltip and a bounded accessibility summary; automatic shows labels and suppresses collisions; dense uses tighter spacing and type for compact matrices; and always deliberately disables collision suppression. Policies that may suppress labels require tooltipFallback: true; unsupported surfaces such as radar indicators fail compilation instead of silently ignoring the policy.
Display units
Summary values use presentation.displayUnits: auto by default. LeapView selects one shared unit for the complete KPI or numeric-axis scope, renders at most three significant digits, and removes insignificant trailing zeros. The scale never changes independently per tick or mark. Currency, percent, duration, and authored semantic units remain intact; raw values and exact semantic formatting remain available in tooltips, tables, drill detail, exports, and accessibility detail.
Authors can set displayUnits to none, thousands, millions, billions, or trillions. none uses the semantic field's canonical unscaled format. A numeric axis can override the visual policy; an omitted axis value inherits presentation.displayUnits:
presentation:
displayUnits: auto
axes:
- id: primary_y
scale: linear
zero: exclude
displayUnits: millions
tickDensity: dense
Fixed units remain fixed even when the current filtered values are smaller or larger. Use them when comparable visuals must retain the same scale; otherwise prefer auto. Label visibility is a separate explicit choice and is never inferred from number formatting.
Numeric, currency, and percent formats accept optional minimumFractionDigits and
maximumFractionDigits bounds. With neither bound, number uses 0..3 digits,
currency uses 2..2, and percent uses 0..1. A one-sided bound preserves the
format's default on the other side when valid; if it would invert the range, the
default is adapted to the explicit bound. For example, number maximumFractionDigits: 6
keeps a minimum of 0, while currency maximumFractionDigits: 0 resolves to
0..0. Explicit pairs must remain ordered and within 0..12.
Axes are renderer-neutral and may also declare type (automatic, category,
value, or time), minimum/maximum, zero, and inversion (normal or
inverted). Numeric bounds, zero policies, log/linear scales, and number
display units require an effective numeric axis; dateUnit is only valid on an
effective time axis. ticks and grid can be automatic, visible, or
hidden, while labelRotation supports automatic, horizontal, diagonal,
and vertical. Omitted values resolve to the automatic policy in the compiled
IR, keeping defaults explicit and renderer-neutral. Percent stacking owns the
percent formatter, so it cannot be combined with presentation or primary-axis
displayUnits. An explicit dateUnit controls axis labels only; governed field
formatting continues to control tooltip values.
For example, this keeps a time axis readable while inverting a bounded value axis and hiding its grid lines:
presentation:
axes:
- id: x
type: time
dateUnit: month
ticks: visible
labelRotation: diagonal
scale: automatic
zero: automatic
tickDensity: normal
- id: primary_y
type: value
scale: linear
zero: exclude
minimum: 0
maximum: 1000000
inversion: inverted
grid: hidden
displayUnits: millions
tickDensity: dense
Policies also bound label length by Unicode grapheme, set minimum collision spacing, and declare whether selected, anomalous, or threshold-crossing data should win a collision. The same frame, locale, dimensions, and policy always produce the same label decision. Full untruncated values remain in governed tooltips when tooltipFallback is enabled.
Curated tooltips and legends
Use the structured tooltip item form when a visual needs an explicit tooltip
contract. Items are shown in authored order; each item may override the field
label and semantic format. An explicit empty list suppresses tooltip rows. If
omitted, the renderer preserves the legacy field list and then the visual's
default fields. Values are HTML-escaped and null values display as —.
Visible legends on supported Cartesian marks, categorical points, proportional
charts, and radar series accept legendTitle and legendItems. Candlestick
charts are the exception: they support legend position and title, but not
per-item overrides because the renderer exposes one visual-title series rather
than metric aliases. Listed values on other supported series are filtered to
values present in the current data and rendered in authored order, while
canonical series/category names remain unchanged for selection events.
Unlisted values retain deterministic data order. Geographic reference layers
and hierarchy visuals do not expose legend metadata.
For categorical point legends, value addresses the canonical category name:
null and empty categories use (null) and (empty), and values whose string
forms collide use the displayed type-qualified name (for example,
1 [number:1]).
presentation:
tooltip:
- field: status
label: Order status
- field: revenue
label: Net revenue
format:
kind: currency
currency: USD
legend: right
legendTitle: Segment
legendItems:
- value: Consumer
label: Consumer orders
- value: Enterprise
Per-mark presentation
Axis visibility and builder format options
presentation.axisVisible controls axis rendering for Cartesian marks and
point (scatter) visuals. true or false is explicit; omission retains the
renderer default. Do not author this field on proportional, hierarchy, polar,
geographic, KPI, or table-family visuals: unsupported values fail compilation
with the authored presentation.axisVisible path instead of being silently
ignored.
The dashboard builder shows only format options consumed by the selected mark. When switching between Cartesian marks, authored presentation fields are preserved as part of the same-family presentation. If a preserved field is not valid for the target mark, the compiler reports that field rather than silently discarding it. Cross-family switches carry axis visibility only to Cartesian or point targets; unsupported families do not inherit it. Map fixed-camera mode is offered only when the YAML already supplies its center and zoom; the builder does not author map center coordinates. Format values still undergo semantic validation, including numeric domains and the requirement for tooltip fallback when labels can be suppressed.
Cartesian marks support the common labels, labelPosition, displayUnits, and axes fields where the renderer consumes those channels. Candlestick and boxplot do not render data labels, so labels and labelPosition are rejected for those marks. Mark-specific fields are scoped to the renderer paths that consume them:
| Mark | Mark-specific presentation fields |
|---|---|
| Line | legend, stacking, orientation, showSymbols, smooth, step, dataZoom, symbolSize, seriesIntent, referenceLines, referenceBands, eventAnnotations |
| Area | legend, stacking, orientation, showSymbols, smooth, step, dataZoom, symbolSize, seriesIntent, referenceLines, referenceBands, eventAnnotations |
| Bar | legend, stacking, dataZoom, seriesIntent, referenceLines, referenceBands, eventAnnotations |
| Column | legend, stacking, orientation, dataZoom, seriesIntent, referenceLines, referenceBands, eventAnnotations |
| Combo | legend, stacking, orientation, dataZoom, series, seriesIntent, referenceLines, referenceBands, eventAnnotations; conditional line controls (showSymbols, smooth, step, symbolSize) apply with the default line series or when a configured series is line or area |
| Waterfall | dataZoom, referenceLines, referenceBands, eventAnnotations |
| Heatmap | dataZoom |
| Histogram | dataZoom |
| Candlestick | legend, dataZoom, gainColor, lossColor (legend title is supported; legend item overrides are not) |
| Boxplot | dataZoom |
Proportional and polar presentations share the common legend, labels, and displayUnits fields where those channels are meaningful. Mark-specific fields are intentionally scoped to the marks that can render them:
| Mark | Mark-specific presentation fields |
|---|---|
| Pie | rose, labelPosition, outerRadius |
| Donut | rose, centerLabel, labelPosition, innerRadius, outerRadius |
| Funnel | orientation, labelPosition, align, sort |
| Radar | area, maximum |
| Gauge | minimum, maximum, target, showPointer, progressWidth, thresholds |
Hierarchy controls are mark-scoped. layout applies to tree and graph (standard
or circular); initialDepth applies to tree and treemap; roam applies to
graph, tree, treemap, and sunburst; breadcrumb applies to treemap; nodeGap
applies to Sankey; curveness applies to graph and Sankey; and focus applies
to graph. Sankey flow rows are intentionally bipartite: the renderer keeps
source nodes on the source side and target nodes on the target side, with no
free node-alignment control. Unknown presentation keys such as nodeAlignment
are rejected by the closed dashboard schema.
| Family | Supported controls |
|---|---|
| Hierarchy | labels; mark-scoped orientation, initialDepth, roam, layout, breadcrumb, nodeGap, curveness, focus as described above |
| Proportional | legend, labels, displayUnits; pie/donut rose, labelPosition, outerRadius; donut centerLabel, innerRadius; funnel orientation, labelPosition, align, sort |
| Polar | labels, displayUnits; radar legend, area, maximum; gauge minimum, maximum, target, showPointer, progressWidth, thresholds |
Candlestick gain/loss colors are renderer-neutral color intents. Omitted values
use the active theme's success and danger colors; equal open/close values
use the active theme's neutral/muted color, so a flat candle is not presented
as a gain or loss. The same compiled option is used for light, dark, and image
export rendering.
Gauge has no categorical legend; radar can use legend when its aggregate query includes a second governed dimension for series values. A field from another mark's row is rejected during project validation rather than silently changing the rendered visual.
Decision-context capability matrix
All entries below describe renderer-neutral compiled contracts. Unsupported combinations fail project validation; LeapView never accepts an ECharts option object as a substitute.
| Visuals | Axes | Lines and bands | Events | Conditional formatting | Filtered context datasets and bound metadata |
|---|---|---|---|---|---|
| Line, area, bar, column, combo, scatter, waterfall | Yes | Yes | Yes, on the horizontal axis | Yes | Yes |
| Heatmap | Yes | No | No | Yes | Yes |
| Histogram, candlestick, boxplot | Yes | No | No | No | Yes |
| Pie, donut, funnel | No | No | No | Yes (mark_fill, series_color) |
Yes |
| Treemap, sunburst, tree, Sankey, graph | No | No | No | No | Yes |
| Radar, gauge | No | No | No | No | Yes |
| KPI | No | No | No | Value and background | Yes |
| Table, matrix, pivot | Table-owned sorting and formatting | No | No | Cell foreground/background and icons | Static titles; governed cell bindings |
| Map | Renderer-owned geographic contract | No | No | No | No secondary context datasets |
Conditional-format targets are closed by visual family. Point visuals accept only
mark_fill; its field must be one of the rendered x, y, size, color,
label, or tooltip channels, and the icon cue is rendered as the point symbol.
Supported Cartesian marks retain mark_fill, series_color, label_foreground,
and icon. KPI accepts visual_background and kpi_value, both bound to the
current value field, while table, matrix, and pivot accept cell_foreground,
cell_background, and icon. Proportional visuals (pie, donut, and
funnel) currently accept mark_fill and series_color, both bound to the
value field; authored icon cues are rendered in sector labels. Cartesian
conditional formatting is mark-aware across its supported marks.
Row-level mark stroke variation is not part of the rendering contract; use
mark_fill or a label/icon cue instead.
Decision-context field references use stable dataset and field identities. Gradient domains, rule order, null/default outcomes, series order, colors, scale domains, zero policies, units, and tick density are explicit in the compiled IR. Bound titles, subtitles, descriptions, summaries, reference values, and accessibility text recompute when filters or data revisions change and use authored fallbacks when governed data is empty.
Reference lines, bands, and events on a numeric value X axis require numeric values or numeric field reducers. Text values remain valid on category axes; date/time axes retain their temporal values. Incompatible value-axis references fail compilation at the authored value path. Numeric literals on a log axis must be strictly positive; nonpositive data-derived line or event values are omitted at render time, and a band is omitted when either resolved endpoint is nonpositive.
Deleted fields, unknown datasets, incompatible reducers, unsupported mark/feature combinations, and unsafe formatting intents are deployment errors with the binding path in the diagnostic. Authorization remains part of governed query execution; an unauthorized or failed context query produces the visual’s normal error state and does not reveal a hidden value through metadata or a renderer message.
Accessible visual data
Inline charts offer Show data, Copy data, and Export CSV for a bounded preview of up to 100 rows. Multi-dataset visuals, including KPI comparison, goal, and trend data, identify each dataset explicitly and keep its fields separate; rows are not joined across datasets. The row limit applies across all datasets in declared order. The preview and action notices report omitted rows and partial or truncated source data. Server-backed tables and tiled maps use their own data-access surfaces instead of these inline actions.