{
let w = 800;
let h = 500;
let svg = d3
.create("svg")
.attr("width", "100%")
.attr("viewBox", [0, 0, w, h])
.style("max-width", `${w}px`)
.style("overflow", "visible")
.style("margin", "20px");
let time_extent = d3.extent(aapl, (o) => o.Date);
let price_extent = d3.extent(aapl, (o) => o.High);
let time_scale = d3.scaleTime().domain(time_extent).range([0, w]);
let y_scale = d3.scaleLinear().domain(price_extent).range([h, 0]);
let path = d3
.line()
.x((d) => time_scale(d.Date))
.y((d) => y_scale(d.High));
svg
.append("path")
.attr("d", path(aapl))
.attr("fill", "none")
.attr("stroke", "black")
.attr("stroke-width", 1);
svg
.append("g")
.attr("transform", `translate(0, ${h})`)
.call(d3.axisBottom(time_scale).tickSize(0));
svg.append("g").call(d3.axisLeft(y_scale).tickSize(0));
return svg.node();
}