Wie kann ich mit der D3 Version 4 den Zoom auf die x-Achse beschränken?Horizontaler Zoom mit D3 Version 4?
Beispiel mit uneingeschränktem Zoom:
var sideLength = 190;
var data = [
[0, 0],
[0.5, 0.8],
[1, 0.4]
];
var svg = d3.select("body")
.append("svg")
.attr("width", sideLength)
.attr("height", sideLength);
var yScale = d3.scaleLinear().range([sideLength, 0]);
var xScale = d3.scaleLinear().range([0, sideLength]);
var graphGroup = svg.append("g");
var onZoom = function() {
graphGroup.attr("transform", d3.event.transform);
};
var zoomBehavior = d3.zoom().on("zoom", onZoom);
var line = d3.line()
.x(function(d) {
return xScale(d[0]);
})
.y(function(d) {
return yScale(d[1]);
});
svg.call(zoomBehavior);
graphGroup.selectAll("path").remove();
graphGroup.append("path")
.datum(data)
.attr("class", "line")
.attr("d", line);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3 Zoom</title>
</head>
<body>
<script src="http://d3js.org/d3.v4.min.js"></script>
</body>
</html>
Wissen Sie, wie Verzerrung auf dem graphGroup zu verhindern? Linien innerhalb sehen schlecht aus –
@TomRoggero Was meinst du? Wenn Sie nicht sowohl über x als auch über y zoomen, ändert sich das Seitenverhältnis der Form. – Mehraban