2016-12-16 104 views
1

我正在使用syled y軸,如this示例。我正在動態更改數據。軸轉換的作品,但我不知道如何應用相同的風格的新軸。更新轉換中的軸風格

軸更新之前:

var gy = svg.append("g") 
    .attr("class", "y axis") 
    .call(yAxis); 

var styling = function(selection) { 
    selection.selectAll("g").filter(function(d) { return d; }) 
     .classed("minor", true); 
    selection.selectAll("text") 
     .attr("x", 4) 
     .attr("dy", -4); 
}; 

styling(gy); 

軸轉變:

var update = function() { 
    // change data, domain etc 
    // ... 

    // change axis 
    svg.transition() 
    .duration(600) 
    .select(".y.axis") 
    .call(yAxis); 

    // how to apply the same style ?? 
} 

我試過在更新功能類似的東西,但yAxis回報呼籲過渡然後更新之前的一些不同的對象,並得到了錯誤

selection.selectAll(...)。filter(...)。classed is a functio ñ

...所以它不工作:

var gy = svg.transition() 
    .duration(600) 
    .select(".y.axis") 
    .call(yAxis); 

styling(gy); 
+0

轉換後你在哪裏調用'樣式'? – jkris

+0

更新'樣式(d3.select(「。y.axis」));' – Cyril

回答

0

這裏

var gy = svg.transition() 
    .duration(600) 
    .select(".y.axis") 
    .call(yAxis) 

gy是過渡的對象,所以當你做:

styling(gy); //will not work, because styling expects a selection object. 

所以應該是

styling(d3.select(".y.axis")); //inside update function