dagreD3 - Renderer和DiGraph对象是​​否已被弃用?如何进行过渡和布局?

时间:2015-03-16 18:21:28

标签: d3.js transitions renderer dagre-d3

我看到很多像这样开始的dagre-D3代码示例:

var g = new dagreD3.Digraph();
var renderer = new dagreD3.Renderer();
var layout = dagre.layout();

但是我无法创建这3个对象,我得到了一个JavaScript"而不是一个函数"而是错误。我正在链接到最新的" dagreD3库位于:

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="http://cpettitt.github.io/project/dagre-d3/latest/dagre-d3.js"></script>

我可以使用其他示例中的对象和代码来获取工作图:

var g = new dagreD3.graphlib.Graph();
var inner = d3.select("g");
var render = new dagreD3.render();  // Create the renderer
    render(inner, g);  // Run the renderer.

所以我的假设是DiGraph和Renderer对象是&#34; old&#34;并弃用,这是正确的吗?如果没有,为什么我不能创建Renderer和DiGraph对象?我是一个完整的菜鸟吗?

如果Renderer和DiGraph对象实际上已经过时,我如何获得布局和/或启用此线程中描述的转换,并使用https://github.com/cpettitt/dagre-d3/issues/31处的示例代码:

// Custom transition function
function transition(selection) {
  return selection.transition().duration(500);
}
renderer.transition(transition);

我真正想做的就是从图表中删除一个节点和/或边缘并让它“转换”#34;进入新的布局。我认为它看起来像这样:

g.transition().removeNode(d);
g.transition().removeEdge(v);

我能做的最好的就是:

g.removeNode(d);
g.removeEdge(v);
render(inner, g);

&#34;跳跃&#34;到新的布局而不是平滑过渡。我是D3的新手还在学习 - 我错过了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你可以在这里看到答案:

g.graph().transition = function(selection) {
  return selection.transition().duration(500);
};

在这里使用:

http://cpettitt.github.io/project/dagre-d3/latest/demo/interactive-demo.html