2016-05-07 11 views
2

あなたはD3でグラフを作りたいとあなたが(例えば)JSONファイルから入力を読み込むコードは次のようほとんど行く:D3ダイナミックJSONのキー名

d3.json("data/data.json", function(error, data) { 
    data.forEach(function(d) { 
     d.date = parseDate(d.date); 
     d.close = +d.close; 
    }); 

    // Scale the range of the data 
    x.domain(d3.extent(data, function(d) { return d.date; })); 
    y.domain([0, d3.max(data, function(d) { return d.close; })]); 

    svg.append("path")  // Add the valueline path. 
     .attr("d", valueline(data)); 

    svg.append("g")   // Add the X Axis 
     .attr("class", "x axis") 
     .attr("transform", "translate(0," + height + ")") 
     .call(xAxis); 

    svg.append("g")   // Add the Y Axis 
     .attr("class", "y axis") 
     .call(yAxis); 
}); 

この特定の例ではI d3noob.orgから取得したもので、2つのキー(日付と時刻)を持つオブジェクトを持つjsonファイルがあります。 jsonファイルのキー名がわからず、文字列変数を使用する必要がある場合はどうすればよいですか?たとえば:

d3.json("data/data.json", function(error, data) { 
     var var1 = "date"; 
     var var2 = "close"; 
     data.forEach(function(d) { 
      d.var1 = parseDate(d.var1); 
      d.var2 = +d.var2; 
     }); 

は、私はそれをやってみましたが、コンソールは、私がここで間違って何をやっている私にエラー

d3.min.js:1 Error: attribute d: Expected number, "M0,NaNL106,NaNL212,…".

を与えますか?

答えて

4

ブラケット[]表記を使用して、名前が変数に格納されているオブジェクトプロパティにアクセスします。

例:d.var1 = parseDate(d.var1)d[var1] = parseDate(d[var1])になります。

+0

は速い答えのためにあなたに感謝します!それは魅力のように働いた – user1823812

2

はこれを試してみてください:

d3.json("data/data.json", function(error, data) { 
    var var1 = "date"; 
    var var2 = "close"; 
    data.forEach(function(d) { 
     d[var1] = parseDate(d[var1]); 
     d[var2] = +d[var2]; 
    });