我是D3JS的新手,我需要创建带有图像或圆形节点的力导向图。这意味着一个图像节点或圆形节点需要动态添加。这是否可能?如果有任何示例,请回答。
我是D3JS的新手,我需要创建带有图像或圆形节点的力导向图。这意味着一个图像节点或圆形节点需要动态添加。这是否可能?如果有任何示例,请回答。
如果你只想在圆形中间放置一张图片,请尝试以下方法:
/* Create nodes */
var node = vis.selectAll("g.node")
.data(json.nodes) // get the data how you want
.enter().append("svg:g")
.call(node_drag);
/* append circle to node */
node.append("svg:circle")
.attr("cursor","pointer")
.style("fill","#c6dbef")
.attr("r", "10px"})
/* append image to node */
node.append("image")
.attr("xlink:href", "https://github.com/favicon.ico")
.attr("x", -8)
.attr("y", -8)
.attr("width", 16)
.attr("height", 16);
对于动态图像,您可以将图像保存在本地,并使用图像名称从本地使用动态图像。
要制作圆形,您可以使用:
var groups = node.enter().append("g")
.attr("class", "node")
.attr("id", function (d) {
return d.entityType;
})
.on('click', click)
groups.append("circle")
.attr("cursor", "pointer")
.style("fill", function(d) { return color(d.entityType); })
.style("fill", "#fff")
.style("stroke-width", "0")
.style("stroke", "#ddd")
.attr("r", 20);
groups.append("image")
.attr("xlink:href",function (d) {
return "../assets/images/"+d.entityType+".png";
})
.attr("x", -14)
.attr("y", -15)
.attr("width", 30)
.attr("height", 30)
如果你想在圆圈内添加文本,可以使用:
groups.append("text")
.attr("dy", 18)
.style("font-size", "2.5px")
.style("text-anchor", "middle")
.style('fill','#000')
.attr("refX", 15)
.attr("refY", -1.5)
.text(function (d) {
return d.entityName;
});