Charts / CH-FLO-03
CH-FLO-03 . family FLO

NETWORK

nodes at supplied positions, edges weighted by strength. Needs: nodes [{id, at, value}] + edges [{a, b, weight}]; positions are data.

flowpatterncorrelation

DL-01 AGRAW
System D touches six of seven systems D 24 interfaces A 10 B 12 C 8 E 9 F 7 G 5 Source: sample dataset v1, 2026-07-12

Use when

  • dependency and connection structures: who touches whom
  • hub-and-spoke risk: the node everything routes through

Do not use when

  • force-directed layouts (renderer randomness breaks determinism)
  • more than ~15 nodes (structure drowns)

See instead

Alternatives

  • CH-FLO-02 (directional volumes)
  • CH-TAB-02 (exact adjacency)

Rules

  • positions are SUPPLIED: layout is authored once, rendered forever
  • node AREA encodes value; edge width encodes weight
  • every node labeled with id and value

Never do this

  • force-directed or random layouts
  • unlabeled nodes
  • edge crossings read as meaning

QA before delivering

  • supplied positions only
  • area-true nodes
  • highlight <= 1
  • source present

Data shape

titleaction title naming the hub
sourcebottom-left always
unitnode size unit
notecoordinates are author-supplied unit-square (0-100) geometry; the renderer scales, the author owns projection and aspect
nodes[{id, at: [x,y], value, highlight?}]
edges[{a, b, weight}]
Sample data (golden)
{
  "title": "System D touches six of seven systems",
  "eyebrow": "INTERFACE MAP",
  "source": "Source: sample dataset v1, 2026-07-12",
  "unit": "interfaces",
  "nodes": [
    {
      "id": "D",
      "at": [
        50,
        45
      ],
      "value": 24,
      "highlight": true
    },
    {
      "id": "A",
      "at": [
        20,
        20
      ],
      "value": 10
    },
    {
      "id": "B",
      "at": [
        75,
        15
      ],
      "value": 12
    },
    {
      "id": "C",
      "at": [
        85,
        55
      ],
      "value": 8
    },
    {
      "id": "E",
      "at": [
        70,
        85
      ],
      "value": 9
    },
    {
      "id": "F",
      "at": [
        25,
        80
      ],
      "value": 7
    },
    {
      "id": "G",
      "at": [
        10,
        50
      ],
      "value": 5
    }
  ],
  "edges": [
    {
      "a": "D",
      "b": "A",
      "weight": 4
    },
    {
      "a": "D",
      "b": "B",
      "weight": 6
    },
    {
      "a": "D",
      "b": "C",
      "weight": 3
    },
    {
      "a": "D",
      "b": "E",
      "weight": 5
    },
    {
      "a": "D",
      "b": "F",
      "weight": 2
    },
    {
      "a": "D",
      "b": "G",
      "weight": 2
    },
    {
      "a": "A",
      "b": "B",
      "weight": 2
    },
    {
      "a": "C",
      "b": "E",
      "weight": 1
    },
    {
      "a": "E",
      "b": "F",
      "weight": 1
    }
  ]
}