Javascript d3使用d3.map和d3 queue()函数读取csv
我想映射到每个省的数据城市 这是我的示例csv数据。(又称“city.csv”) 绘制完地图后,我想得到省里所有的资料。 例如,如果我输入值'ProvinceA',返回'370451','370452',等等 首先,我必须读取这样的数据Javascript d3使用d3.map和d3 queue()函数读取csv,javascript,csv,d3.js,mapping,Javascript,Csv,D3.js,Mapping,我想映射到每个省的数据城市 这是我的示例csv数据。(又称“city.csv”) 绘制完地图后,我想得到省里所有的资料。 例如,如果我输入值'ProvinceA',返回'370451','370452',等等 首先,我必须读取这样的数据 var popByProvinceName = d3.map() queue() .defer(d3.json, "municipalities.json") .defer(d3.csv, "city.csv", function(d) { d
var popByProvinceName = d3.map()
queue()
.defer(d3.json, "municipalities.json")
.defer(d3.csv, "city.csv", function(d) {
d.citycode = +d.citycode;
popByProvinceName.set(d.province, + d.citycode);
}).await(ready);
function ready(error, data1) {
console.log(popByProvinceName.get("ProvinceA");
}
仅返回一个省的城市代码
3704059
我怎样才能修好它?请帮忙 每次迭代都会覆盖该值。您需要将它们推入阵列:
queue()
//.defer(d3.json, "municipalities.json")
.defer(d3.csv, "city.csv", function(d) {
d.citycode = +d.citycode;
// first time we've seen province
if (!popByProvinceName.has(d.province)) {
popByProvinceName.set(d.province, []);
}
// get the array and add to it
popByProvinceName.get(d.province).push(d.citycode);
}).await(ready);
满满的
另一种稍微干净一点的方法是在ready函数中使用:
function ready(error, data1) {
var nest = d3.nest()
.key(function(d) { return d.province; })
.rollup(function(r){
return r.map(function(d){
return +d.citycode;
});
})
.entries(data1);
满满的
function ready(error, data1) {
var nest = d3.nest()
.key(function(d) { return d.province; })
.rollup(function(r){
return r.map(function(d){
return +d.citycode;
});
})
.entries(data1);