Javascript 在D3中使用自己的JSON数据
下面是Javascript 在D3中使用自己的JSON数据,javascript,json,d3.js,Javascript,Json,D3.js,下面是d3.js示例 本例中的数据是具有以下结构的csv文件: 名称 代码 流行音乐 阿尔巴尼亚 ALB 3153731 美国 美国 299846449 大不列颠 GBR 60244834 似乎defer(d3.json,test,function(d){中的d是一个数组 请尝试以下操作: .defer(d3.json, test , function(d) { d.forEach(({code, pop}) => data.set(code, +pop)); }) 我发现我做错了
d3.js
示例
本例中的数据是具有以下结构的csv
文件:
名称
代码
流行音乐
阿尔巴尼亚
ALB
3153731
美国
美国
299846449
大不列颠
GBR
60244834
似乎
defer(d3.json,test,function(d){
中的d
是一个数组
请尝试以下操作:
.defer(d3.json, test , function(d) {
d.forEach(({code, pop}) => data.set(code, +pop));
})
我发现我做错了什么 我不能使用这个部分:
defer(d3.json, test, function(d) { console.log("DATA : " , d.code)
data.set(d.code, +d.pop);})
因为我不能使用带有d3.json
的行函数
更多信息,请尝试将json转换为csv?@KunalMukherjee我计划使用一个输出json文件的API,所以很遗憾这不是一个选项。请尝试
defer(d3.json,test,function(d){console.log('DATA:',d);DATA.set(d.code,+d.pop);})
…你在控制台中看到了什么?@MichaelRovinsky我看到了三个这种格式的对象:0:Object{name:“alba”,code:“ALB”,pop:“0.111”}
@gython数据看起来有效。你能打印你传递给的数据吗?selectAll(…).data(data\u to\u print)。enter()
这个解决方案以这种形式返回一个对象:Object{} “$ALB”:0.111 “$GBR”:0.333 “$USA”:0.222
,而通过解析csv
创建的ò对象如下:对象{“$USA”:0.527,“$GBR”:0.46,“$ARE”:0.72}
。在通过分析json
创建的第一个对象中,括号是空的。@gython我不确定我是否理解它…括号是空的是什么意思?如果添加console.log('LEN:',d.length,'TYPE:',Array.isArray(d))会得到什么
?抱歉,我不是很清楚。如果我console.log
得到的map
被data
变量引用,那么json
和csv
文件的结果看起来就不一样了。如果你看我之前的评论,你会看到Object{}
如果我像你建议的解决方案那样解析json
,括号是空的。而在第二种情况下,键值对在括号中。关于你建议的控制台。log
我得到以下结果:LEN:3 TYPE:true
我试图添加json
,但它不起作用