在PHP中使用GraphViz绘制图形


Drawing a graph with GraphViz in PHP

晚上好,

我正试图找到一种在PHP中从Neo4J数据库中显示简单节点/边图的方法。我看过three.js、西格玛和炼金术,但对于如此简单的任务来说,这些工具似乎太复杂了。然后我找到了GraphViz,当我使用编辑器时,它运行得很好。但当我想从PHP中使用它时,却找不到帮助。有一个pear包似乎不再适用于PHP>5.0(尝试过后遇到了很多错误(例如,不应静态调用非静态方法System::mktemp()-这里还有一个线程:Graphviz不适用于php5.3.2),我发现了一个文档http://www.graphviz.org/pdf/gv.3php.pdf-但不幸的是,我似乎无法处理这个问题。

任何人都有一个如何绘制的例子,例如:

 <?php
 require_once 'Image/GraphViz.php';
 $gv = new Image_GraphViz();
 $gv->addEdge(array('wake up'        => 'visit bathroom'));
 $gv->addEdge(array('visit bathroom' => 'make coffee'));
 $gv->image();
 ?> 

(来源:http://pear.php.net/manual/en/package.images.image-graphviz.example.php)

这段代码来自pear包的例子,但没有运行——但也许有人知道如何在GraphViz的gv.PHP扩展上直接使用PHP中的代码?

GraphViz在编辑器中运行良好的示例:

graph graphname { 
                a -- b; 
                b -- c;
                b -- d;
                d -- a;
        }

但是如何让PHP与GraphViz对话并产生输出呢?

非常感谢您的帮助,谢谢。B

您也可以只使用基于javascript的点渲染器,例如

  • https://github.com/mdaines/viz.js/
  • https://code.google.com/p/canviz/

我的搜索结果:

我现在正在使用http://visjs.org/这很适合我的需要。以下是代码示例:http://visjs.org/docs/network.html#Example

通过在单击时使用一个简单的location.href来更改javascript,已经解决了为节点分配URL的问题。