chart = {
replay;
const svg = d3.create("svg")
.attr("viewBox", [-30, 0, width+50, height]);
svg.append("g")
.call(xAxis);
svg.append("g")
.call(yAxis);
const l1 = length(line(data_1));
svg.append("path")
.datum(data_1)
.attr("fill", "none")
.attr("stroke", "green")
.attr("stroke-width", 2.5)
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("stroke-dasharray", `0,${l1}`)
.attr("d", line)
.transition()
.duration(8000)
.ease(d3.easeLinear)
.attr("stroke-dasharray", `${l1},${l1}`);
svg.append("g")
.attr("fill", "white")
.attr("stroke", "black")
.attr("stroke-width", 2)
.selectAll("circle")
.data(data_1)
.join("circle")
.attr("cx", d => x(d.x))
.attr("cy", d => y(d.y))
.attr("r", 3);
const l2 = length(line(data_2));
svg.append("path")
.datum(data_2)
.attr("fill", "none")
.attr("stroke", "blue")
.attr("stroke-width", 2.5)
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("stroke-dasharray", `0,${l2}`)
.attr("d", line)
.transition()
.duration(8000)
.ease(d3.easeLinear)
.attr("stroke-dasharray", `${l2},${l2}`);
svg.append("g")
.attr("fill", "white")
.attr("stroke", "black")
.attr("stroke-width", 2)
.selectAll("circle")
.data(data_2)
.join("circle")
.attr("cx", d => x(d.x))
.attr("cy", d => y(d.y))
.attr("r", 3);
svg.append("circle").attr("cx",85).attr("cy",100).attr("r", 10).style("fill", "green")
svg.append("circle").attr("cx",85).attr("cy",130).attr("r", 10).style("fill", "blue")
svg.append("text").attr("x", 100).attr("y", 100).text("Tested Total").style("font-size", "20px").attr("alignment-baseline","middle")
svg.append("text").attr("x", 100).attr("y", 130).text("Newly Tested").style("font-size", "20px").attr("alignment-baseline","middle")
return svg.node();
}