我使用D3 v4并且无法使用四叉树工作。它一直为root返回undefined。我不认为它喜欢我提供的数据。
val t =tripAttributesDF.repartition(1)
t.write.mode("overwrite").format("csv")
.save("s3://<Bucket>/Trips_Detail_Table/csv/valid_trips_csv")
答案 0 :(得分:2)
让我们看一下Nodes
数组中的任何给定对象:
[{
radius: 5,
x: 301.25792388143293,
y: 35.626900264457696,
velocityX: 0.43542026096574715,
velocityY: 0.03662733324854717
}]
如您所见,x
和y
坐标是在"x"
和"y"
作为关键字的属性中定义的。
但是,这是x
中d3.quadtree
坐标的默认函数:
function x(d) {
return d[0];
}
对于y
坐标:
function y(d) {
return d[1];
}
如您所见,这些功能无法使用您的对象结构。
<强>解决方案强>:
根据您的对象设置x
和y
坐标:
var quadtree = d3.quadtree()
.x(function(d) {
return d.x
})
.y(function(d) {
return d.y
})
以下是您更改的代码,请检查控制台:
const Nodes = [];
for (let i = 0; i < 10; i++) {
Nodes.push({
radius: 5,
x: Math.random() * 500,
y: Math.random() * 500,
velocityX: Math.random(),
velocityY: Math.random()
});
}
var quadtree = d3.quadtree().extent([
[
0, 0
],
[1500, 1000]
]).x(function(d) {
return d.x
})
.y(function(d) {
return d.y
})
.addAll(Nodes);
console.log(quadtree);
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
&#13;