Javascript 访问嵌套d3中的数据
我遇到了一个困扰我几天的问题 我的数据如下所示:Javascript 访问嵌套d3中的数据,javascript,d3.js,nested,Javascript,D3.js,Nested,我遇到了一个困扰我几天的问题 我的数据如下所示: var wrangled = d3.nest() .key(function(d){ return d.WarehouseID; }) .entries(data); 原产地仓库仓库ID 杰克阿尔法1号 杰克·布拉沃2号 C插孔三角形3 D查尔斯阿尔法1号 查尔斯·布拉沃2号 F查尔斯三角洲3号 G B
var wrangled = d3.nest()
.key(function(d){
return d.WarehouseID;
})
.entries(data);
原产地仓库仓库ID杰克阿尔法1号
杰克·布拉沃2号
C插孔三角形3
D查尔斯阿尔法1号
查尔斯·布拉沃2号
F查尔斯三角洲3号
G Beau Alpha 1
博布拉沃2号
我喜欢三角洲3号
J塔科阿尔法1号
塔可布拉沃2号
L塔科三角洲3号
M维戈阿尔法1
N Vigo Bravo 2
O维戈三角洲3号
我想做的是在左边列出一个带原点的块。在仓库中间有一块积木。然后我会把不同的区域放在仓库里 我使用d3.map制作了左侧和中部的块列表:
var warehouse = d3.map(data, function(d){
return d.Warehouse;
})
.keys();
svg.selectAll("DWH")
.data(DWHs)
.enter()
.append("rect")
.attr("x", w/2)
.attr("y", function(d, i) {
return (i * (h / warehouse.length))+ 5;
})
.attr("width", 200)
.attr("height", (h / (warehouse.length + 0.5)));
这很有效。但是,当我想要在仓库块中添加区域时,我需要能够参考该块应该位于哪个仓库中。我认为这在map函数中是不可能的,但在d3.nest中应该是可能的。所以我试过这样的方法:
var wrangled = d3.nest()
.key(function(d){
return d.WarehouseID;
})
.entries(data);
但是当我想要绘制仓库时,我必须访问数据。。所以我想了一些类似的事情:
svg.selectAll("DWH")
.data(wrangled)
.enter()
.append("rect")
.attr("x", w/2)
.attr("y", function(d, i) {
return (i * (h / key.length))+ 5;
})
.attr("width", 200)
.attr("height", (h / (warehouse.length + 0.5)));
但是key.length并不是一个真正的问题,我还没有找到一种方法来测量鸟巢的大小
我刚刚使用了前面的代码,但是当我想要在仓库中绘制区域时,我遇到了另一个问题。我需要能够说,例如,在数据的第一行:区域Jack,必须在仓库Alpha中绘制。使用if语句和嵌套应该是可行的。但我不知道从哪里开始。我一直在试图理解鸟巢,并在它上面找到了不少资源,但没有涉及到当你想用鸟巢画东西时如何访问鸟巢的不同部分。有人能帮我吗
我希望我的问题是清楚的。提前感谢。对于嵌套数据,请使用
forEach
循环并使用d.key
和value
访问数据元素。对于嵌套数据,请使用forEach
循环并使用d.key
和value
访问数据元素。