chart = {
const svg = d3.create("svg")
.attr("width", width)
.attr("height", config.height);
const rinkRectTop = (config.width-config.rinkWidth)/2;
const rinkRectLeft = (config.height-config.rinkHeight)/2;
const rinkWrapper = svg.append('svg')
.attr('x', rinkRectTop)
.attr('y', rinkRectLeft)
.attr('width', config.rinkWidth)
.attr('height', config.rinkHeight);
rinkWrapper.append('svg:image')
.attr('x', 0)
.attr('y', 0)
.attr('opacity', 0.4)
.attr('width', config.rinkWidth)
.attr('height', config.rinkHeight)
.attr('xlink:href', 'https://media.istockphoto.com/id/459298881/vector/vector-ice-hockey-rink-with-skate-marks.jpg?s=1024x1024&w=is&k=20&c=LqPeqxljyf0MyP9kPRV7IscPTSsrVZI1RN6S2Fjotjg=');
rinkWrapper
.selectAll("svg")
.data(filteredGoalsByQuadrant.keys())
.join("svg")
.attr('x', d => quandrantToXY(d)[0])
.attr('y', d => quandrantToXY(d)[1] - (5+config.iconRadius+filteredGoalsByQuadrant.get(d).length*config.iconRadius))
.attr('width', 5+config.iconRadius*2)
.attr('height', d => 5+config.iconRadius+filteredGoalsByQuadrant.get(d).length*config.iconRadius)
.selectAll("circle")
.data(d => filteredGoalsByQuadrant.get(d))
.join("circle")
.attr("cx", 2+config.iconRadius)
.attr("cy", (d, idx) => 2+(config.iconRadius)+(idx*config.iconRadius))
.attr("r", config.iconRadius)
.attr("stroke", "#333")
.attr("fill", "#af0");
return svg.node();
}