{
const [svgNode, svg] = getSVG();
const data = olympicData.slice(0, 10);
const countries = data.map(d => d.Country);
const countryScale = d3
.scaleBand()
.domain(countries)
.range([0, W])
.padding(0.2);
svg
.append("g")
.attr("transform", `translate(0,${H})`)
.call(d3.axisBottom().scale(countryScale));
const yScale = d3
.scaleLinear()
.domain([0, 1050])
.range([H, 0])
.nice();
const medals = ["Gold", "Silver", "Bronze"];
const colorScale = d3
.scaleOrdinal()
.domain(medals)
.range(["#FFD700", "#C0C0C0", "#cd7f32"]);
const xScale = d3
.scaleBand()
.domain(medals)
.range([0, countryScale.bandwidth()])
.padding(0.05);
svg.append("g").call(d3.axisLeft().scale(yScale));
svg
.append("g")
.selectAll("g")
.data(data)
.join("g")
.attr("transform", d => `translate(${countryScale(d.Country)},0)`)
.selectAll("rect")
.data(d => [["Gold", d.Gold], ["Silver", d.Silver], ["Bronze", d.Bronze]])
.join("rect")
.attr("x", d => xScale(d[0]))
.attr("y", d => yScale(d[1]))
.attr("width", d => xScale.bandwidth())
.attr("height", d => H - yScale(d[1]))
.style("fill", d => colorScale(d[0]));
return svgNode;
}