Graphviz是什么
Graphviz 是一款由 AT&T Research 和 Lucent Bell 实验室开源的可视化图形工具,可以很方便的用来绘制结构化的图形网络,支持多种格式输出。
Graphviz 的输入是一个用 dot 语言编写的绘图脚本,通过对输入脚本的解析,分析出其中的点、边及子图,然后根据属性进行绘制。
Graphviz layout 以简单的文本语言描述图形,并以实用的格式制作图表,如用于网页的 images 和 SVG ;用于放入在其它文件中或显示在交互式图形浏览器中的 PDF 和 Postscript 。
Graphviz安装与配置
1.安装Anaconda
2.安装graphviz
3.设置好环境变量
1.安装Anaconda
下载安装 Anaconda(开源的Python发行版本,最新版为3.7, 大小为466MB)
安装完后会自动添加相关路径到PATH环境变量,可以直接在终端cmd或者power shell界面输入python查看是否安装好。安装方法参考
2.安装graphviz
conda install graphviz
或者 pip install graphviz
如果报错,则选择安装python-graphviz
conda install python-graphviz
3.设置好环境变量
在anaconda安装目录下\Library\bin\graphviz里面有graphviz可执行文件,需要添加到系统变量path中,方便python调用
D:\program files\anacoda\Library\bin\graphviz
Graphviz使用案例
1.直接读取.gv文件渲染生成图片或.pdf文件
2.从创建表节点到生成渲染图
1.直接读取.gv文件渲染生成图片或.pdf文件
有向图a1.gv原文件
digraph G {
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a3 -> a0;
a3 -> end;
b3 -> end;
start [shape=Mdiamond];
end [shape=Msquare];
}
渲染有向图python源码文件dot2pdf.py
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : dot2pdf.py
@Time : 2020/06/10 19:21:46
@Author : Ai Qiangyun
@Version : 1.0
@Contact : aqy0716@163.com
@License : (C)Copyright 2020 SCAU
@Desc : None
'''
#通过.gv文件渲染转化为PDF和JPG文件
# here put the import lib
from graphviz import Source
#打开.gv有向图元文件,渲染格式为PDF
s = Source.from_file(r"D:\vscode_python_magic\graphviz-python\a1.gv",format='pdf')
print(s.source)
#打开渲染引擎,保存为。字符文件和指定的pdf文件,清除字符文件,------最后只剩下一个指定路径下和指定前缀名的PDF文件------
s.view(r"D:\vscode_python_magic\graphviz-python\fff1",cleanup=True)
渲染结果:
fff1.pdf截图
2.从创建表节点到生成渲染图
python代码如下:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : demo2.py
@Time : 2020/06/10 19:51:28
@Author : Ai Qiangyun
@Version : 1.0
@Contact : aqy0716@163.com
@License : (C)Copyright 2020 SCAU
@Desc : None
'''
# here put the import lib
from graphviz import Digraph
#创建表
dot = Digraph(comment='The Test Table')
# 添加圆点A,A的标签是Dot A
dot.node('A', 'Dot A')
# 添加圆点 B, B的标签是Dot B
dot.node('B', 'Dot B')
# dot.view()
# 添加圆点 C, C的标签是Dot C
dot.node('C', 'Dot C')
# dot.view()
# 创建一堆边,即连接AB的两条边,连接AC的一条边。
dot.edges(['AB', 'AC', 'AB'])
# dot.view()
# 在创建两圆点之间创建一条边
dot.edge('B', 'C', 'test')
# dot.view()
#数据类型
print(type(dot))
print(type(dot.source))
# 获取DOT source源码的字符串形式
print(dot.source)
# // The Test Table
# digraph {
# A [label="Dot A"]
# B [label="Dot B"]
# C [label="Dot C"]
# A -> B
# A -> C
# A -> B
# B -> C [label=test]
# }
# 保存source到文件,并提供Graphviz引擎
dot.render(directory=r"D:\vscode_python_magic\graphviz-python",filename = "fff4.gv", format = "pdf", view=True)
运行后生成两个文件 fff4.gv & fff4.gv.pdf 结果如下:
PS D:\program files\anacoda\Library\bin\graphviz> & d:/ruanjiancangku/python_projectkotin/venv/Scripts/python.exe d:/vscode_python_magic/graphviz-python/digraph_write_render.py
<class 'graphviz.dot.Digraph'>
<class 'str'>
// The Test Table
digraph {
A [label="Dot A"]
B [label="Dot B"]
C [label="Dot C"]
A -> B
A -> C
A -> B
B -> C [label=test]
}
fff4.gv文件如下:
// The Test Table
digraph {
A [label="Dot A"]
B [label="Dot B"]
C [label="Dot C"]
A -> B
A -> C
A -> B
B -> C [label=test]
}
pdf结果如下:
fff4.gv.pdf截图
安装过程中遇到问题
安装过程终于到一个问题记录一下:
在安装python-graphviz时扫描完依赖包列表后,报错如下:
winerror 127找不到指定的程序
winerror 127找不到指定的程序
winerror 127找不到指定的程序
winerror 127找不到指定的程序
winerror 127找不到指定的程序
解决如下:
当Anaconda/DLLS中libssl-1_1-x64.dll 和 anaconda3\Library\bin中的libssl-1_1-x64.dll中的日期不一致时,使用Anaconda/DLLS中libssl-1_1-x64.dll 替换掉 anaconda3\Library\bin中的libssl-1_1-x64.dll。
参考:
通过Anaconda安装Graphviz
Python中graphviz库的使用
python graphviz的使用(画图工具)
winerror 127找不到指定的程序
网友评论