霜无蕊 發表於 2020-6-29 22:18:00

Graphviz 安装并使用 (Python)

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>概述</li><li>Graphviz 工具安装</li><li>Graphviz 库安装<ul><li>IDLE</li><li>anaconda</li><li>至关重要的一步</li></ul></li><li>基础用法</li><li>参考资料</li></ul></div><p></p>
<h1 id="概述">概述</h1>
<blockquote>
<p>Graphviz 是一款由 AT&amp;T Research 和 Lucent Bell 实验室开源的可视化图形工具,可以很方便的用来绘制结构化的图形网络,支持多种格式输出。Graphviz 输入是一个用 dot 语言编写的绘图脚本,通过对输入脚本的解析,分析出其中的点、边及子图,然后根据属性进行绘制。Graphviz layout 以简单的文本语言描述图形,并以实用的格式制作图表,如用于网页的 images 和 SVG ;用于放入在其它文件中或显示在交互式图形浏览器中的 PDF 和 Postscript 。——可视化图形软件 Graphviz</p>
</blockquote>
<p>对于 Python 而言,也有一个 Graphviz 库与该工具对应,使用 Graphviz 库可以使用 Python 的语法生成 dot 语言绘图脚本,并调用 Graphviz 工具生成图片并保存。但是由于 Graphviz 库并不是独立工作的库,它需要连接 Graphviz 工具来联合工作,也就是说当你需要使用 Graphviz 库时必须安装 Graphviz 工具并设置好 Python 调用 Graphviz 工具的接口。</p>
<h1 id="graphviz-工具安装">Graphviz 工具安装</h1>
<p>如果你想要了解 Graphviz 工具,你可以进入 Graphviz 官网。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629212823647-1781231891.png" alt="" loading="lazy"><br>
在官网中我们可以找到 Graphviz 工具的安装包,这里以 Windows 系统为例,安装包连接点我访问。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629213011444-1279381764.png" alt="" loading="lazy"><br>
这 2 个玩意都可以,第一个是安装包,操作就和安装其他软件一样,不过安装时要记一下<strong>安装路径</strong>,后面有用。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629213243913-1370990562.png" alt="" loading="lazy"><br>
如果是下载压缩包的话,也是找个位置解压,然后记一下文件路径。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629213612904-1667658398.png" alt="" loading="lazy"><br>
接下来要把 Graphviz 工具的 bin 目录加到环境变量 PATH 中,像这样。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629213723046-1392392708.png" alt="" loading="lazy"><br>
接下来测试下是否安装成功,打开 cmd 命令窗口,输入命令:</p>
<pre><code>dot -version
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629213842389-1604818383.png" alt="" loading="lazy"><br>
如果你看到了 cmd 输出这堆东西(版本号及相关信息),证明 Graphviz 工具安装成功。</p>
<h1 id="graphviz-库安装">Graphviz 库安装</h1>
<h2 id="idle">IDLE</h2>
<p>直接在 cmd 中输入以下命令就行,然后等上一会。</p>
<pre><code>pip install graphviz
</code></pre>
<p>安装完之后,使用 “pip list” 确认下成功了没。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629214430905-697123480.png" alt="" loading="lazy"></p>
<h2 id="anaconda">anaconda</h2>
<p>打开这玩意。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629214515335-218480851.png" alt="" loading="lazy"><br>
输入命令:</p>
<pre><code>conda install graphviz
</code></pre>
<p>等上一会儿,安装好后打开 anaconda 检查下。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629214755872-294924247.png" alt="" loading="lazy"></p>
<h2 id="至关重要的一步">至关重要的一步</h2>
<p>接下来完成以下 2 个设置,Python 才能调用 Graphviz 工具。首先打开 cmd 语句输入以下命令:</p>
<pre><code>echo process1 = subprocess.Popen(command1,stdout=subprocess.PIPE,shell=True)
</code></pre>
<p>接下来去你的 Python 安装路径下,找到文件 <strong>subprocess.py</strong>。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629215115183-1952454875.png" alt="" loading="lazy"><br>
打开,找到 <strong>Popen(object)</strong> 类。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629215238586-334304638.png" alt="" loading="lazy"><br>
找到这个类的 <strong><strong>init</strong></strong> 方法,把 shell=False 修改为 <strong>shell=True</strong>。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629215320161-857134191.png" alt="" loading="lazy"><br>
改好之后,创建个文件,粘贴以下代码测试下能不能用。</p>
<pre><code>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()
</code></pre>
<p>如果看到这玩意,说明你的 graphviz 库可以正常工作了。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629215855859-1749668043.png" alt="" loading="lazy"></p>
<h1 id="基础用法">基础用法</h1>
<p>当我们使用 Python 的任何库时,首先都需要把模块包含进来,使用这句代码。</p>
<pre><code>from graphviz import Digraph
</code></pre>
<p>接下来我们就需要一个对象来作为生成 DOT 脚本的载体,通过这个语句实例化一个图形对象。</p>
<pre><code>对象 = Digraph('对象名')
</code></pre>
<p>node() 方法可以在对象中生成一个结点,语法如下:</p>
<pre><code>对象.node("结点名","结点内容")
</code></pre>
<p>edge() 方法可以添加一条边,语法如下:</p>
<pre><code>对象.edge('结点名1','结点名2')
</code></pre>
<p>在经过这些操作后,dot 脚本就会被自动生成,可以在交互式页面看下具体内容。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629221011291-315426917.png" alt="" loading="lazy"><br>
当然这些代码你可以复制出来,然后放到 Graphviz 工具里,也是可以运行的,如果你会 dot 语法可以直接在工具里写。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629221241298-1401615769.png" alt="" loading="lazy"><br>
然后使用这个代码就能把图片保存出来,并查看了。</p>
<pre><code>对象.view(filename="文件名", directory="输出路径")
</code></pre>
<p>生成结果会是一个 gv 文件保存 dot 脚本,以及一个某种格式保存的图片。<br>
<img src="https://img2020.cnblogs.com/blog/1774310/202006/1774310-20200629221402561-344767041.png" alt="" loading="lazy"><br>
具备这些就可以使用 Graphviz 库和 Graphviz 工具,使用 Python 的代码画朴素而耐看的拓扑图了。更多进阶用法参考博客——python graphviz的使用(画图工具),里面各种参数都介绍得非常详细。</p>
<h1 id="参考资料">参考资料</h1>
<p>Graphviz<br>
python graphviz的使用(画图工具)<br>
python3 graphviz入门教程<br>
Graphviz 画图教程(Python)<br>
FileNotFoundError: WinError 2 系统找不到指定的文件 graphviz<br>
可视化图形软件 Graphviz</p><br><br>
来源:https://www.cnblogs.com/linfangnan/p/13210536.html
頁: [1]
查看完整版本: Graphviz 安装并使用 (Python)