Exibe somente valores inteiros ao longo do eixo y em d3.js quando o intervalo é 0-1 ou 0-2

Eu estou usando o d3js para exibir uma representação em tempo real das visualizações de um site. Para isso eu uso um layout de pilha e atualizo meu conjunto de dados por JSON no momento.

Quando há apenas 1 ou 2 visualizações sendo exibidas no eixo y, o que é dinâmico relacionado à quantidade de visualizações no gráfico, as etiquetas do eixo são: 1 =>0, 0.2, 0.4, 0.6, 0.8, 1, os rótulos dos eixos são: 2 =>0, 0.5, 1, 1.5, 2 Isso não faz sentido para o meu conjunto de dados, pois ele exibe vistas de uma página e você não pode ter metade de uma visualização.

Eu tenho uma escala linear em d3js eu baseio meu eixo y em

var y_inverted = d3.scale.linear().domain([0, 1]).rangeRound([0, height]); 

De acordo coma documentação do rangeRound () Eu só deveria obter valores inteiros fora desta escala. Para desenhar meu eixo eu uso:

var y_axis = svg.append("g")
    .attr("class", "y axis")
    .attr("transform", "translate(0,0)")
    .call(y_inverted.axis = d3.svg.axis()
        .scale(y_inverted)
        .orient("left")
        .ticks(5));

Como é um aplicativo em tempo real, eu atualizo isso a cada segundo chamando:

function update(){
    y_inverted.domain([yStackMax, 0]);
    y_axis.transition()
        .duration(interval)
        .ease("linear")
        .call(y_inverted.axis);
}

yStackMax é calculado a partir de um stacklayout, até onde eu sei, os dados usados ​​para os valores y contêm apenas inteiros.

var yStackMax = d3.max(layers, function(layer) {
    return d3.max(layer, function(d) {
        return d.y0 + d.y;
    });
});

Eu tentei várias coisas para obter um valor adequado para o meu eixo y.

d3.svg.axis()
    .scale(y_inverted)
    .orient("left")
    .ticks(5).tickFormat(d3.format(",.0f"))

Me pegou o sofar mais próximo, mas ainda exibe0, 0, 0, 1, 1, 1

Basicamente o que eu quero é ter apenas 1 tick quandoyStackMax é 1, 2 carrapatos quando é 2, mas também deve funcionar seyStackMax é 12 ou 1.000.000

questionAnswers(5)

yourAnswerToTheQuestion