Arrays 如何在D3中将数据加载到多个数组中
我已经基于此创建了一个choropleth地图。它工作得很好,但我现在想添加按钮,在tsv数据中的不同值之间切换:“rate”和“total” 我想我需要两个数据集,以便我可以使用按钮在它们之间切换Arrays 如何在D3中将数据加载到多个数组中,arrays,d3.js,Arrays,D3.js,我已经基于此创建了一个choropleth地图。它工作得很好,但我现在想添加按钮,在tsv数据中的不同值之间切换:“rate”和“total” 我想我需要两个数据集,以便我可以使用按钮在它们之间切换 rate = [{"id":"Estonia","rate":"6.6","id":"Latvia","rate":"13.7"}] total =[{"id":"Estonia","total":"457000000","id":"Latvia","total":"286000000"}] ..
rate = [{"id":"Estonia","rate":"6.6","id":"Latvia","rate":"13.7"}]
total =[{"id":"Estonia","total":"457000000","id":"Latvia","total":"286000000"}]
....
<button class="opts" value="rate">Rate</button>
<button class="opts" value="total">Total</button>
d3.selectAll('.opts')
.on('click', function() {
var data = eval(d3.select(this).property('value'));
updateLegend(data);
})
您定义的
比率
和总计
变量是对象数组,而不是对象数组。所以你不能写:
total[d.id] = d.total;
我想你想做的是:
total.push({id: d.id, value: d.total});
一个简单的选择可能是只使用
数据
结构,并在使用总计
之间切换,谢谢!这修复了我的数组。然而,我似乎失去了我的色彩,你知道我应该在这里引用什么吗。enter().append(“path”).attr(“类”,函数(d){return quantize(d.id)}我以前没有看过完整的代码,因为您没有直接使用d3绑定rate
和total
,实际上最好使用一个对象。您的代码可能是这样的:而且,由于rate和total的值非常不同,我认为您应该更新quantize.domain()
作为updateGend
的一部分。
total[d.id] = d.total;
total.push({id: d.id, value: d.total});