使用节点位置生成创建强制定向布局gexf文件

时间:2012-10-19 13:43:00

标签: php graph directed-graph

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

位置必须在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

我在哪里可以找到YiFan Hu Force定向算法的实现?

或特殊的Bubble布局实现?

1 个答案:

答案 0 :(得分:1)

目前我还在使用Web图表可视化,但使用javascript。 这里有一个名为gexf-js(https://github.com/raphv/gexf-js)的好项目 但这仅用于绘制图形。

对于布局的东西,我使用了gephi库(这是用java实现的) 你可以在这里下载https://gephi.org/toolkit/。我发现也是一个很好的例子 用于YifanHu布局算法。

如果它可以是手动任务,那么你可以在gephi程序中导入你的gexf文件 破坏你想要的布局并将其导出为gexf。最重要的是在gephi程序中运行 也可以在工具包库中找到。

希望这会有所帮助 美好的一天