2016-05-13 22 views
1

Ich habe Daten. Lassen Sie uns sagen:Durch alle Werte zwischen allen Datenpunkten in D3 gehen

date,comments 
19-Apr-2016,Today was great. 
21-Apr-2016,Today was not so great. 
1-May-2016,Interesting things happened! 

(Alle Termine als Daten natürlich analysiert werden)

ich durch jeden Tag gehen wollen vom 19. April 2016 bis 1. Mai 2016 und ein Element machen für jeden einzelnen Tage und dann relevante Daten injizieren, wo sie existieren. Zum Beispiel:

19-Apr-2016 - Today was great. 
20-Apr-2016 - <No entry> 
21-Apr-2016 - Today was not so great. 
22-Apr-2016 - <No entry> 
... 
1-May-2016 - Interesting things happened! 

Dies ist der aktuelle Code. Er tut das ehemalige und schafft ein Element für jeden Punkt der Daten:

preview.selectAll("svg") 
    .append("g") 
    .data(sums) 
    .enter() 
    .append("rect") 
    // Drawing code etc. Setting height, class, color, w/e 

Wie kann ich Schleife durch alle Tage, unabhängig davon, ob es gibt Daten für sie?

+0

müssen Sie uns mehr Code zeigen, vorzugsweise Ihre Daten ... – thatOneGuy

Antwort

2

Hier ist der Pseudocode, wie ich dieses Problem angehen werde.

Ihre Summen Objekt Imagine ist ein Array, die von Ihnen

19-Apr-2016 - Today was great. 20-Apr-2016 - <No entry> 21-Apr-2016 - Today was not so great. 22-Apr-2016 - <No entry> ... 1-May-2016 - Interesting things happened!

nun in meiner Funktion der Daten dargestellt speichert, wo ich i wie diese

var start = new Date(2016, 3, 19);//19-Apr-2016 
var end = new Date(2016, 4, 1);//1-May-2016 
for (var d = start; d <= end; d.setDate(d.getDate() + 1)) { 
    //for each date append a group 
    var grp = preview.selectAll("svg").append("g") 
    var myData = //get the data from sums array for which the date is d(in iterator) 
    if(myData){ 
    grp.append("rect").style("stroke", 1) ... 
    }else { 
    //date not in the sums array. 
    } 

} 

Hoffnung tun ziehen würde, das hilft!

0

D3 eingebaute nest ist wahrscheinlich der einfachste Weg, dies zu tun.

Nicht direkt sums binden. Gruppieren Sie die Daten zuerst nach Datum mit und zeichnen Sie Ihr Diagramm basierend auf dieser Gruppierung.

+0

Hey. Ich habe meine Frage ein wenig bearbeitet. Vielleicht macht es jetzt mehr Sinn. – cwj