chart = {
const margin = ({top: 20, right: 30, bottom: 30, left: 40})
const height = 200
const svg = d3.create("svg")
.attr("width", width)
.attr("height", height)
const x = d3.scaleBand()
.domain(d3.range(dataset.length))
.range([margin.left, width - margin.right])
const y = d3.scaleLinear()
.domain([d3.max(dataset, d => d.age), 0])
.range([margin.top, height - margin.bottom])
let line = d3.line()
.x((d, i) => i * x.bandwidth() + x.bandwidth() / 2)
.y(d => y(d.age) - margin.top)
svg.append("g").attr("transform", `translate(${margin.left}, 0)`).selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", (d, i) => i * x.bandwidth() )
.attr("y", (d, i) => y(d.age))
.attr("width", x.bandwidth())
.attr("height", (d, i) => height - y(d.age) - margin.bottom)
.attr("fill", "none")
.attr("stroke", "black")
svg.append("g").attr("transform", `translate(${margin.left}, ${margin.top})`).selectAll("path")
.data([dataset])
.enter()
.append("path")
.attr("d", d => line(d))
.attr("fill", "none")
.attr("stroke", "black")
let xAxis = g => g
.attr("transform", `translate(0,${height - margin.bottom})`)
.call(d3.axisBottom(x))
let yAxis = g => g
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(y))
svg.append("g")
.call(xAxis);
svg.append("g")
.call(yAxis);
return svg.node()
}