2017-01-18 3 views
1

Ich habe versucht, die folgenden chart zu implementieren, ohne d3tsv zu verwenden, da ich meine Daten von einer anderen Quelle beziehen.D3.js ersetzen eine TSV-Datei mit einem Array

Nach was in diesen anderen ähnlichen question angegeben wurde, habe ich versucht, diesen Teil des Codes ersetzt:

d3.tsv("data.tsv", type, function(error, data) { 
    if (error) throw error; 

    var cities = data.columns.slice(1).map(function(id) { 
     return { 
      id: id, 
      values: data.map(function(d) { 
       alert(d.date); 
       alert(id); 
       return {date: d.date, temperature: d[id]}; 
      }) 
     }; 
    }); 

mit:

var data=[ 
{date:20111001,temperature:{New York:63.4,San Francisco:62.7,Austin:72.2}}, 
{date:20111001,temperature:{New York:58.0,San Francisco:59.9,Austin:67.7}} 
. 
. 
. 
]; 

Aber ich bekomme die Fehlermeldung:

SyntaxError: missing : after property id 

Was ist das richtige Format für diese Art von Diagramm?

Antwort

2

Da es sich um die Struktur des TSV-Datei:

date New York San Francisco Austin 
20111001 63.4 62.7 72.2 
20111002 58.0 59.9 67.7 
20111003 53.3 59.1 69.4 

Es wird auf ein Array von Objekten durch d3.tsv Funktion (zusammen mit der Zeilenfunktion) analysiert werden, mit dieser Struktur:

[{ 
    "date": "2011-09-30T14:00:00.000Z", 
    "New York": 63.4, 
    "San Francisco": 62.7, 
    "Austin": 72.2 
}, { 
    "date": "2011-10-01T14:00:00.000Z", 
    "New York": 58, 
    "San Francisco": 59.9, 
    "Austin": 67.7 
}, { 
    "date": "2011-10-02T13:00:00.000Z", 
    "New York": 53.3, 
    "San Francisco": 59.1, 
    "Austin": 69.4 
},{ 
    ... 
}] 

Welche muss die Struktur Ihrer data Variable sein.

Achtung: Die Daten hier sind bereits geparst. Wenn Sie die ursprünglichen Werte verwenden, analysieren Sie die Daten in Ihrem data Array (z. B. mit einem forEach).

PS: In Ihrem Array sind New York und San Francisco keine gültigen Eigenschaftsnamen. Sie sollten ein Komma für sie verwenden:

var data = [{ 
    date: 20111001, 
    temperature: { 
     "New York": 63.4, 
     "San Francisco": 62.7, 
     Austin: 72.2 
    } 
}, { 
    date: 20111001, 
    temperature: { 
     "New York": 58.0, 
     "San Francisco": 59.9, 
     Austin: 67.7 
    } 
}];