d3js 缩放导致线低于 x 轴(未缩放)

d3js zooming results in lines going below x axis (not being scaled)

当我放大图表时,x/y 轴会调整;但该地区没有;它放大图表,打破 x 轴以下的所有内容(如图所示)。我已禁用 panning/clicking。知道为什么会这样吗?

代码如下:

var parseDate = d3.time.format("%Y-%m-%d %H:%M:%S").parse;

var x = d3.time.scale()
    .range([0, width]);

var y = d3.scale.linear()
    .range([height,0]);

x.domain(d3.extent(data, function(d) { return parseDate(d.x); }));
y.domain([0, d3.max(data, function(d) {
    if (d.y >= 1) {
        return d.y
    }

    return 1;
})]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom")
    .ticks(12);

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .ticks(7);

var varea = d3.svg.area()
    .defined(function(d) { return d.y != null; })
    .x(function(d) { return x(parseDate(d.x)); })
    .y0(height)
    .y1(function(d) { return y(d.y); });

var zoom = d3.behavior.zoom()
    .x(x)
    .y(y)
    .scaleExtent([1,10])
    .on("zoom", function() {
        svg.select(".x.axis").call(xAxis);
        svg.select(".y.axis").call(yAxis);
        svg.select("path.area").attr("d", varea(data));
    });

我通过不在 y 轴上缩放而只在 x 轴上缩放来解决这个问题:

var zoom = d3.behavior.zoom()
    .x(x)
    .scaleExtent([1,10])
    .on("zoom", function() {
        svg.select(".x.axis").call(xAxis);
        svg.select("path.area").attr("d", varea(data));
    });