用three.js ForceGraph写一个力导向图,并生成图谱
时间: 2024-01-21 20:18:57 浏览: 28
好的,下面是基于 three.js 和 ForceGraph 的力导向图的代码示例。
首先,需要引入 ForceGraph 库和 three.js 库:
```html
<script src="https://unpkg.com/@zakiii/three-forcegraph"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.129.0/build/three.min.js"></script>
```
然后,创建一个容器元素用于渲染图形:
```html
<div id="graph-container"></div>
```
接着,在 JavaScript 中初始化 ForceGraph 实例,并设置节点和边的数据:
```javascript
const graphData = {
nodes: [
{ id: 'node1', label: 'Node 1' },
{ id: 'node2', label: 'Node 2' },
{ id: 'node3', label: 'Node 3' },
{ id: 'node4', label: 'Node 4' }
],
links: [
{ source: 'node1', target: 'node2' },
{ source: 'node1', target: 'node3' },
{ source: 'node2', target: 'node4' },
{ source: 'node3', target: 'node4' }
]
};
const container = document.getElementById('graph-container');
const Graph = ForceGraph3D()(container)
.graphData(graphData)
.nodeLabel(node => node.label)
.linkWidth(2)
.d3VelocityDecay(0.2)
.linkDirectionalArrowLength(4)
.linkDirectionalArrowRelPos(1);
```
在上面的代码中,我们创建了一个包含四个节点和四条边的简单图形,并将其渲染到 `graph-container` 容器中。我们使用 `nodeLabel` 方法来设置节点的标签,使用 `linkWidth` 方法设置边的宽度,使用 `d3VelocityDecay` 方法设置速度衰减系数,使用 `linkDirectionalArrowLength` 和 `linkDirectionalArrowRelPos` 方法设置箭头的长度和位置。
最后,我们调用 `Graph` 实例的 `renderer()` 方法来渲染图形:
```javascript
Graph.renderer();
```
运行代码后,将会看到一个力导向图谱的基本示例。
除了上面的示例,ForceGraph 还提供了许多配置选项和事件处理函数,可以根据实际需求进行定制。