意外值NaN解析y属性

时间:2017-02-17 07:13:24

标签: d3.js

我在这里找到了错误:

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']; }))]);

我认为它与第一个映射有关,我想这会返回一个数值数组。

1 个答案:

答案 0 :(得分: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()
	.domain(sales.map(function(sale){ return sale[0]; }));
	
var y = d3.scaleLinear()
	.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>
&#13;
&#13;
&#13;