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.