Ich versuche, meinem Balkendiagramm eine Zoom-Funktion hinzuzufügen. Was ich versuche zu erreichen, ist, wenn ein Benutzer seinen Cursor über einen bestimmten Bereich bewegt, sollten Sie in der Lage sein, in diesen Bereich zu zoomen, und der Wert der x-Achse ändert sich, um die Anzahl der Tage in diesem Monat anzuzeigen. Nach diesem Beispiel http://bl.ocks.org/godds/ec089a2cf3e06a2cd5fc. Ich habe versucht, die gleiche Zoom und Drag-Funktion zu integrieren.D3 Ändern der X-Achse beim Zoomen
Ich habe Probleme mit der Änderung meiner X-Achsenwerte, da ich nach einer Möglichkeit suche, die X-Achse dynamisch ändern zu lassen, wenn ein bestimmter Bereich ausgewählt wird. Wenn Sie jetzt die Balken zoomen, ändern alle die Position, aber meine x-Achsenwerte bleiben gleich (zeigen Sie immer noch die Anzahl der Monate an, während ich die Anzahl der Tage anzeigen möchte).
My X-Achse Code:
var xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
.ticks(d3.time.month)
.tickFormat(d3.time.format('%b %y'))
.tickSize(0)
.tickPadding(8);
Mein Pinselwerkzeug:
function bListener(){
x.domain(brush.empty() ? x.domain() : brush.extent());
svg.select(".x axis").call(xAxis);
svg.selectAll(".bar").attr("transform", function(d) {
console.log(d.date);
return "translate(" + x(new Date(d.date)) + ",0)";
});
}
komplette Code finden Sie hier: http://jsfiddle.net/noobiecode/wck4ur9d/32/ wie ich meine Köpfe gehen fühlen würde geschätzt
Jede Hilfe jede Minute explodieren. Ersetzen
Ihr Zoom in das Balkendiagramm scheint nicht richtig zu funktionieren. Aber um die Achse zu aktualisieren, tun Sie einfach .call (xAxis) auf dem Containerelement und das wird aktualisiert. – thatOneGuy
Mögliches Duplikat von [Wie aktualisiere Achse mit d3.js] (http://stackoverflow.com/questions/16919280/how-to -update-axis-using-d3-js) – thatOneGuy
@thatOneGuy, ich aktualisiere innerhalb der bListener-Funktion, svg.selectAll (". x-Achse"). call (xAxis); – user3837019