d3 selection
A set of fifteen circles oscillates vertically in a sine wave pattern, driven by a continuous animation loop. The example demonstrates D3's selection and data-join methods, using `d3.select`, `d3.range`, `selection.data`, `enter`, `merge`, and `exit` to update SVG circle positions every frame. An interval running at 60 frames per second increments a time variable, which modulates each circle's y-coordinate based on its index. The code also includes commented-out alternative using `selection.join`, and renders directly to an SVG canvas sized to the browser window.