chart2 = {
const svg = d3.create("svg").attr("viewBox", [0, 0, width, height]);
const target = svg
.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-width", 1.5)
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("d", line);
const xaxis = svg
.append("g")
.attr("class", "xaxis")
.attr("transform", `translate(0, ${height - margin.bottom})`)
.call(xAxis);
const yaxis = svg
.append("g")
.attr("class", "yaxis")
.attr("transform", `translate(${margin.left}, 0)`)
.call(yAxis);
const zoomInfo = svg
.append("text")
.attr("y", height)
.text("zoom情報: ")
.attr("transform", `trnslate(0, heigth - 33`);
const zoom = d3
.zoom()
.translateExtent([[0, 0], [width - margin.right, height - margin.bottom]])
.on("zoom", () => {
target.attr("transform", d3.event.transform);
xaxis.call(xAxis.scale(d3.event.transform.rescaleX(x)));
yaxis.call(yAxis.scale(d3.event.transform.rescaleY(y)));
console.log(d3.event.transform);
const zoomRatio = roundFloat(d3.event.transform.k, 2);
const zoomX = roundFloat(d3.event.transform.x, 2);
const zoomY = roundFloat(d3.event.transform.x, 2);
zoomInfo.text(
`zoom情報: 拡大率${zoomRatio} 倍, (x, y):(${zoomX}, ${zoomY})`
);
});
svg.call(zoom);
return svg.node();
}