{
const height = 500;
const svg = d3.create('svg')
.attr('width', width)
.attr('height', height);
const xScale = d3.scaleLinear()
.domain([0, d3.max(gapminder, d => d.fertility)])
.range([margin.left, width - margin.right])
.nice();
const yScale = d3.scaleLinear()
.domain([0, d3.max(gapminder, d => d.life_expect)])
.range([height - margin.bottom, margin.top])
.nice();
const colorScale = d3.scaleOrdinal()
.domain(gapminder.map(d => d.cluster))
.range(d3.schemeTableau10);
const year = 1955;
const data = gapminder.filter(d => d.year === year);
svg.append('g')
.attr('transform', d => `translate(${margin.left}, ${margin.top})`)
.selectAll('path')
.data(data)
.join('path')
.sort((a, b) => b.pop - a.pop)
.attr('opacity', 0.75)
.attr('transform', d => `translate(${xScale(d.fertility)}, ${yScale(d.life_expect)})`)
.attr('fill', d => colorScale(d.cluster))
.attr('d', d => {
const symbol = d3.symbol().size().type();
return symbol()
});
gapminderScatterAxesLabel(svg, height, xScale, yScale, year);
return svg.node();
}