Ich versuche, ein Timeline-Diagramm mit D3.js in angularjs mit der Option zum Scrollen entlang der x-Achse, um Daten zu sehen.wie scrollbare Achse/Schwenk entlang x-Achse in d3js
var rawSvg = element.find("svg")[0];
var width = 1000, height = 300;
var svg = d3.select(rawSvg)
.attr("width", width)
.attr("height", height);
// scale for x and y axis
var xScale = d3.time.scale().domain([new Date(), d3.time.day.offset(new Date(), 5)]).range([0, width]);
var yScale = d3.scale.linear().domain([28, 0]).range([0, height-75]);
var zoom = d3.behavior.zoom().x(xScale).y(yScale).scaleExtent([1,1]).on("zoom", zoomed);
// setting up axis
var xAxis = d3.svg.axis().scale(xScale).orient("bottom").ticks(d3.time.hour, 3).innerTickSize(-(height-75)).outerTickSize(2);
var yAxis = d3.svg.axis().scale(yScale).orient("left").outerTickSize(2).ticks(0).tickFormat(function(d){
return '';
}).tickPadding(10);
var g = svg.append("g").attr("transform","translate(20,10)").call(zoom);
// axis
g.append("g")
.attr("class", "x-axis")
.attr("transform","translate(0,"+(height-75)+")")
.call(xAxis)
.selectAll("text")
.style("text-anchor", "center");
g.append("g")
.attr("class", "y-axis")
.call(yAxis);
function zoomed(){
svg.select('.x.axis').call(xAxis)
// svg.select('.y.axis').call(yAxis)
}
Aber ich bin nicht in der Lage, dies zu erreichen. Ich bekomme ein Diagramm wie folgt.
Aber was ich will, ist das aktuelle Datum Daten anzuzeigen, und dann sollte der Benutzer entlang der x-Achse zu bewegen Lage sein, die Vergangenheit und Zukunft Daten zu sehen.
Ich versuche, etwas wie this zu erreichen.
EDIT
In dem obigen Code war ich nicht in der Lage, die Zoom-Ereignisse zu erfassen, damit ich ein volles Länge Rechteck jetzt angehängt habe ich die Zoom-Ereignisse erfassen kann.
g.append("rect")
.attr("width", width)
.attr("height", height-75)
.style("fill", "none")
.style("pointer-events", "all");
Aber immer noch kann ich nicht entlang der X-Achse scrollen.
Versuchen Sie, so etwas zu tun? https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172 – Gunner
@Gunner Etwas wie dieses https://codepen.io/bennekrouf/pen/jqvqNZ?editors=0010 mit Optionen wie in Ihrem Beispiel, um auf ein bestimmtes Ereignis zu zoomen, aber die Daten werden als Punkt geplottet –