如果用Python 五分鐘繪制漂亮的系統(tǒng)架構(gòu)圖

Diagrams ?是一個基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過非常簡單的描述就能可視化架構(gòu),并支持以下6個云產(chǎn)品的圖標:

AWS、Azure、GCP、K8s、阿里云 和?Oracle 云

基于Diagrams提供的節(jié)點,你只需要指定一個云產(chǎn)品(實際上選哪個都一樣,我們只需要那個產(chǎn)品相應的圖標,你可以選一個自己覺得好看的產(chǎn)品),使用其內(nèi)部自帶的云產(chǎn)品的圖標,就能簡單繪制基于某云產(chǎn)品圖標的架構(gòu)圖,比如下面的代碼,繪制了一個簡單的基于數(shù)據(jù)庫集群的網(wǎng)絡服務架構(gòu):

非常非常適合用來做畢業(yè)論文的架構(gòu)圖繪制,強烈推薦。

1.準備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細Python安裝指南?進行安裝。如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda

Windows環(huán)境下打開Cmd(開始—運行—CMD),蘋果系統(tǒng)環(huán)境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。

當然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端運行命令安裝依賴模塊,多舒服的一件事?。?a target="_blank">Python 編程的最好搭檔—VSCode 詳細指南。

在終端輸入以下命令安裝我們所需要的依賴模塊:

pip?installdiagrams

看到 Successfully installed xxx 則說明安裝成功。

Diagrams 使用了 graphviz 作為渲染工具,因此為了順利使用 Diagrams ,還需要下載 graphviz:

https://www.graphviz.org/download/

macOS用戶可以直接brew安裝:

brew?installgraphviz

2.基本使用與例子

2.1 初始化與導出

使用 Diagram 類初始化一個繪圖上下文,這個類接收到的第一個參數(shù)將會成為架構(gòu)圖的文件名,而一當代碼運行完畢,它將會以該文件名保存(空格會被下劃線所替代):

此外,它還可以選擇導出的文件格式,在Diagram類里增加outformat參數(shù),也可以不以第一個參數(shù)為文件保存名稱,增加filename參數(shù)指定名稱即可:

withDiagram("Simple Diagram", outformat="jpg", filename="my_diagram")

2.2 節(jié)點類型

由于節(jié)點類型比較多,我們無法一一展示出來,所有類型的節(jié)點里都可以在官方文檔里找到,比如:

阿里云:https://diagrams.mingrammer.com/docs/nodes/alibabacloud

K8S:https://diagrams.mingrammer.com/docs/nodes/k8s

AWS:https://diagrams.mingrammer.com/docs/nodes/aws

接下來以AWS為例子,講解幾個基本的數(shù)據(jù)流例子:

幾個操作符:

>> 表示從左到右的數(shù)據(jù)流

<< 表示從右到左的數(shù)據(jù)流

- 表示沒有箭頭的數(shù)據(jù)流

還可以用變量賦值的形式簡化代碼:

可以看到這里箭頭的方向變了,這是因為Diagram加了direction參數(shù),TB 表示數(shù)據(jù)流向 top to bottm, 即從上到下,可選的其他參數(shù)還有:LR(左至右)、BT(底至上)、RL(右至左)。

上面的代碼還可以用數(shù)組的形式進一步簡化:

2.3 集群塊

使用Cluster 類 并用with以上下文的形式,你可以非常方便地生成一個集群塊:

而且還可以做得相當復雜:

這里代碼很簡單,但是比較長,后續(xù)還有一個比較重要的例子,這里就不展示了,有興趣的話可以點擊最下方閱讀原文進行查看。

2.4 自定義線的顏色與屬性

使用Edge函數(shù),你可以自定義線的顏色與屬性以及備注,比如:

Edge(color="firebrick", style="dashed", label="test")

# 使用火磚色,線的類型為虛線,備注為test

下面是一個比較復雜的例子,但是你如果認真閱讀了,會發(fā)現(xiàn)它其實很簡單:

如果你喜歡今天的Python 教程,請持續(xù)關(guān)注我,如果對你有幫助,麻煩在下面點一個贊/關(guān)注

,有任何問題都可以在下方留言,我們會耐心解答的!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容