Aktualisieren Sie die y-Achse eines gebürsteten Flächendiagramms

Ich verwende d3.js und arbeite an einem gebürsteten Flächendiagramm, indem ich es änderedieses Beispiel. Zusätzlich zur Änderung der X-Achse basierend auf dem Pinsel möchte ich, dass die Y-Achse des Diagramms basierend auf den Y-Werten der Daten, die in den Pinsel fallen, neu gezeichnet wird (ähnlich dem Verhalten vonein Google Finance-Diagramm).

Ich habe die Funktionalität zum Laufen gebracht, aber nur so, dass der Pinsel sowohl im x- als auch im y-Raum gezeichnet werden kann. Ich tat dies, indem ich zuerst eine y-Skala zu der hinzufügtebrush Variable:

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

Das machtbrush.extent() Geben Sie das folgende mehrdimensionale Array zurück:[ [x0, y0], [x1, y1] ]. Ich benutze diese Daten dann in derbrush() Funktion zur Neudefinition der x- und y-Domäne für das Fokusdiagramm:

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);
}

Dies funktioniert, aber durch das Definieren der y-Skala in der Pinselvariablen kann der Benutzer jetzt "Kästchen" im Fokusdiagramm ziehen, anstatt nur wie im Originaldiagramm von West nach Ost ziehen zu können.

Im Wesentlichen ist meine Frage:Wie erhalte ich den Wertebereich, der in den Bereich eines Pinsels fällt, und nicht den Bereich des Pinsels selbst? Ist das überhaupt möglich?

Die Pinsel-Dokumentation von d3 istHier.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage