Machine-readable page content
Canonical: https://semiotic.nteract.io/examples/good-earth-lying-flat
From The Good Earth to Lying Flat
A CAUSAL SANKEY / SECURITY, RISK, WITHDRAWAL
FROM THE
GOOD EARTH
TO LYING FLAT
Housing, credentials, disciplined work, and visible consumption first promised security and mobility. When their returns became unreliable, the same security-seeking behavior began producing precaution, delayed adulthood, involution, and withdrawal.
The modern substitute for land becomes a new terrain of risk. ↓READ DOWNSix authored openings move from inherited insecurity to social outcomes.≈READ WIDTH AS EMPHASISRibbon width is an interpretive causal-emphasis unit, never a count of people.◌CHANGE THE LENSFocus a claim family to make the argument inspectable rather than falsely settled.01 / A security system turns into a risk systemFrom The Good Earth to Lying Flat
How the search for family security becomes accumulation, involution, and withdrawal
CLAIM LENS
The greatest early flow treats property as family security. Housing, credentials, consumption, and overwork then produce housing burden, job mismatch, involution, and lost future confidence. Involution and low confidence branch toward precautionary saving, lying flat, low-energy rat people, and defensive stability seeking before weak consumption, delayed family formation, and privatized retreat.
Vertical openings are fixed to the six authored stages—not inferred from graph depth. Node height holds each stage’s maximum incoming or outgoing causal emphasis. Each node hatches its dominant incoming ribbon color through its outgoing family color; ribbon opacity signals confidence (high, medium, low). Interpretive causal-emphasis units. Values express the relative importance of a pathway within this model; they are not survey estimates or population counts.
02 / Three readings worth tracing
The Sankey makes a contested causal argument visible.
The Wang Lung path / historical inversionThe object meant to defeat insecurity becomes a source of insecurity.Scarcity memory flows through property as family security and housing-led accumulation, then returns as housing burden, uncertain wealth, weak confidence, precautionary saving, and weak consumption.The meritocracy path / diminishing returnsCredentials stop delivering the promise they were built to carry.The growth bargain turns education into a mobility instrument. When the credential arms race meets job mismatch and involution, disciplined striving can feel positional rather than productive—and lying flat becomes legible.The adaptive fork / same pressure, different conductInsecurity produces both disengagement and hyperconformity.Involution branches to lying flat, low-energy rat people, and defensive stability seeking. Refusal, exhausted retreat, and intensified competition for protected employment share a loss of confidence upstream. 03 / What this diagram does and does not claimA causal map with its uncertainty left on the page
This is not a forecast, a survey, or an attempt to calculate how many people move from one cultural position to another. It renders a structured interpretation of how insecurity is transmitted through institutions and then expressed in multiple adaptive responses.
A ribbon value is a comparative emphasis inside this argument. It must not be read as a probability, percentage, population share, or literal transformation rate.
“Lying flat” and “rat people” remain separate because strategic refusal is not the same as aestheticized, low-energy retreat. Defensive stability seeking remains separate too: the same loss of confidence can produce less competition for upside and more competition for institutional safety.
04 / Pin stages; keep claims inspectableA Sankey can make an argument legible without pretending it is a census.
The important ingredients are explicit temporal extents, source-family color, confidence-aware ribbon opacity, and a selection-backed claim lens that does not rewrite the topology.
JSX
import { LinkedCharts, ProcessSankey, useSelectionActions } from "semiotic" // Docs demos use layoutExecution="sync" for deterministic first paint. // Production apps should use "auto" (default) so large graphs can use a worker. // The xExtent pins every concept to one of six authored stages. // Each edge has start/end times from its source and target stages. <ProcessSankey {...historyRiverDefaults} nodes={concepts.map((node) => ({ ...node, xExtent: [node.stage - 0.12, node.stage + 0.12], }))} edges={claims.map((edge) => ({ ...edge, startTime: stageOf(edge.source) + 0.12, endTime: stageOf(edge.target) - 0.12, }))} domain={[-0.22, 5.22]} axisTicks={sixStageHeadings} colorBy="family" edgeOpacity={(edge) => confidenceOpacity[edge.confidence]} nodeSizing="max" styleRules={[{ style: (node) => ({ fill: nodeHatches[node.id] }), // HatchFill }]} accessibleTable /> // A named selection leaves the geometry intact and fades nonmatching ribbons. // selectPoints({ claimLens: ["economic", "__node__"] })