D3 v4四叉树根返回undefined

时间:2017-11-12 06:37:35

标签: d3.js

我使用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")

1 个答案:

答案 0 :(得分:2)

让我们看一下Nodes数组中的任何给定对象:

[{
    radius: 5,
    x: 301.25792388143293,
    y: 35.626900264457696,
    velocityX: 0.43542026096574715,
    velocityY: 0.03662733324854717
}]

如您所见,xy坐标是在"x""y"作为关键字的属性中定义的。

但是,这是xd3.quadtree坐标的默认函数:

function x(d) {
    return d[0];
}

对于y坐标:

function y(d) {
    return d[1];
}

如您所见,这些功能无法使用您的对象结构。

<强>解决方案

根据您的对象设置xy坐标:

var quadtree = d3.quadtree()
    .x(function(d) {
        return d.x
    })
    .y(function(d) {
        return d.y
    })

以下是您更改的代码,请检查控制台:

&#13;
&#13;
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;
&#13;
&#13;