传递给d3.js force tick回调函数的'e'参数是什么?

传递给d3.js force tick回调函数的'e'参数是什么?,d3.js,force-layout,D3.js,Force Layout,下面是勾号函数的正常示例: function tick(e) { nodes .each(cluster(10 * e.alpha * e.alpha)); } 谁能告诉我“e”的定义?它有什么特性? 我找不到“e”的任何描述,e.alpha是什么意思。是的,我用过谷歌,但没有结果 感谢您在下面提供的帮助 我在复制一些代码,它使用 var force = d3.layout.force() .nodes(nodes) .size([wid

下面是勾号函数的正常示例:

function tick(e) {
     nodes
      .each(cluster(10 * e.alpha * e.alpha));
}
谁能告诉我“e”的定义?它有什么特性? 我找不到“e”的任何描述,e.alpha是什么意思。是的,我用过谷歌,但没有结果


感谢您在下面提供的帮助

我在复制一些代码,它使用

var force = d3.layout.force()
        .nodes(nodes)
        .size([width, height])
        .charge(-70)
        .gravity(0.1)
        .on("tick", tick)
        .start();

所以这只是你猜测的情况。我是d3新手,略知一二。布局API没有给我任何线索。谢谢你宝贵的时间

如果没有“正常”函数的完整上下文,这有点像猜测,但下面是:

勾选
在d3中的许多上下文中使用。的inclusion表示这是一个,在tick事件上由force布局对象调用,在这种情况下,
e
将是tick事件对象

关于tick事件的文档并不多,因为大多数示例都没有使用它。如果你检查一下,你会发现

// A rudimentary force layout using Gauss-Seidel.
d3.layout.force = function() {                       //line 11
    var force = {},
        event = d3.dispatch("start", "tick", "end"); 
    /* ... */
    force.tick = function() {                        //line 58
        // simulated annealing, basically
        if ((alpha *= .99) < .005) {
          event.end({type: "end", alpha: alpha = 0});
          return true;
        }
        /* code to implement default force layout adjustments */
        event.tick({type: "tick", alpha: alpha});   //line 128
    };
    /* ... */
    return d3.rebind(force, event, "on");           //line 305
};
//使用Gauss Seidel的基本部队布局。
d3.layout.force=函数(){//第11行
var force={},
事件=d3.调度(“开始”、“勾选”、“结束”);
/* ... */
force.tick=function(){//第58行
//基本上是模拟退火
如果((α=0.99)<0.005){
event.end({type:“end”,alpha:alpha=0});
返回true;
}
/*用于实现默认力布局调整的代码*/
event.tick({type:“tick”,alpha:alpha});//第128行
};
/* ... */
返回d3.rebind(强制,事件,“on”);//第305行
};
换句话说,tick事件是使用流程在d3源代码中创建的三种自定义事件之一。
tick
事件尤其在内部tick函数的末尾被调度,并且只包含一个自定义属性:力布局中的当前
alpha
参数。为了使这些事件实际移动到任何地方,event dispatcher对象的
on
方法位于force layout对象上,以便用户可以为自定义事件注册侦听器函数

如果所有这些对您来说都太多了,只需关注以下细节:

  • e
    是每次调用tick函数时传递给它的自定义事件对象
  • e.alpha
    是力布局的当前alpha值,默认情况下,该值从0.1开始,并在每个刻度处减小(根据
    摩擦
    参数),直到降至0.005以下,布局冻结:

    在内部,布局使用冷却参数
    alpha
    ,该参数控制布局温度:当物理模拟在稳定布局上收敛时,温度下降,导致节点移动更慢。最终,
    alpha
    下降到阈值以下,模拟完全停止,从而释放CPU并避免电池耗尽。()


在中搜索
e.alpha
。请提供有关在何处找到此函数的更多上下文。单独呈现一个函数并不能告诉您将要传递给它的参数的性质。我在回答中做了一个合理的猜测,但是由于没有包含足够的信息来诊断问题,这个问题应该被关闭。对不起,我不得不多谢你的支持。目前,afaik是传递给参数化
on(“勾选”
函数的内容以及
alpha
组件的含义(d3源代码除外)的唯一公开文档。
e.alpha
在几个示例中使用(例如谷歌“d3多力布局”)没有任何解释。所以我希望我能对这个答案投一票以上。(并不是说你需要这么多代表。)不幸的是,这个答案在谷歌搜索中并不容易找到。但在SO搜索中也不难找到。谢谢@Mars。你让我做了一件我在10月份就应该做的事情:我希望包含这些信息,这样以后应该更容易找到!酷。(我仍然觉得你在这里的回答非常有用。因为我还不了解整个分派过程,所以看到一个解释,它明确引用了带有参数的
tick
的定义是很有用的。)有人知道tick事件是否保留在v4中吗?