python graphviz_Graphviz 安装并使用 (Python)

概述

Graphviz 是一款由 AT&T Research 和 Lucent Bell 实验室开源的可视化图形工具,可以很方便的用来绘制结构化的图形网络,支持多种格式输出。Graphviz 输入是一个用 dot 语言编写的绘图脚本,通过对输入脚本的解析,分析出其中的点、边及子图,然后根据属性进行绘制。Graphviz layout 以简单的文本语言描述图形,并以实用的格式制作图表,如用于网页的 images 和 SVG ;用于放入在其它文件中或显示在交互式图形浏览器中的 PDF 和 Postscript 。——可视化图形软件 Graphviz

对于 Python 而言,也有一个 Graphviz 库与该工具对应,使用 Graphviz 库可以使用 Python 的语法生成 dot 语言绘图脚本,并调用 Graphviz 工具生成图片并保存。但是由于 Graphviz 库并不是独立工作的库,它需要连接 Graphviz 工具来联合工作,也就是说当你需要使用 Graphviz 库时必须安装 Graphviz 工具并设置好 Python 调用 Graphviz 工具的接口。

Graphviz 工具安装

如果你想要了解 Graphviz 工具,你可以进入 Graphviz 官网。

在官网中我们可以找到 Graphviz 工具的安装包,这里以 Windows 系统为例,安装包连接点我访问。

这 2 个玩意都可以,第一个是安装包,操作就和安装其他软件一样,不过安装时要记一下安装路径,后面有用。

如果是下载压缩包的话,也是找个位置解压,然后记一下文件路径。

接下来要把 Graphviz 工具的 bin 目录加到环境变量 PATH 中,像这样。

接下来测试下是否安装成功,打开 cmd 命令窗口,输入命令:

dot -version

如果你看到了 cmd 输出这堆东西(版本号及相关信息),证明 Graphviz 工具安装成功。

Graphviz 库安装

IDLE

直接在 cmd 中输入以下命令就行,然后等上一会。

pip install graphviz

安装完之后,使用 “pip list” 确认下成功了没。

anaconda

打开这玩意。

输入命令:

conda install graphviz

等上一会儿,安装好后打开 anaconda 检查下。

至关重要的一步

接下来完成以下 2 个设置,Python 才能调用 Graphviz 工具。首先打开 cmd 语句输入以下命令:

echo process1 = subprocess.Popen(command1,stdout=subprocess.PIPE,shell=True)

接下来去你的 Python 安装路径下,找到文件 subprocess.py。

打开,找到 Popen(object) 类。

找到这个类的 init 方法,把 shell=False 修改为 shell=True。

改好之后,创建个文件,粘贴以下代码测试下能不能用。

from graphviz import Digraph

dot = Digraph('测试')

dot.node("1","Life's too short")

dot.node("2","I learn Python")

dot.edge('1','2')

dot.view()

如果看到这玩意,说明你的 graphviz 库可以正常工作了。

基础用法

当我们使用 Python 的任何库时,首先都需要把模块包含进来,使用这句代码。

from graphviz import Digraph

接下来我们就需要一个对象来作为生成 DOT 脚本的载体,通过这个语句实例化一个图形对象。

对象 = Digraph('对象名')

node() 方法可以在对象中生成一个结点,语法如下:

对象.node("结点名","结点内容")

edge() 方法可以添加一条边,语法如下:

对象.edge('结点名1','结点名2')

在经过这些操作后,dot 脚本就会被自动生成,可以在交互式页面看下具体内容。

当然这些代码你可以复制出来,然后放到 Graphviz 工具里,也是可以运行的,如果你会 dot 语法可以直接在工具里写。

然后使用这个代码就能把图片保存出来,并查看了。

对象.view(filename="文件名", directory="输出路径")

生成结果会是一个 gv 文件保存 dot 脚本,以及一个某种格式保存的图片。

具备这些就可以使用 Graphviz 库和 Graphviz 工具,使用 Python 的代码画朴素而耐看的拓扑图了。更多进阶用法参考博客——python graphviz的使用(画图工具),里面各种参数都介绍得非常详细。

参考资料

你可能感兴趣的:(python,graphviz)