Bowl of Fruit - General Update Pattern
A bowl of fruit demonstrates the D3 general update pattern as circles and labels enter, update, and exit with animated transitions. The example uses D3 v5's `selection.data`, `selection.enter`, `selection.merge`, and `selection.exit` to manage SVG groups. `d3.scaleOrdinal` maps fruit types to colors and radii, while chained `transition.duration` calls animate position, size, and fill over one second. The code mutates a fruits array at timed intervals—removing items, changing a type, and filtering—to show how the visualization responds. Rendering is SVG-based.