d3-voronoi-treemap usage
This example uses the d3-voronoi-map plugin to create two Voronoï treemaps comparing the costs of obesity for men and women. Each polygon’s area encodes the monetary cost from a CSV-derived dataset, with the men’s and women’s circle-shaped maps anchored at different coordinates. To ensure consistent and comparable layouts on every reload, the code calls `.initialPosition()` with a pie-based positioning strategy instead of relying on default random site placement. The visualization renders as an SVG using D3.js v5 and includes interactive highlighting triggered by mouse events.
AI-generated descriptionThis block illustrates the use of the d3-voronoi-map plugin. It enhances a previous block by always producing the same Voronoï map on reloads (more explanations below, before the Acknowledgments section). This block is a remake of the HowMuch.net's post The Costs of Being Fat, in Actual Dollars.
The d3-voronoi-map plugin produces Voronoï maps (one-level treemap). Given a convex polygon (here, a 60-gon simulating a circle for each gender) and weighted data, it tesselates/partitions the polygon in several inner cells, such that the area of a cell represents the weight of the underlying datum.
This block always produces the same Voronoï map on reload thanks to the initialPosition() API. This API allows to define the initial positions of each sites, before launching the iterative computation of the Voronoï map. By default, a random positioning is used, which leads to distinct final Vornoï maps on each reload. By setting the initial sites' positions in a repeatable way, reloadings produce always the same final Voronoï map.
In this particular block, controlling initial positions of sites also helps to make the two Voronoï maps (men/women) having the same layout (e.g. placing sites/cells of the same type at the same position), which eases comparison.
An iteration on this block enhances uses the version 2 of the plugin, which displays the live self-arrangement of the Voronoï map.
Acknowledgments to :
- D3.js (v.5)
- d3-voronoi-map plugin
- blockbuilder.org
- (part of) https://github.com/ArlindNocaj/Voronoi-Treemap-Library for a Java implementation