Arc Diagram

Connections between named things as arcs: the nodes sit on one horizontal line and each link is a semicircle above it joining its two nodes (the d3 gallery "arc diagram"), so a co-authorship list, a module-dependency graph or a who-talks-to-whom table reads as clusters of short arcs and a few long ones. Node positions are even steps along the line (d3-scale scalePoint with padding 0.5) and the arcs are static SVG, so there is no script. Arc thickness shows the link value (1 to 6 px; all links at 2 px when every value is equal). The optional node group sets the dot and the arc colour (an arc takes its source node's) and a legend names every group, but colour is never the only cue: every dot and arc carries its name, group, link count or value in a hover title, and the hidden tables list every node with its group and link count and every link with its two ends and value. The aria label gives the node and link counts and the most connected node. Node names hang below the line rotated 90 degrees; in a narrow container only every second, fourth or eighth name is drawn (the first always) so that none overlaps. Motion-ready: every moving value reads --p (build progress 0 to 1, default 1) through a --k, so a motion_timeline track on p draws the arcs and then the nodes and the standalone render is the finished picture; reduced motion shows the end state.

Surfaces
webgoogle-apps-script-webmcp-appsandroid
Degraded on
SurfaceNote
pdfPrints the finished picture; no motion
Live preview
Who co-authors with whom (papers together)
Ada Okafor
Ben Haas
Chidi Eze
Diana Rossi
Elif Demir
Fay Chen
Gus Lindqvist
Hal Brandt
Ivy Moreau
Jon Park
SystemsVisionTheoryNo group
Arc thickness shows the link value. In a narrow container only some node names are drawn; the table lists every node and link.
NodeGroupLinks
Ada OkaforSystems4
Ben HaasSystems3
Chidi EzeSystems3
Diana RossiVision3
Elif DemirVision3
Fay ChenVision3
Gus LindqvistTheory4
Hal BrandtTheory2
Ivy MoreauTheory3
Jon ParkNo group2
FromToValue
Ada OkaforBen Haas6 papers
Ada OkaforChidi Eze3 papers
Ben HaasChidi Eze4 papers
Ada OkaforDiana Rossi1 papers
Diana RossiElif Demir5 papers
Diana RossiFay Chen2 papers
Elif DemirFay Chen3 papers
Fay ChenGus Lindqvist1 papers
Gus LindqvistHal Brandt7 papers
Gus LindqvistIvy Moreau2 papers
Hal BrandtIvy Moreau3 papers
Ben HaasGus Lindqvist1 papers
Chidi EzeJon Park1 papers
Jon ParkAda Okafor2 papers
Elif DemirIvy Moreau1 papers
Fields
FieldTypeRequired
titlestring (optional, max 80).optional
nodesarray (required, 2 to 40) of {id (string, max 40: what links refer to), label (string, max 24, default the id), group (optional string, max 20)}. An entry that is not a node, has no id or repeats an earlier id is left out and counted in a note; entries beyond the first 40 are noted and not drawn. With fewer than 2 usable nodes a note replaces the chart.optional
linksarray (optional, 0 to 120) of {source (a node id), target (a node id), value (optional number above 0, default 1)}. A link that is not an object, joins a node to itself, names an id that is not a node or has a value that is not a finite number above 0 is dropped and counted in a note; links beyond the first 120 are noted and not drawn. Links are undirected: the arc is always drawn above the line between its two nodes. Parallel links are drawn on top of one another.optional
order"input" (default), "group" or "degree". input keeps the order of nodes; group sorts by group name and then label (a node without a group first; plain code-unit comparison, ties keep the input order); degree puts the most connected node first (ties keep the input order). Any other value is input.required
unitstring (optional, max 12). Appended to every link value in the titles and the hidden table.optional
versioninteger (optional, default 1). The arc_diagram contract the payload was written for. Only version 1 exists; a higher whole number is drawn as version 1 with a note.optional
Example payload
{
  "type": "arc_diagram"
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:arc_diagram",
  "displayName": "Arc Diagram",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/arc_diagram",
  "capabilities": [
    "web",
    "google-apps-script-web",
    "mcp-apps",
    "android"
  ],
  "description": "Connections between named things as arcs: the nodes sit on one horizontal line and each link is a semicircle above it joining its two nodes (the d3 gallery \"arc diagram\"), so a co-authorship list, a module-dependency graph or a who-talks-to-whom table reads as clusters of short arcs and a few long ones. Node positions are even steps along the line (d3-scale scalePoint with padding 0.5) and the arcs are static SVG, so there is no script. Arc thickness shows the link value (1 to 6 px; all links at 2 px when every value is equal). The optional node group sets the dot and the arc colour (an arc takes its source node's) and a legend names every group, but colour is never the only cue: every dot and arc carries its name, group, link count or value in a hover title, and the hidden tables list every node with its group and link count and every link with its two ends and value. The aria label gives the node and link counts and the most connected node. Node names hang below the line rotated 90 degrees; in a narrow container only every second, fourth or eighth name is drawn (the first always) so that none overlaps. Motion-ready: every moving value reads --p (build progress 0 to 1, default 1) through a --k, so a motion_timeline track on p draws the arcs and then the nodes and the standalone render is the finished picture; reduced motion shows the end state.",
  "representativeQueries": [
    "show a arc_diagram: links between nodes as arcs over a line",
    "connections between named things as arcs: the nodes sit on one horizontal line and each link is a se",
    "render a arc diagram"
  ]
}
← Full ARD catalog
Deploy your own Google Apps Script renderer

The renderer is an open-source Google Apps Script web app. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd a2ui/apps-script-surface/gas-wired-renderer
clasp push && clasp deploy
Full deploy guide →