基本D3.js:创建或更新元素?

时间:2012-08-29 19:49:48

标签: javascript d3.js

基本的D3.js问题,掌握语法!

我正在使用D3而我想创建一个轴(如果它不存在),或更新一个转换(如果它已经存在)。

我当前的代码如下,但此代码每次重新创建轴 - 它不会转换。如何将其更改为过渡?

var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(4).tickSize(6, 3, 0);

updateGraphAndAxes(initialdata);

$('#button').click(function() { 
  updateGraphAndAxes(newdata);
});

function updateGraphAndAxes(newdata) { 
  // update x.domain here using newdata, then... 
  svg.append("g")
   .attr("class", "x axis")
   .attr("transform", "translate(0," + height + ")")
   .call(xAxis);
} 

1 个答案:

答案 0 :(得分:1)

关注this example。方法是这样的:

var xAxisGroup = null;

function updateGraphAndAxes(newdata) { 

    var t = null;

    t = svg.transition().duration(1000);        // Set up transition

    // update x.domain using newdata... 

    if (!xAxisGroup) {
        xAxisGroup = svg.append("g")
            .attr("class", "xTick")
            .attr("transform", "translate(0," + height + ")")
            .call(xAxis);           
    } else {
        t.select('.xTick').call(xAxis);     // Call xAxis on transition
    }
}