OptionalcollapsedStart collapsed.
OptionalcollapsibleOptionalenabledOptionalentriesDeclared entries, or a function re-resolved against the live graph every time the legend rebuilds (so the list can follow the data).
OptionalfilterableClicking an entry filters the graph. false renders a pure key.
OptionalhighlightHovering an entry reads its category off the canvas: the elements it stands for
keep their look, everything else dims until the pointer leaves. Works on a
filterable: false key too — pointing at a category asks nothing of the graph.
OptionalidStable identity: the section's own filter key (__legend:<id>) and the
section field of the legendToggle event.
OptionalkeyDerived mode: the data key whose distinct values become the entries, each
swatch sampled from the renderer's resolved style. Read off nodes, or off edges
when scope is 'edge'. Also supplies the default predicate when
entries are declared without one.
OptionalmaxEntries shown before the list scrolls.
OptionalpositionWhich corner it docks in. In full mode the default is the right column,
stacked above the minimap — the left one belongs to the mode rail and its
panels. Other modes keep the bottom-left corner.
OptionalscopeWhich collection this section keys on. 'edge' lists the graph's relation
kinds with a line swatch — stroke colour, dash and marker as the renderer
resolved them — and its toggles hide edge layers: the nodes stay put, and so
do the layout, the selection and the camera.
An edge section filters whether or not UI.filter.edgeFacets declares its
key: given one it drives that facet, so the panel and the legend are two views
of one filter; without one it reserves a facet of its own.
OptionalshowShow a per-entry element count.
OptionaltitleHeader text, used verbatim (so it can be translated).
UI.legend— the canvas legend. It is descriptive: it reports the colours the renderer already resolved and never assigns one, so the consumer stays the sole owner of node colouring.Entries come from
key(derived from the data, swatches sampled from the renderer), fromentries(declared), or from both —keythen supplies the default predicate for entries that don't carry one.With neither, the legend keys itself on
render.nodeTypeAccessor(the dimension you already declared fornodeStyleMap) — but only after checking that this dimension really is the colour dimension: every category must resolve to exactly one colour, there must be at least two of them, and few enough of them to be categories. That check is what makes a legend nobody asked for safe;UI.legend: trueskips it,falsesuppresses the legend entirely.To key a graph on more than one dimension at a time, pass LegendGroupOptions instead.
Shown in
fullandlightmodes only.Example