d3.js实现人物关系图谱
时间: 2024-02-04 14:07:13 浏览: 137
D3.js实现人物关系图谱有移动、拖拽、放大功能
d3.js是一个基于数据操作文档的JavaScript库,可以帮助开发者使用HTML、SVG和CSS来展示数据。d3.js可以用来实现人物关系图谱,具体实现步骤如下:
```javascript
// 引入d3.js库
<script src="https://d3js.org/d3.v3.min.js"></script>
// 创建svg元素
var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
// 创建力导向图
var force = d3.layout.force()
.nodes(nodes) // 节点数组
.links(links) // 连线数组
.size([width, height]) // 画布大小
.linkDistance(150) // 连线长度
.charge(-400); // 节点间的斥力
// 绘制连线
var links = svg.selectAll(".link")
.data(links)
.enter()
.append("line")
.attr("class", "link");
// 绘制节点
var nodes = svg.selectAll(".node")
.data(nodes)
.enter()
.append("circle")
.attr("class", "node")
.attr("r", 20)
.style("fill", function(d) { return color(d.group); })
.call(force.drag); // 节点可拖拽
// 绘制节点标签
var labels = svg.selectAll(".label")
.data(nodes)
.enter()
.append("text")
.attr("class", "label")
.attr("fill", "black")
.attr("font-size", "12px")
.attr("dx", 20)
.attr("dy", 8)
.text(function(d) { return d.name; });
// 开始力导向布局
force.start();
// 监听力导向图布局事件
force.on("tick", function() {
// 更新连线位置
links.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
// 更新节点位置
nodes.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
// 更新节点标签位置
labels.attr("x", function(d) { return d.x; })
.attr("y", function(d) { return d.y; });
});
```
阅读全文