我是绝对新的JavaScript和D3。我有问题转换以下的D3代码从版本3到6。
数据类型:
d2.csv:
city,type,price,id
a,c,10,1
a,c,15,2
a,d,30,3
a,d,40,4
a,e,5,5
a,e,10,6
a,e,7,7
b,c,15,8
b,c,20,9
b,d,9,10
b,d,4,11
b,e,12,12
b,e,15,13
D3 V3代码:
data = d3.csv('./data/d2.csv', function (data) {
var nestedData = d3.nest()
.key(function (d) { return d.city; }).sortKeys(d3.descending)
.key(function (d) { return d.type; }).sortKeys(d3.ascending)
.sortValues(function (a, b) { return +b.price - +a.price; })
.entries(data);
console.log(nestedData);
})
请帮助我使用版本6
2条答案
按热度按时间fafcakar1#
您可以使用this answer中的小helper函数的逻辑将
d3.group
返回的嵌套Map
转换回d3.nest
所需格式的Object
。这应该适用于任何嵌套级别。为了适应排序逻辑,在调用
d3.group
之前,对从CSV中获取的对象数组使用d3.ascending
和d3.descending
。工作示例:
第一个
67up9zun2#
显然,在V6中
d3.nest
的there is no direct equivalent。我尝试了d3.group
/d3.groups
/d3.rollup
,但没有得到完全相同的结果...您可以改用下列程式码:
下面是我的fiddle,其中包含经过测试的代码。