← Selected workCase 03 / Pengcheng LuContact ↗

D3.js / data visualization / interaction

SPENDING TREE

Spending Tree turns personal transaction data into a living visual system, making everyday behavior visible, emotional and explorable.
Role
Concept, interaction design, information design, front-end
Tools
JavaScript, D3.js, HTML, CSS
Year
2025
01 / PROBLEM

MAKE SPENDING
FEEL HUMAN

Traditional financial dashboards show totals but hide the emotional reason behind a purchase. I wanted to understand whether taking more time to decide leads to greater satisfaction—and which purchases reduce or increase the guilt I feel around spending.

02 / TOOLS & METHOD

DATA INTO
GROWTH

D3.jsJavaScriptSVGHTML / CSSData encodingInteraction design

Amount becomes branch length; satisfaction becomes vertical growth and trunk color; spending type becomes leaf color; decision time becomes shape.

LIVE DATA VISUALIZATION / D3 LOGIC REBUILT RESPONSIVELY

SPENDING TREE

Amount controls branch length. Shape describes the decision window. Color describes the spending category. Hover a leaf to read its transaction.

$96.22$110.33$10$63.31$10.64$62.8+$72.75+$31.85+$10.15+$0.96+$9.99+$24.99+$38.39+$1.1+$40+$49.54+$53.85$7.59$33.59$16.07$68.06$29.14$43.66$33.59SATISFACTION 5SATISFACTION 1
Survival Survival / Spark Spark● Instant+ Habitual★ Planned
(A)

Question

How can a financial visualization communicate behavior without feeling like another dashboard? The tree metaphor makes accumulation, frequency and category visible as growth.

(B)

Interaction

D3-driven nodes translate transaction groups into a structure that can be explored progressively instead of read as a single static chart.

(C)

Source

The working JavaScript project is available on GitHub. The next documentation pass will add annotated interaction states, data mapping and a live embedded version.

Open the D3.js source on GitHub ↗