If you pan or zoom extensively, you'll notice that the circles are visible beyond the bounds of the axes:
![](https://static.packt-cdn.com/products/9781789342383/graphics/assets/7e7f4115-4706-447c-81ef-108d3f6384f6.png)
To hide elements once they get beyond an axis, we can just add an outer SVG with id="container" around our current <svg> element in index.html:
<svg id="container">
<svg>
<g id="points"></g>
</svg>
</svg>
Now replace all d3.select('svg') code with d3.select('#container'). You can perform a find-and-replace. There should be five instances to change:
d3.select('#container')
.style('width', WIDTH)
.style('height', HEIGHT);
//
// lots of code omitted here, including render() declaration...
//
var bottomAxis = d3.axisBottom(xScale);
d3.select('#container')
.append('g')
.attr('id...