Bowl of Fruit - General Update Pattern
This example demonstrates the general update pattern in D3 v5, animating a bowl of fruit as apples are eaten, replaced with lemons, and removed. It shows how data joins handle enter, update, and exit selections, with circles transitioning their radius and position over one-second durations. The code uses `scaleOrdinal` for color and radius mappings, `selection.merge()` to combine enter and update states, and chained `transition().duration()` calls for smooth SVG animations. Random IDs track each fruit, ensuring stable element binding across state changes.