Библиотека PHP для создания файлов xdot из файлов точек - PullRequest
5 голосов
/ 03 февраля 2011

Заранее извиняюсь, я неправильно использую терминологию, и исправления приветствуются.Я очарован ориентированными графами, но у меня никогда не было математических знаний, чтобы знать, о чем они на самом деле , мне просто нравится технология, потому что она делает полезные диаграммы.

Я пытаюсь создать функцию веб-приложения, которая будет отображать динамический ориентированный граф в браузере.Недавно я обнаружил Canviz , который представляет собой рендерер xdot на основе Cavas, который я хотел бы использовать.

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
}    

I'mищу библиотеку PHP, которая может конвертировать мой dot файл в xdot файл, который может быть использован Canviz.Я понимаю, что программа командной строки dot может сделать это, но это для распространяемого веб-приложения PHP, и я бы предпочел избегать любых двоичных файлов в качестве зависимостей.

Моя основная проблема: я генерируюdot файлов на основе простых направленных связей, и я хочу отобразить визуальный график для конечных пользователей в браузере.Я хотел бы сделать это без необходимости полагаться на наличие конкретной двоичной программы на сервере.Я думаю, что лучшим решением для этого является Canviz + PHP для создания файлов xdot.Я ищу библиотеку PHP, которая может сделать это.Однако я более чем открыт для других решений.

1 Ответ

1 голос
/ 26 марта 2012

Вы смотрели на Image_GraphViz ? На самом деле это просто оболочка для двоичного файла, но, судя по всему, я не думаю, что вы найдете что-то лучшее, и это, по крайней мере, избавляет вас от необходимости делать прямые вызовы командной строки из вашего PHP-скрипта.

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