在 Force Directed Graph d3 中引入 Arrow(directed)
Introducing Arrow(directed), in Force Directed Graph d3
我在这里使用示例中的力导向图 - http://bl.ocks.org/mbostock/4062045
但是由于我的数据是定向的,所以我需要图表中的链接表示为箭头连接。也许像 http://bl.ocks.org/d3noob/5141278。
有人可以建议创建有向图的更改或添加,如 http://bl.ocks.org/mbostock/4062045
我是 D3 的新手,我找不到解决方案,也许是微不足道的,但我不胜感激。
合并这两个例子很简单,我创建了一个JSFiddle to demo。首先在SVG中添加箭头样式的定义:
// build the arrow.
svg.append("svg:defs").selectAll("marker")
.data(["end"]) // Different link/path types can be defined here
.enter().append("svg:marker") // This section adds in the arrows
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", 15)
.attr("refY", -1.5)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");
然后只需将标记添加到您的 links
.attr("marker-end", "url(#end)");
你最终得到这样的结果:
您会看到有些箭头比其他箭头大,因为并非所有链接都具有相同的 stroke-width
。如果你想让所有的箭头都一样大,只需要修改
.style("stroke-width", function(d) { return Math.sqrt(d.value); })
添加链接时。
我在这里使用示例中的力导向图 - http://bl.ocks.org/mbostock/4062045
但是由于我的数据是定向的,所以我需要图表中的链接表示为箭头连接。也许像 http://bl.ocks.org/d3noob/5141278。
有人可以建议创建有向图的更改或添加,如 http://bl.ocks.org/mbostock/4062045
我是 D3 的新手,我找不到解决方案,也许是微不足道的,但我不胜感激。
合并这两个例子很简单,我创建了一个JSFiddle to demo。首先在SVG中添加箭头样式的定义:
// build the arrow.
svg.append("svg:defs").selectAll("marker")
.data(["end"]) // Different link/path types can be defined here
.enter().append("svg:marker") // This section adds in the arrows
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", 15)
.attr("refY", -1.5)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");
然后只需将标记添加到您的 links
.attr("marker-end", "url(#end)");
你最终得到这样的结果:
您会看到有些箭头比其他箭头大,因为并非所有链接都具有相同的 stroke-width
。如果你想让所有的箭头都一样大,只需要修改
.style("stroke-width", function(d) { return Math.sqrt(d.value); })
添加链接时。