Appearance, legend and filtering¶
Colour and size¶
The Appearance panel drives two channels from node properties: colour by
and size by. Clearing one returns it to the app’s structural encoding — type
colour, log-scaled member count.
The candidates in each picker come from the type’s property statistics, not from a list of every property name: a property with ten distinct values over full coverage makes a readable colour channel, and one with sixty unique strings does not.
The same two channels are drivable from outside the browser, which is how an agent recolours the view you are looking at:
curl -s -XPOST $B/api/appearance -H "$C" -d '{"color_by":"city","size_by":"age"}'
The property name is not validated: the viewer’s own statistics decide what is meaningful, and a name nothing carries renders uniformly rather than failing.
Captions¶
Node labels are drawn from each type’s title. Where a type’s title names
nothing — few distinct values, or poor coverage — the server suggests the
property its nodes read best under, and the client draws that on the labels
instead. caption by overrides it per type.
No slice is re-sent when a caption changes: the data was already there.
The legend¶
The legend card sits at the foot of the canvas and covers the colour, size
and link encodings in force. It is built from the same state the renderer’s
arrays are filled from, so it cannot describe an encoding the canvas is not
drawing. window.__kglv.legendEntries is its size.
The filter¶
The filter hides what is already loaded. It never fetches, and the panel says so:
hides what is already loaded — nothing is fetched. Try “type:Wellbore”, or a property you are colouring or sizing by. Use Search above to bring nodes in.
It accepts fuzzy text over node titles, type:Name, and any property the view
has actually fetched. A term it cannot answer without a fetch is refused by
name and points at Search — the tool that does go to the
server.
Every filtered view carries an n of m drawn line. In the debug hook the
same pair is pointCount (live points, excluding what the filter is hiding)
and filteredOut. Neither number is honest on its own.
Export¶
The export card beside the legend writes the current view out as GraphML, GEXF, node CSV, edge CSV or D3 JSON. The scope is the view — exactly the instance nodes on screen, never the whole graph — and an empty view is refused by name rather than answered with an empty file.
See export for the formats and the two caveats that ride with every file.