攝影或3C

Python: 如何使用graphviz套件繪製流程圖? 如何創建子圖? with g.subgraph(name=’cluster_0′) as c:

本文參考:

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

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡