2017-06-10 10 views
0

csv関数を使用してd3のデータを解析しようとしています。私は処理中に各データポイントに新しい属性(Region)を与えようとしています。 CSV関数の外でデータポイントを取る関数を定義し、州がアラバマ州であるかどうかを確認し、そうであればRegion属性を "North"または "South"の文字列に割り当てます。私は、コードを実行するとD3でCSVファイルを解析中に属性を追加する

var parseRegion = (function(d){ 
     if(d.State === "Alabama"){ 
     return "South"; 
     } 
     else { 
     return "North"; 
     } 
    }); 

しかし、すべてのデータポイントは、関数自体に割り当てられている「地域」の属性が割り当てられています。つまり、戻り値ではなく実際のコードが割り当てられます。私は何を間違えているのですか?

d3.csv("data.csv").get(function(error,data){ 
if (error) throw error; 

data.forEach(function(d){ 
    d.Deaths = +d.Deaths; 
    d.Population = +d.Population; 
    d.Year = parseDate(d.Year); 
    d.Region = parseRegion; 
}); 

ご協力いただきありがとうございます。結局、私はもちろんアラバマ州以外の州を追加します。

答えて

2

問題は、定義したparseRegion関数を呼び出さないということです。

ですから、d3.csvより一般的

d.Region = parseRegion(d); 

を必要とするがforEachを使用せずにデータを解析する方法を提供します。次の操作を実行できます。

d3.csv("data.csv") 
    .row(function(d) { 
    //Code to parse data row by row goes here 
    }) 
    .get(function(error,data){ 
    //Data is now the whole parsed dataset 
    }); 
+0

ありがとうございます。これは完全に機能し、.row関数の説明に感謝します。 –

関連する問題