Javascript d3我可以就地重新计算数据吗?

Javascript d3我可以就地重新计算数据吗?,javascript,svg,scale,d3.js,Javascript,Svg,Scale,D3.js,我有一个折线图,完整的数据数组附在折线图上。我想在数据中从使用值列更改为pct(百分比)列。有没有一种方法可以做到这一点,即使用DOM中已有的值而不向其传递新的数据集 就我所知- 这里发生了什么 // now redraw the line to use pct line.y(function(d) { return yScale(d.pct); }); vis.selectAll("lines") .t

我有一个折线图,完整的数据数组附在折线图上。我想在数据中从使用值列更改为pct(百分比)列。有没有一种方法可以做到这一点,即使用DOM中已有的值而不向其传递新的数据集

就我所知-

这里发生了什么

    // now redraw the line to use pct
    line.y(function(d) {
                return yScale(d.pct); });

     vis.selectAll("lines")
                .transition()
                .duration(500)
                .ease("linear");
}

您的数据已加入,因此您只需更新您的选择:

var yPctScale = d3.scale.linear()
    .domain([0, 100])
    .range([height - padding, padding]);

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

vis.selectAll(".lines")
    .transition().duration(1500).ease("sin-in-out")
    .attr("d", pct_line);
var yPctScale = d3.scale.linear()
    .domain([0, 100])
    .range([height - padding, padding]);

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

vis.selectAll(".lines")
    .transition().duration(1500).ease("sin-in-out")
    .attr("d", pct_line);