PHP库从点文件生成xdot文件

时间:2011-02-02 21:43:30

标签: php javascript graphviz directed-graph

提前道歉是因为我误用了术语,并且对修改表示赞赏。我对有向图很着迷,但我从来没有数学/ cs背景知道他们真正关于什么,我只是喜欢技术,因为它制作了有用的图表。

我正在尝试创建一个Web应用程序功能,该功能将向浏览器呈现动态有向图。我最近发现Canviz,这是一个基于cavas的xdot渲染器,我想用它。

Canviz非常棒,但它会呈现xdot个文件,其中(显示?)包含所有复杂的定位逻辑

/* example xdot file */
digraph abstract {
    graph [size="6,6"];
    node [label="\N"];
    graph [bb="0,0,1250,612",
        _draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 612 1251 612 1251 -1 ",
        xdotversion="1.2"];
    S1 [pos="464,594", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 464 594 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 464 588 0 15 2 -S1 "];
    10 [pos="409,522", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 409 522 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 409 516 0 15 2 -10 "];

    S1 -> 10 [pos="e,421.43,538.27 451.52,577.66 444.49,568.46 435.57,556.78 427.71,546.5", _draw_="c 9 -#000000ff B 4 452 578 444 568 436 557 428 546 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 430 544 421 538 425 548 "];
}

我使用我的应用程序生成的文件是dot个文件,其中不包含任何此定位逻辑

digraph g {

    ranksep=6
    node [
        fontsize = "16"
        shape = "rectangle"
        width =3
        height =.5
    ];
    edge [
    ];

    S1 -> 10
}    

我正在寻找一个可以将dot文件转换为Canviz可以使用的xdot文件的PHP库。我意识到命令行程序dot可以做到这一点,但这适用于可再发行的PHP Web应用程序,我宁愿避免任何二进制文件作为依赖项。

我的核心问题:我基于简单的定向关系生成dot个文件,我想在浏览器中向最终用户显示可视化图形。我想这样做而不必依赖服务器上特定二进制程序的存在。我认为最好的解决方案是Canviz + PHP来生成xdot文件。我正在寻找一个可以做到这一点的PHP库。但是,我对其他解决方案持开放态度。

1 个答案:

答案 0 :(得分:1)

你看过Image_GraphViz了吗?它实际上只是二进制文件的包装器,但从外观上看,我认为你不会找到更好的东西,这至少使你不必从PHP脚本中直接进行命令行调用。

 $dot_obj = new Image_GraphViz();
 $dot_obj -> load('path/to/graph.gv');
 $xdot = $dot_obj -> fetch('xdot');