2016-12-16 7 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 вернуться немного другой объект, то перед обновлением и получил погрешность

выбор.избратьAll (...). фильтр (...). classed не является функционалом п

... так что это не работает:

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

styling(gy); 
+0

Где вы называете 'styling' после перехода? – jkris

+0

сделать это в обновлении 'styling (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