Practice Bowl of Fruit - General update pattern
This example demonstrates the general update pattern in D3, showing how data joins handle entering, updating, and exiting elements. A row of apples transitions through three timed changes: one fruit is removed, one apple becomes a lemon, and another fruit is deleted. The code uses `d3.select`, `selection.data`, `selection.enter`, `selection.exit`, and `selection.merge` to manage SVG groups, circles, and text elements. Scales from `d3.scaleOrdinal` assign colors and radii based on fruit type. Rendering is SVG-based, with the `renderFruitBowl` function called repeatedly with new fruit arrays.