Bowl of Fruit - General Update Pattern Special Cases
This example demonstrates the general update pattern in D3 with special cases for enter, update, and exit transitions. A bowl of fruit is rendered as SVG circles and text labels, with apples and lemons distinguished by color and radius using `scaleOrdinal`. Users click to double the data values, triggering the update logic that repositions all text elements via `.attr("x", ...)` and `.text()`. The visualization uses d3.select, d3.selectAll, and `.merge()` to handle overlapping enter and update selections, while `.exit().remove()` clears obsolete elements, showcasing the data join and lifecycle management.