{"version":"1.0","type":"rich","title":"Bowl of Fruit - General Update Pattern","description":"This example demonstrates the general update pattern for data joins in D3, animating a bowl of fruit as apples are removed and transformed into lemons over time. The visualization uses a React-like component structure, with a reusable `fruitBowl` function that handles enter, update, and exit selections via `selection.selectAll('circle').data(fruits, d => d.id)`. The code explicitly uses D3 v5 APIs including `scaleOrdinal` for color and radius mappings, `transition().duration(1000)` for smooth animations, and `merge` to combine enter and update selections. The initial five apples pop in with a radius of zero, then exit by shrinking back down.","provider_name":"VizHub AI Studio","provider_url":"https://vizhub.com","html":"<iframe src=\"https://vizhub.com/viz/e36624984ad84540b7372cde1edb060b?mode=embed\" width=\"960\" height=\"500\" scrolling=\"no\" frameborder=\"0\"></iframe>","width":960,"height":500,"cache_age":3600}