D3.js d3有向图,它是如何工作的

D3.js d3有向图,它是如何工作的,d3.js,graph,D3.js,Graph,我正在尝试将一个d3有向图插入到胸部超级类型的主干视图中。我能够做到这一点,但仍然有问题的方式,它是工作的3代码 首先,我们创建通过节点和边的力布局 var force = d3.layout.force() .nodes(nodes) .links(links) .size([width, height]) .linkDistance(150) .charge(-500) .on('tick', tick) 这真的创建了图形吗 这两条线是干什么的 this.path = this.svg.

我正在尝试将一个d3有向图插入到胸部超级类型的主干视图中。我能够做到这一点,但仍然有问题的方式,它是工作的3代码

首先,我们创建通过节点和边的力布局

 var force = d3.layout.force()
.nodes(nodes)
.links(links)
.size([width, height])
.linkDistance(150)
.charge(-500)
.on('tick', tick)
这真的创建了图形吗

这两条线是干什么的

this.path = this.svg.append('svg:g').selectAll('path');
this.circle = this.svg.append('svg:g').selectAll('g');
将svg:g元素附加到svg元素。好的,我明白了。但是有了selectAll。我不明白。已经有路径了吗?由force布局创建

this.path=this.path.datathis.links;这有什么用?我真的不知道

然后附加路径

 this.path.enter().append('svg:path')
 .attr('class', 'link')
 .style('marker-start', function (d) {
      return d.left ? 'url(#start-arrow)' : '';
 })
 .style('marker-end', function (d) {
      return d.right ? 'url(#end-arrow)' : '';
 });
然后是节点。开始喜欢

 this.circle = this.circle.data(this.nodes, function (d) {
     return d.id;
 });
我认为首先创建一个组是因为要将圆圈和标签文本保持在一起

var g = this.circle.enter().append('svg:g');
现在我们创建圆

g.append('svg:circle')
    .attr('class', 'node')
    .attr('r', 12)
    .style('stroke', _.bind(function (d) {
         return d3.rgb(this.colors(d.id)).darker().toString();
    }, this))
    .classed('reflexive', function (d) {
         return d.reflexive;
    })
将标签文本附加到保存组

g.append('svg:text')
    .attr('x', 0)
    .attr('y', 4)
    .attr('class', 'id')
    .text(function (d) {
         return d.id;
    });

所以我大致了解了正在发生的事情。但不完全如此。感谢您提供的帮助,帮助您更好地了解发生在哪里的情况。

您真的应该看看d3演示文稿。它会回答你问的很多问题。我知道。问题时间有限:。不管怎样,看看d3。顺便说一句,请找出第二点。