我正在尝试创建有关作家的dataviz。我创建了csv文件,然后由d3.csv函数处理。我还定义了另一个函数来处理一些值,而不是字符串(特别是出版年份,页数和价格)。但是,当我将页面加载到浏览器中时,控制台仍将这些值作为字符串返回。您能帮助我理解为什么以及如何解决它吗?谢谢!
<script type="text/javascript" src="d3.js">
var w = 500;
var h = 520;
var padding = 30;
var svg = d3.select("body").append("svg")
.attr("width", w)
.attr("height", h);
var rowConverter = function(d) {
return {
author: d.author,
title: d.title,
publisher: d.publisher,
year: parseFloat(d.year),
pages: parseFloat(d.pages),
price: parseFloat(d.price)
};
}
d3.csv("libri_nuovi.csv", rowConverter, function(data) {
console.log(data);
});
</script>
</body>
答案 0 :(得分:-2)
就像altocumulus在他的评论中指出的那样,您正在使用旧的csv api和新的d3版本。在旧的API中,您可以提供一个回调函数作为最后一个参数。由于new API使用访存,因此它现在返回一个Promise。
对于5.8.0版,您可以像下面这样重写函数:
d3.csv(",", "libri_nuovi.csv", function(d) {
return {
author: d.author,
title: d.title,
publisher: d.publisher,
year: +d.year, // convert "year" column to number
pages: +d.pages,
price: +d.price,
};
}).then(function(data) {
console.log(data);
});
这是未经测试的代码,因为您没有发布初始的json,但我认为它应该可以工作。