{
const height = 500,
margin = {left:50, right: 80, top:10, bottom:50},
iwidth = width - margin.left - margin.right,
iheight = height - margin.top - margin.bottom;
const svg = d3.select(html`<svg width=${width} height=${height}></svg>`);
const x = d3.scaleLinear().domain([0,100]).range([0, iwidth])
const y = d3.scalePow().exponent(exp).domain([0,2500]).range([iheight, 0])
const c = d3.scaleOrdinal(d3.schemeCategory10).domain(d3.set(studentsData.map(d=> d.program)).values())
const r = d3.scaleSqrt().domain([1, 5.0]).range([1, 15]);
const g = svg.append("g").attr("transform", `translate(${margin.left}, ${margin.top})`);
g.append("rect")
.attr("width", iwidth)
.attr("height", iheight)
.attr("x", 0)
.attr("y", 0)
.attr("rx", 10)
.attr("ry", 10)
.style("fill", "#ddd4");
g.append("g").call(d3.axisBottom(x)).attr("transform", `translate(0, ${iheight})`)
g.append("g").call(d3.axisLeft(y))
g.selectAll("circle").data(studentsData).join("circle")
.attr("cx", d => x(d.age))
.attr("cy", d => y(d.valor))
.style("fill", d => c(d.program))
.attr("r", d => r(d.gpa))
return svg.node()
}