scatterplot = (dataset, var_x, var_y, var_color, w, h) => {
const width = w
const height = h
const svg = d3.create("svg").attr("width", width + 100).attr("height", height + 100)
const g = svg.append("g").attr("transform", "translate(10, 20)")
const x = d3.scaleLinear().domain([0, d3.max(dataset, d => d[var_x])]).range([0, width])
const y = d3.scaleLinear().domain([d3.max(dataset, d => d[var_y]), 0]).range([0, height])
const c = d3.scaleOrdinal(d3.schemeCategory10).domain(d3.map(dataset, d => d[var_color]))
const yAxis = g => g
.attr("transform", `translate(35, 10)`)
.call(d3.axisLeft(y))
const xAxis = g => g
.attr("transform", `translate(35, ${height + 10})`)
.call(d3.axisBottom(x))
const rect = g.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx", d => x(d[var_x]))
.attr("cy", d => y(d[var_y]))
.attr("r", 3)
.attr("transform", `translate(35,10)`)
.style("fill", d => c(d[var_color]))
g.append("g")
.call(yAxis);
g.append("g")
.call(xAxis);
return svg.node()
}