You could use svg fragment identifiers to show different areas assuming the different <g>
elements are at different positions e.g.
<html>
<body>
<embed src="shapes.svg#svgView(viewBox(50,0,100,100))" style="width:100px; height:100px" type="image/svg+xml" />
<embed src="shapes.svg#svgView(viewBox(0,200,100,100))" style="width:100px;height:100px" type="image/svg+xml"/>
<embed src="shapes.svg#svgView(viewBox(0,400,100,100))" style="width:100px;height:100px" type="image/svg+xml"/>
</body>
</html>
The above example shows embed but the idea applies equally well to background images.
Another way would be SVG Stacks which works by having all the drawings on top of each other and then just displaying the one you want to see using CSS.