javascript - 故障排除 : D3 line transition is really jerky. 需要remove()?

标签 javascript d3.js

我有一个包含 159 条线的折线图。当图表首次加载时,我希望它们全部绘制为直线,y=5。这样可行。然后我希望他们能够完美地过渡到坎坷的 self 。

嗯,我该死的过渡很不稳定,不漂亮。我认为我需要在这里的某个地方使用remove()。

图在这里。忽略下拉菜单;它们不是原始负载的一部分。 http://bl.ocks.org/greencracker/raw/f37dc463afa15bf17d91/

我认为关键部分可能在这里:

var line = d3.svg.line()
.interpolate("basis")
    .x(function (d) {return x(d.date); })
    .y(function (d) {return y(d.rate) ; });

var flat_line = d3.svg.line()
    .interpolate("basis")
    .x(function (d, i) {return x(d.date); })
    .y(function (d) {return y(5) ; });

然后再往下看:

function lineAnimate(selection) {  // selection must be paths
    selection.transition().duration(1150).ease("linear")
    .attr("d", function (d) {return line(d.values);})
    .style("opacity", 1)
   .style("stroke", "red")
}

var counties = svg.selectAll(".county")
    .data(data, function (d) {return d.key;})
   .enter().append("g")
    .attr("class", function (d) {return d.key + " " + d.wia + " county";})  
    .text(function (d) {return d.key});

 counties.append("path")
    .attr("class", function (d) {return d.key + " " + d.wia + " county" + " line";})
    .attr("id", function (d) {return "a" + d.wia;})
    .attr("d", function (d) {return flat_line(d.values); }) // flat line y=5
    .attr("stroke", "gray")
    .attr("stroke-width", "1px")
    .style("opacity", 0.0)

counties.selectAll("path.line")
    .call(lineAnimate)

最佳答案

同时制作 159 条线的动画需要做大量工作,而且可能没什么可做的。

但是,SVG 渲染器由于必须确定所有这些重叠的半透明线的结果填充而进一步陷入困境。我怀疑如果取消不透明度的更改,您可以获得显着的提升。

最后,您也许可以通过交错动画来改进“线条变形”动画;即第一行将在第二行之前开始(并完成)其动画,然后是第三行,依此类推。这样,只有一部分行在任何给定点进行动画处理。

您可以通过在 .transition() 调用后添加类似 .delay( function(d, i) { return i * 100; }) 的内容来实现此目的。但可能不是您想要的效果。只是一个想法...

关于javascript - 故障排除 : D3 line transition is really jerky. 需要remove()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552184/

相关文章:

javascript - 如何使用 javascript 更改部分 HTML href 元素

javascript - 如何让div在按钮点击时淡入下面最近的div?

javascript - 将复杂的字典发布到 Controller

javascript - 未捕获的类型错误 : Cannot read property 'status' of undefined when running ajax php

javascript - D3 可折叠树不同节点颜色

javascript - 尝试从 JavaScript 转换为 jquery

javascript - 具有不同名称的特征/变量的 d3 多线图

用于快速转换的 D3.js SVG 投影

javascript - 无法正确导出 D3 图表

javascript - 使用 d3.js 在 Canvas 上进行语义缩放