badams / graphviz
alom/graphviz的临时分支
v1.1.0.3
2017-07-09 23:34 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-08-28 19:01:56 UTC
README
为PHP生成Graphviz
安装
使用以下命令安装最新版本
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”
此方法也适用于getEdge、hasEdge以及所有与边相关的函数。
示例
请查看位于samples文件夹中的示例
- 00-readme.php:来自graphviz README的示例
- 01-basic.php:节点的基本样式
- 02-table.php:HTML表格转义示例
您可以使用以下命令生成任何这些图
php samples/00-readme.php | dot -Tpdf -oout.pdf
xdg-open out.pdf