php使用graphviz画图

graphviz是一款古老的画拓扑图的工具,非常强大,能够按照你在文本文件里定义的格式转换为拓扑图,很多大公司都是用graphviz来画拓扑图,它的最主要的功能是用程序生成文本,然后调用graphviz来把文本转化为拓扑图。
1.安装graphviz
http://www.graphviz.org/Download..php里下载对应的平台的安装包;
我用的是centos因此用yum安装最方便
  1. wget http://www.graphviz.org/graphviz-rhel.repo /etc/yum.repos.d/graphviz-rhel.repo
  2. yum install graphviz

2.安装完毕后进行测试

 

  1. echo “digraph G {Hello->World}” | dot -Tpng >hello.png

3.php 调用graphviz

首先用程序生成/tmp/domain.txt,然后用dot命令生成图片

 

 

  1. <?php
  2.    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

  3.    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified

  4.    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1

  5.    header ("Pragma: no-cache"); // HTTP/1.0

  6.    header ("Content-type: image/gif");
  7.    $filename = '/tmp/domain.txt';
  8.    $somecontent = "digraph G {a->b->c->a}";
  9.     if (!$handle = fopen($filename, 'w')) {
  10.          echo "cannot open $filename";
  11.          exit;
  12.     }
  13.     if (fwrite($handle, $somecontent) === FALSE) {
  14.         echo "cannot write to $filename";
  15.         exit;
  16.     }
  17.     fclose($handle);

  18.    passthru("dot -Tpng $filename");
  19. // passthru("cat $filename | dot -Tpng");

  20. ?>

 


### 使用Graphviz绘制图形的方法 为了利用Graphviz创建图表,需先安装Graphviz工具包以及Python中的`graphviz`库。对于Windows用户来说,可以从指定链接下载适合版本的Graphvis MSI安装文件[^3]。 一旦安装完毕,在Python环境中可以通过pip命令轻松安装对应的接口库: ```bash pip install graphviz ``` 接着,通过编写简单的DOT语言代码来定义想要展示的关系图或流程图。下面是一个使用Python和Graphviz生成简单有向图的例子: ```python from graphviz import Digraph dot = Digraph(comment='The Round Table') dot.node('A', 'King Arthur') dot.node('B', 'Sir Bedevere the Wise') dot.node('L', 'Sir Lancelot the Brave') dot.edges(['AB', 'AL']) dot.edge('B', 'L', constraint='false') print(dot.source) dot.render('test-output/round-table.gv', view=True) ``` 上述代码片段展示了如何构建一个包含三个节点(人物角色)及其之间关系的有向图,并保存为名为`round-table.gv`的文件,同时打开查看结果图像[^2]。 除了基本的操作外,还可以调整更多属性来自定义样式,比如改变边的颜色、宽度或者设置节点形状等特性。此外,Graphviz内置了几种不同的布局算法供选择,如`dot`, `neato`, `twopi`, `circo` 和 `fdp`,每种都有各自的特点适用于不同类型的数据集[^5]。 最后值得注意的是,虽然这里主要讨论了基于Python环境下的应用案例,但实际上只要能够产生合法的DOT格式字符串,任何编程语言都可以用来控制Graphviz进行绘图工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值