Как сгенерировать несколько уровней с GraphViz (интерфейс Image_Graphviz для PHP) - PullRequest
0 голосов
/ 01 ноября 2009

Я пытаюсь сгенерировать следующую диаграмму, используя Image_GraphViz для PEAR. Однако он показывает только узел верхнего уровня (с текстом «0») и дочерние узлы «1», «2», «3» и «4» непосредственно под верхним узлом. Я что-то пропустил?

Это код:

    $gv = new Image_GraphViz(true);

    $gv->addEdge(array('1', '2'));
    $gv->addEdge(array('2', '3'));
    $gv->addEdge(array('2', '4'));
    $gv->addEdge(array('3', '5'));
    $gv->addEdge(array('3', '6'));
    $gv->addEdge(array('3', '7'));
    $gv->addEdge(array('4', '5'));

    echo $gv->fetch('svg');

Я попробовал следующее, но это, очевидно, неправильно :).

    $gv->addEdge(array('1', '2'));
    $gv->addEdge(array('1', '2', '3'));
    $gv->addEdge(array('1', '2', '4'));
    $gv->addEdge(array('1', '2', '3', '5'));
    $gv->addEdge(array('1', '2', '3', '6'));
    $gv->addEdge(array('1', '2', '3', '7'));
    $gv->addEdge(array('1', '2', '4', '5'));

Я понимаю, что есть two ways to get to 5. Через (1, 2, 3, 5) и / или (1, 2, 4, 5).

На изображении должны быть только две линии, идущие к 5. Я очень запутался, есть предложения?

1 Ответ

1 голос
/ 02 ноября 2009

Из документации кажется, что вам нужны ассоциативные массивы. Можете ли вы попробовать это вместо этого?

$gv = new Image_GraphViz(true);

// Notice the use of =>
$gv->addEdge(array('1' => '2'));
$gv->addEdge(array('2' => '3'));
$gv->addEdge(array('2' => '4'));
$gv->addEdge(array('3' => '5'));
$gv->addEdge(array('3' => '6'));
$gv->addEdge(array('3' => '7'));
$gv->addEdge(array('4' => '5'));

echo $gv->fetch('svg');
...