badams/graphviz

alom/graphviz的临时分支

v1.1.0.3 2017-07-09 23:34 UTC

README

Build status Latest Stable Version Total Downloads License Monthly Downloads Daily Downloads

为PHP生成Graphviz

Build Status

安装

使用以下命令安装最新版本

composer require alom/graphviz

用法

此库允许您使用PHP流畅的接口创建Dot图

$graph = new Alom\Graphviz\Digraph('G');
$graph
    ->subgraph('cluster_1')
        ->attr('node', array('style' => 'filled', 'fillcolor' => 'blue'))
        ->node('A')
        ->node('B')
        ->edge(array('b0', 'b1', 'b2', 'b3'))
    ->end()
    ->edge(array('A', 'B', 'C'))
;
echo $graph->render();

标签转义

默认情况下,标签将被转义,以便在图中以“原样”表示您的PHP字符串。如果您不想转义标签,请将特殊属性_escaped设置为false

$graph = new Alom\Graphviz\Digraph('G');
$graph
    ->node('my_table', array(
        'label' => '<<table>...</table>>',
        '_escaped' => false
    ))

浏览图

当您创建了大量的子图和节点时,使用标识符浏览它可能很有用。例如,如果您有以下图

$graph = new Alom\Graphviz\Digraph('G');
$graph
    ->subgraph('cluster_1')
        ->node('A')
        ->node('B')
    ->end()
    ->subgraph('cluster_2')
        ->node('C')
        ->node('D')
    ->end()
    ->edge(array('C', 'D'))
;

您可以通过以下方式访问现有图中的节点

$cluster = $graph->get('cluster_1');
$node = $graph->get('cluster_2')->get('D');

当您有一个节点或边时,您可以操作其属性

# read a value
echo $node->getAttribute('label', 'no label'); # second argument is default value

# write a value
$node->attribute('label', 'new label');

在图上,您可以访问或验证边的存在

$graph->hasEdge(array('A', 'B'));
$graph->getEdge(array('C', 'D'));

使用集群和记录ID

如果您从记录中的ID创建边,请使用数组而不是字符串

$graph = new Alom\Graphviz\Digraph('G');
$graph
    ->node('A', array('shape' => 'record', 'label' => '{ <1> Part 1 | <2> Part 2}'))
    ->node('B')
    ->edge(array('B', array('A', '1')))
;

如上例所示,边由两部分组成

  • 'B':一个普通节点
  • array('A', '1'):指向A节点中的单元格“1”

此方法也适用于getEdgehasEdge以及所有与边相关的函数。

示例

请查看位于samples文件夹中的示例

您可以使用以下命令生成任何这些图

php samples/00-readme.php | dot -Tpdf -oout.pdf
xdg-open out.pdf