2016-05-19 12 views
0

Ich versuche, this Grafik arbeiten nach meinem Datensatz arbeiten. Siehe this jsfiddle. Für mich ist das Dataset kein Array von Objekten, es ist ein Array von ganzen Zahlen, die meine Y-Achse bezeichnen, und der Index dieser Werte wird meine X-Achse (im Grunde eine sequentielle Menge von Werten).Unterschied zwischen Stack- und Nestfunktionen in d3?

Ich denke, ich bekomme nicht den genauen Zweck der Nest-und Stack-Funktionen. Oder ich denke, ich bin nicht die data1 in der richtigen Art und Weise, wie diese bevölkert bekommen:

var data1=[] 
    data.forEach(function(v, i) { 
    var d = {} 
    d.x = i; 
    d.y = v; 
    data1.push(d); 
    }); 

Kann jemand bitte helfen Sie mir zu verstehen, wo ich falsch werde. Vielen Dank im Voraus

+0

Jeder Datensatz benötigt einen Schlüssel (Gruppe), einen Wert (y-Wert) und ein Datum (x-Wert). Wo wie du nur x und y hat. Und Y ist ein Objekt in sich selbst (versuchen Sie es mit der Protokollierung der Konsole). Also diese Funktion muss sich ändern – thatOneGuy

+0

Also meinst du ich brauche unbedingt ein Datumsfeld? Kann ich darauf verzichten? Und was ist der Schlüssel (Gruppen-) Zweck? –

+0

Nein, Sie nicht, Sie nur die ganzzahligen Werte, die Sie in Ihrem Datensatz haben, anstelle der Daten und der Schlüssel (Gruppe) ist, welche Gruppe sie fallen, wird dies den Pfad zeichnen. So ist jede andere Farbe im Beispiel die andere Gruppe – thatOneGuy

Antwort

1

Hier ist, was ich getan habe: https://jsfiddle.net/thatOneGuy/0xhmphgw/5/

Grundsätzlich ist das Beispiel, das Sie haben gezeigt, ich es zu JSON konvertiert und das ist, was eines der Datenelemente wie folgt aussehen: So

{ 
    "key": "Group2", 
    "value": 12, 
    "date": "04/23/12" 
    } 

ich änderte Ihre Daten ähnlich zu sein wie so:

var data = []; 

oldData.forEach(function(d, i) { 
    //console.log(d) 

    d.forEach(function(e, j) { 

    var thisData = {} 
    thisData.key = i; //i is which group it is in (0,1,2 of the array) 
    thisData.value = e; //value is the integer 
    thisData.date = j; //date (used to keep similar to example) is what index it is in current array 
    data.push(thisData) 

    }) 

}) 

nun Ihre neue Daten zu dieser recht ähnlich sieht:

{ 
    date:0, 
    key:0, 
    value:48746453, 
} 

Hoffentlich verstehen Sie. Grundsätzlich müssen Sie Ihre Daten so manipulieren, dass sie zum Beispiel passen.

Verwandte Themen