2017-02-17 2 views
2

Я нахожу ошибку где-то здесь:Неожиданное значение NaN разборе у атрибута

d3.csv("Sales Export Friendly 2-14-2017.csv", function(data) {  
    var sales = [] 
    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']; }))]); 

Я считаю, что это что-то делать с первым отображением, который возвращает мне массив числовых массивов, я думаю.

ответ

2

Как известно, sales представляет собой массив массивов, он не содержит объектов.

Это, как говорится, это должно быть:

x.domain(sales.map(function(sale){ return sale[0]; })); 
//index of the element in the inner array------^ 

И:

y.domain([0, d3.max(sales, function(sale){ return sale[1];})]); 
//index of the element in the inner array--------------^ 

Вот демо с этой фальшивке данных:

bookingID,totalPaid 
1,23 
2,19 
3,42 
4,61 
5,22 

var data = d3.csvParse(d3.select("#csv").text()); 
 

 
var sales = data.map(function(d) { return [ +d.bookingID, +d.totalPaid ]; }); 
 

 
var x = d3.scaleBand() 
 
\t .domain(sales.map(function(sale){ return sale[0]; })); 
 
\t 
 
var y = d3.scaleLinear() 
 
\t .domain([0, d3.max(sales, function(sale){ return sale[1];})]); 
 

 
console.log("x scale domain: " + x.domain()); 
 
console.log("y scale domain: " + y.domain());
pre{ 
 
    display:none; 
 
}
<script src="https://d3js.org/d3.v4.min.js"></script> 
 
<pre id="csv">bookingID,totalPaid 
 
1,23 
 
2,19 
 
3,42 
 
4,61 
 
5,22</pre>

+0

Можете ли вы объяснить часть кода csvParse? Когда я попытался адаптироваться от d3.csv к тому, что вы написали, я получил xxxx.csv не селектор. Мне удалось немного по-прежнему придерживаться моего исходного кода, но с помощью продажи [0] и продажи [1] для x и y vars. Затем он отображал метки осей, но полосы не отображались, и я получал такое же неожиданное значение NaN, анализируя ошибку атрибута y. –

+0

Игнорировать 'd3.csvParse', я использую это, потому что я не могу использовать' d3.csv' в фрагменте стека. Просто измените домен, как я уже сказал. Если у вас все еще есть проблемы после исправления шкал, это означает, что у вас есть дополнительные проблемы. В этом случае, пожалуйста, напишите ** другой ** вопрос с новой проблемой. –

Смежные вопросы