1

在我的数据库中,我有节点和边。

位置必须在 gexf 生成时生成,节点不得重叠并且

生成这种图: http ://www.nwoods.com/components/images/force-directed-layout.png

我使用 Sigma.js 来展示图表。

如何使用力导向算法计算节点位置,并使用根项?

或者有一个布局可以从节点和边缘生成一个不重叠和输出的布局,就像上面的这个 png?

编辑:

生成节点位置的PHP代码:

    function _generate_gexf_node($test=false){
        $count = 0;     
    foreach ($node_array as $node) {
        $node_size = '22.714287';
        $node_poz = ' x="'.rand(10, 300).'" y="'.rand(10, 300).'" z="'.rand(10, 300).'" ';
        $node_color = ' b="45" g="72" r="216" ';
        $data['node'][] = '<node id="'.$node['node_id'].'" label="'.$node['label'].'">
    <attvalues>
    <attvalue for="authority" value="0.01880342"/>
    <attvalue for="hub" value="0.01880342"/>
    </attvalues>
    <viz:size value="'.$node_size.'"/>
    <viz:color '.$node_color.'/>
    <viz:position '.$node_poz.'/>
    </node>
        ';
        $count++;
    }
            return $data;
      }

我怎样才能在“运行时”中找到位置,喜欢这个http://www.nwoods.com/components/images/force-directed-layout.png

我在哪里可以找到一帆胡力定向算法的实现?

还是特殊的 Bubble 布局实现?

4

1 回答 1

1

目前,我也在使用 javascript 进行 Web Graph Visualization。这里有一个名为 gexf-js ( https://github.com/raphv/gexf-js ) 的好项目,但这仅用于绘制图形。

对于我使用 gephi 库的布局内容(这是在 java 中实现的),您可以在此处下载https://gephi.org/toolkit/。我还发现了 YifanHu 布局算法的一个很好的例子。

如果它可能是一项手动任务,那么您可以在 gephi 程序中导入您的 gexf 文件运行您想要的布局器并将其导出为 gexf。gephi 程序中的大多数功能也可以在工具包库中使用。

希望这有助于美好的一天

于 2013-02-21T13:56:14.037 回答