javascript - d3.js 强制定向图不起作用

标签 javascript d3.js three.js analytics visualization

每当我尝试启动我的代码时,我都会在开发控制台中收到以下错误。错误如下:

    Error: missing: 1 3d-force-graph:5:22166
    TypeError: r.attributes.position is undefine

此处显示错误代码的实时版本: https://s3.amazonaws.com/mnas/index.html

实际代码在这里:

<!DOCTYPE html>
<meta charset="utf-8">
<head>
  <style> body { margin: 0; } </style>
   <script src="//unpkg.com/3d-force-graph"></script>
  <!--<script src="3d-force-graph.js"></script>-->
</head>

<body>
  <div id="3d-graph"></div>

  <script>
    const elem = document.getElementById('3d-graph');
    const Graph = ForceGraph3D()
      (elem)
    .graphData({"nodes":[{ "name": "Myriel","group":  1 },{ "name": "Napoleon","group":  1 }], links: [ { "source":  1,  "target":  2,  "value":  1 }]})
        .nodeLabel('id')
        .nodeAutoColorBy('group')
        .onNodeHover(node => elem.style.cursor = node ? 'pointer' : null)
     .onNodeClick(node => {
          // Aim at node from outside it
          const distance = 40;
          const distRatio = 1 + distance/Math.hypot(node.x, node.y, node.z);

          Graph.cameraPosition(
            { x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio }, // new position
            node, // lookAt ({ x, y, z })
            3000  // ms transition duration
          );
        });
  </script>
</body>

这是以下代码的分支: https://github.com/vasturiano/3d-force-graph/blob/master/example/click-to-focus/index.html

我唯一改变的是我替换了 jsonUrl 方法,这样我就可以传递静态数据。

我已经尝试通过 Dev Console 进行调试,但似乎无法找出问题所在。

感谢任何帮助。

最佳答案

您缺少“id”属性

<!DOCTYPE html>
<meta charset="utf-8">
<head>
  <style> body { margin: 0; } </style>
   <script src="//unpkg.com/3d-force-graph"></script>
  <!--<script src="3d-force-graph.js"></script>-->
</head>

<body>
  <div id="3d-graph"></div>

  <script>
    const elem = document.getElementById('3d-graph');
    const Graph = ForceGraph3D()
      (elem)
    .graphData({"nodes":[{ "name": "Myriel","group":  1, "id" : 1},{ "name": "Napoleon","group":  1, "id": 2 }], links: [ { "source":  1,  "target":  2,  "value":  1 }]})
        .nodeLabel('name')
        .nodeAutoColorBy('group')
        .onNodeHover(node => elem.style.cursor = node ? 'pointer' : null)
     .onNodeClick(node => {
          // Aim at node from outside it
          const distance = 40;
          const distRatio = 1 + distance/Math.hypot(node.x, node.y, node.z);

          Graph.cameraPosition(
            { x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio }, // new position
            node, // lookAt ({ x, y, z })
            3000  // ms transition duration
          );
        });
  </script>
</body>

关于javascript - d3.js 强制定向图不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960560/

相关文章:

javascript - console.log ('true text' || 很明显吗?真的 ? 'text' : 'text1' ); logs 'text' ?

javascript - 不允许在 JavaScript 计算器上进行正确算术运算的代码

javascript - 具有奇数个顶点的 D3.js 树,未显示边

javascript - THREE.js TrackballControls 如何将旋转中心更改为不在 Canvas 中心?

javascript - 绕过 jQuery.autocomplete(1.02) 上的所有缓存

d3.js - 反转 d3.zoom 比例和翻译的顺序

raphael - 让 d3.js 与 raphael.js 一起工作

javascript - 如何使用 Three.js 从 MySql 数据库加载纹理?

three.js - Material.alphaTest 是什么意思?

javascript - Datepicker CSS 改变日期的颜色