Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个开源的画图工具包,它提供了“所想即所得”的理念,
使用一个特定的DSL(领域特定语言):dot作为脚本语言来编写脚本并绘制图形,简单易懂。
并使用布局引擎来解析此脚本,并完成自动布局,提供了对于图、点和边的设置,如颜色、样式、形状等属性,
分别提供有 graph_attr、node_attr 和 edge_attr 属性设置函数。
安装前提:window系统(window7或更高,64位),python3.8(64位),anaconda
官网上关于pygraphviz安装在WINDOWS系统上的描述如下:
从历史上看,在 Windows 上安装 Graphviz 和 PyGraphviz 一直具有挑战性。幸运的是,Graphviz 开发人员正在努力解决这个问题,他们最近的版本大大改善了这种情况。
因此,PyGraphviz 1.7 在 Windows 上仅支持 Graphviz 2.46.0 或更高版本。我们建议手动安装 Graphviz 的官方二进制版本或使用Chocolatey,它已更新到 Graphviz 2.46.0。
您可能还需要安装 Visual C/C++,例如从这里:https : //visualstudio.microsoft.com/visual-cpp-build-tools/
假设您安装了 Python 和 Visual C/C++,我们相信以下内容应该适用于使用 PowerShell 的 Windows 10(64 位)。
手动下载:
下载并安装适用于 Windows 10(64 位)的2.46.0: stable_windows_10_cmake_Release_x64_graphviz-install-2.46.0-win64.exe。
通过安装 PyGraphviz
PS C:> python -m pip install --global-option=build_ext --global-option="-IC:\Program Files\Graphviz\include"
–global-option="-LC:\Program Files\Graphviz\lib" `
pygraphviz
以上代码未测试过,不予评论,下面是我的安装方法:
1 查看系统是否安装了Visual C/C++,若无可从:https://visualstudio.microsoft.com/visual-cpp-build-tools/ 上下载安装,我安装的是2019版的,安装路径我的按默认处理;
2 安装pygraphviz前,需要先安装Graphviz,故,首先安装Graphviz:
从官网 http://www.graphviz.org/ 下载,Graphviz 2.46.0(20210820查看时已没有)或Graphviz 2.46.1(20210820查看时还有),有Debug和Release两个版本;
下载后手动安装,安装路径(可自定义)记下,安装成功后,将安装路径添加入python的Path中,添加方法如下;
配置环境变量:
1>右键单击此电脑,点击属性
2>点击高级系统设置–>点击环境变量
3>点击新建(注意新建的变量名称不要和已有的变量名称相同哪怕大小写不一样,因为环境变量不区分大小写,若重名,新的将覆盖旧的)
->将刚刚的安装好Graphviz 2.46.1的bin路径复制粘贴进去。
(或,运行安装完成后,添加安装目录下 bin 目录到系统环境变量Path中,以便后续使用 dot.exe 文件.)
验证:在cmd下输入dot -version 出现Graphviz相关版本信息,则安装配置成功。
3 接下来安装PyGraphviz:
从https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygraphviz下载pygraphviz-1.7-cp38-cp38-win_amd64.whl,注意:pygraphviz-1.7是对应Graphviz 2.46的,
试过安装Graphviz 2.47,但是不成功,因此不同版本需要下不同版本的pygraphviz,cp38表示3.8版本,电脑是64位就选win_amd64,32位就选win32。
进入Anaconda Prompt,输入pip show pygraphviz查看是否已安装了pygraphviz,若有另作打算,
若无,则cd到pygraphviz-1.7-cp38-cp38-win_amd64.whl所在的目录,再pip install pygraphviz-1.7-cp38-cp38-win_amd64.whl 进行安装。
验证:在python里面输入import pygraphviz ,不报错就证明安装成功了。
#测试代码1
import pygraphviz as pgv
A=pgv.AGraph()
A.add_edge(1,2)
A.add_edge(2,3)
A.add_edge(1,3)
print(A.string()) # print to screen
print(“Wrote simple.dot”)
A.write(‘simple.dot’) # write to simple.dot
B=pgv.AGraph(‘simple.dot’) # create a new graph from file
B.layout() # layout with default (neato)
B.draw(‘simple.png’) # draw png
print(“Wrote simple.png”)
strict graph “” {
1 – 2;
1 – 3;
2 – 3;
}
Wrote simple.dot
Wrote simple.png
–end-- 20210820