我在这里找到了错误:
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']; }))]);
我认为它与第一个映射有关,我想这会返回一个数值数组。
答案 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;