{
const svg = d3.create("svg").attr("viewBox", [0, 0, width, height]);
console.log(data);
svg
.append('g')
.attr("transform", `translate(0,${height - margin.bottom})`)
.call(d3.axisBottom(xScale));
svg
.append('g')
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(yScale));
var t = svg
.transition()
.duration(2000)
.ease(d3.easeLinear);
const paths = svg
.append('g')
.selectAll('path')
.data(data)
.join('path')
.attr('d', d => line(d.points))
.attr('stroke', d => d.color)
.attr('fill', 'none')
.attr('stroke-width', 2)
.on("mouseover", onHover)
.on("mouseout", onUnhover)
.style('cursor', 'pointer')
.attr("stroke-dasharray", 1500 + " " + 1500)
.attr("stroke-dashoffset", 1500);
paths
.transition(t)
.attr("stroke-dashoffset", 0);
const circles = svg
.append('g')
.selectAll('circle')
.data(data)
.join('circle')
.datum(d => ({ ...d.points[2], color: d.color }))
.attr('fill', d => d.color)
.attr('cx', d => xScale(d.x))
.attr('cy', d => yScale(d.y))
.attr('r', 4);
return svg.node();
}