2017-02-17 17 views
0
d3.csv("Sales Export Friendly 2-14-2017.csv", function(data) { 
var sales = data.map(function(d) { return [ +d["BookingID"], +d["Total Paid"] ]; }); 
}); 

var x = d3.scaleBand() 
    .domain(sales.map(function(sale){ return sale.bookingID; })) 
    .range([0, width]) 
    .paddingInner([0.1]) 

var y = d3.scaleLinear() 
    .range([height, 0]) 
    .domain([0, d3.max(sales.map(function(sale){ return sale['Total Paid']; }))]);  

私は私のvars xとyを得るのに役立つ配列として販売が欲しいです。私はreferenceErrorを取得しています...これは私がこれをロードする方法と関係していますが、私はそれを理解できません。配列d3としてcsvの2列をロードする方法

答えて

2

D3.csvは非同期です。したがって、あなたのスケールでsales変数を使用しているときまでに、CSVファイルがロードされていない(したがって、salesは定義されておらず、プロパティもありません)。あなたとのそれぞれについて、(2つの列のみを使用している場合でも、全体のcsvファイルがロードされます

d3.csv("Sales Export Friendly 2-14-2017.csv", function(data) { 
    var sales = data.map(function(d) { return [ +d["BookingID"], +d["Total Paid"] ]; }); 

    var x = d3.scaleBand() 
     .domain(sales.map(function(sale){ return sale.bookingID; })) 
     .range([0, width]) 
     .paddingInner([0.1]) 

    var y = d3.scaleLinear() 
     .range([height, 0]) 
     .domain([0, d3.max(sales.map(function(sale){ return sale['Total Paid']; }))]); 

}); 

これに対する最も簡単な解決策は、コールバック関数自体にCSVデータを必要とするものを配置することですd3.csv/tsv/json)。そのため、販売変数は、便宜のためには多少不必要です。

関連する問題