Ich möchte einige Zeitreihendaten, die nicht kontinuierlich ist (Lücken in den Daten für Wochenenden, Feiertage, etc ..). Es sind tägliche Daten.D3 Non-Continuous Dates Domain gibt Lücken auf der X-Achse
Die Daten sieht etwa so aus:
date,value
1/2/15,109.33
1/5/15,106.25
1/6/15,106.26
1/7/15,107.75
1/8/15,111.89
1/9/15,112.01
1/12/15,109.25
1/13/15,110.22
...
So definiere ich meine x
und y
scales
:
var x = d3.time.scale().range([0, width]);
var y = d3.scale.linear().range([height, 0]);
Und die Domain aus der Liste meiner Quelldaten festgelegt:
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.value; }));
Die Problem ist jedoch, dass meine Daten Lücken haben Sie. Und meine X-Achse enthält jetzt die fehlenden Daten (d3.time.scale()
macht das automatisch, weil es auf einen kontinuierlichen Bereich abbildet?).
.extent()
findet die Max- und Minwerte in date
, dann gibt .domain()
diese Max- und Minwerte als den Bereich für die X-Achse zurück. Aber ich bin mir nicht sicher, wie ich mit Lücken umgehen soll und gebe die Nicht-Lücken-Daten in den Bereich zurück.
Also meine Frage ist: Wie kann ich meine X-Achse Bereich nur die Daten, die in meinem Datensatz sind? Und nicht "die Lücken ausfüllen". Sollte ich mit dem d3.time.scale().range()
spielen? oder muss ich einen anderen scale
verwenden?
Was ist der richtige Weg, dies zu tun? Kann mir bitte jemand in die richtige Richtung zeigen oder ein Beispiel geben? Vielen Dank!
Auch bitte, ich möchte mit nur einfach d3 und Javascript lösen. Ich bin nicht daran interessiert, Abstraktionsbibliotheken Dritter zu verwenden.
Sie könnten eine Ordinalskala verwenden. –