Atualize o eixo y de um gráfico de área escovado

Estou usando d3.js e estou trabalhando em um gráfico de área escovado modificandoeste exemplo. Além da mudança do eixo x baseada no pincel, eu gostaria que o eixo y do gráfico fosse redesenhado, com base nos valores y dos dados que estão no pincel (semelhante ao comportamento deum gráfico do Google Finance).

Eu obtive a funcionalidade funcionando, mas apenas de uma maneira que permite que o pincel seja desenhado em ambos os espaços xey. Eu fiz isso primeiro adicionando uma escala y aobrush variável:

var brush = d3.svg.brush()
    .x(x2)
    .y(y2)
    .on("brush", brush);

Isto fazbrush.extent() retorne o seguinte array multidimensional:[ [x0, y0], [x1, y1] ]. Eu então uso esses dados nobrush() função para redefinir o domínio xey para o gráfico de foco:

function brush() {
  var extent = brush.extent();
  x.domain(brush.empty() ? x2.domain() : [ extent[0][0], extent[1][0] ]);
  y.domain(brush.empty() ? y2.domain() : [ extent[0][1], extent[1][1] ]);
  focus.select("path").attr("d", area);
  focus.select(".x.axis").call(xAxis);
  focus.select(".y.axis").call(yAxis);
}

Isso funciona, mas definindo a escala y na variável de pincel, o usuário agora pode arrastar 'caixas' no gráfico de foco, em vez de apenas arrastar o oeste para o leste, como no gráfico original.

Essencialmente, minha pergunta é:Como faço para obter o intervalo de valores que se enquadram na área de um pincel, em vez do intervalo da própria área do pincel? Isso é possível?

documentação do pincel do d3 éAqui.

questionAnswers(2)

yourAnswerToTheQuestion