本文參考:
https://graphviz.readthedocs.io/en/stable/examples.html
code:
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 10 13:12:23 2024
@author: SavingKing
"""
from graphviz import Digraph
g = Digraph('G', filename='cluster.gv', format='png')
# 注意:子圖的名稱必須以 'cluster'(全部小寫)開頭
# 這樣 Graphviz 才能將其識別為特殊的集群子圖
with g.subgraph(name='cluster_0') as c:
c.attr(style='filled', color='lightgrey')
c.node_attr.update(style='filled', color='white')
c.edges([('a0', 'a1'), ('a1', 'a2'), ('a2', 'a3')])
c.attr(label='process #1')
with g.subgraph(name='cluster_1') as c:
c.attr(color='blue')
c.node_attr['style'] = 'filled'
c.edges([('b0', 'b1'), ('b1', 'b2'), ('b2', 'b3')])
c.attr(label='process #2')
g.edge('start', 'a0')
g.edge('start', 'b0')
g.edge('a1', 'b3')
g.edge('b2', 'a3')
g.edge('a3', 'a0')
g.edge('a3', 'end')
g.edge('b3', 'end')
g.node('start', shape='Mdiamond')
g.node('end', shape='Msquare')
g.view()
輸出的
cluster.gv.png:
推薦hahow線上學習python: https://igrape.net/30afN
Digraph?
Digraph 類的詳細介紹
Digraph
是 Graphviz Python 庫中的一個類,用於創建和操縱有向圖(directed graph)。這個類提供了豐富的接口來定義節點、邊以及圖的其他屬性,並可以將這些圖形輸出為多種格式。下面是 Digraph
類的初始化參數和它們的用途:
初始化參數
- name: 可選,圖的名稱,用於生成的 DOT 源代碼中。
- comment: 可選,添加到源代碼第一行的註釋。
- filename: 可選,用於保存源代碼的文件名。如果未指定,則默認使用
name
屬性加上 ‘.gv’ 擴展名。 - directory: 可選,用於保存源文件和渲染文件的目錄或子目錄。
- format: 可選,指定渲染輸出格式(如 ‘pdf’, ‘png’ 等)。
- engine: 可選,布局命令(如 ‘dot’, ‘neato’ 等)。
- renderer: 可選,指定輸出渲染器(如 ‘cairo’, ‘gd’ 等)。
- formatter: 可選,指定輸出格式化程序(如 ‘cairo’, ‘gd’ 等)。
- encoding: 可選,用於保存源代碼的編碼格式。
- graph_attr: 可選,設定圖的屬性,是一個映射對象,包含屬性名和值。
- node_attr: 可選,設定所有節點的默認屬性,是一個映射對象。
- edge_attr: 可選,設定所有邊的默認屬性,是一個映射對象。
- body: 可選,可以直接添加到圖的 body 部分的原始行。
- strict: 布爾值,可選,設定為 True 時,渲染過程會合併多條邊。
推薦hahow線上學習python: https://igrape.net/30afN