graphviz库pypi官网:https://pypi.org/project/graphviz/
仅支持Python 3.8+,用pip安装:pip install graphviz
似乎是必须要先安装graphviz软件的。在Windows系统下安装软件的教程我之前也写了,参见:开源图可视化软件Graphviz安装教程
1. 创建图对象
有向图:dot = graphviz.Digraph(comment='The Round Table')
comment参数可以理解成注释之类的。
2. 增加节点
dot.node(node_name, [node_label])
node_name是用来区分节点的标识,node_label可以理解成对节点的注释。都必须要是str对象
3. 增加边
有两种写法,可见示例:
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')
这样添加完的边是:
A -> B
A -> L
B -> L [constraint=false]
dot.edges()
入参必须是一个列表,列表中一个元素表示一条边,每个元素要是一个可以迭代的对象,第一个对象是头节点,第二个对象是尾节点。示例中用的字符串当然符合这个标准,但是也可以用列表或者元组之类的,示例:
dot.node("Node1")
dot.node("Node2")
dot.node("Node3")
dot.edges([("Node1","Node2"),("Node2","Node3")])
dot.edge()
的必选入参是tail_name: str, head_name: str
,可以用node[:port[:compass]]
格式,这里我们就简化成只管到node级别了。
也可以单独添加边属性(如示例中的constraint)
4. 生成图的DOT语言代码
dot.source
:返回str格式的代码
5. 渲染图
直接渲染成PDF文件并打开:dot.render('test-output.gv', view=True)
render()
函数的返回值是图片路径。
入参全部可选。
file_name入参(第一个入参)是gv
文件(DOT语言源代码)的路径,可以写成带文件夹的路径,如r'test_folders\test-output.gv'
。
view入参为True
时表示用默认图片查看器打开。
渲染成test-output.gv.pdf的效果: