用Python編程繪製流程圖,你用過嗎?

您必定據說過 Graphviz 繪圖軟件吧。Graphviz (Graph Visualization Software) 是一個由AT&T實驗室啓動的開源工具包,它採用dot語言去編寫繪製流程圖。DOT是一種圖形描述語言,很是簡單的。例如,如下爲一段繪製流程圖的dot代碼node

digraph G{
a -> b -> c;
b -> d;
}

運行後,繪製出的流程圖結果以下。python

固然,還能夠經過修改流程圖的形狀、樣式與格式,生成一些比較複雜的圖形。例如,對以上代碼進行完善,修改。
web

   
   
   
    
    
             
    
    
 
     
digraph G{
a -> b -> c;
b -> d;
a [shape = polygon, sides = 5, peripheries = 3, color = lightblue, style = filled];
c [shape = polygon, sides = 4,style = filled,fillcolor = yellow,skew = 0.4];
d [shape = invtriangle,color = purple,orientation = 30];
}

運行後,效果以下圖所示。
算法


Graphviz 有許許多多的形狀可供你們選擇。如下列出了一些經常使用的繪製形狀。編程


您可能說,你說了半天,也沒有Python什麼事啊?彆着急,做爲「萬能」的語言,咱們的Pyhton 固然能夠繪製流程圖,只不過,它是經過利用 Graphviz 來實現的。那麼如何利用Python來調用 Graphviz 引擎來繪製流程圖呢?很簡單,你們只須要安裝一個庫,名字爲「graphviz」,咱們能夠經過pip命令來實現安裝。
pip install graphviz

安裝完成以後,咱們就能夠經過寫Python代碼,來實現調用Graphviz 去繪製流程圖了。例如,如下代碼能夠生成一張空白的圖片。
微信

from graphviz import Digraph
dot=Digraph(comment='first graphy',filename='firstGraph',format='png')
dot.view()

接下來就能夠在這張白的圖片對象上繪製流程圖了。如何繪製呢,看如下代碼。網絡

from graphviz import Digraph
dot=Digraph(comment='first graphy',filename='firstGraph',format='png')
dot.node('a', shape='box', style='rounded,filled',label='開始',fontname='Microsoft YaHei')
dot.node('b', shape='parallelogram', style='filled',label='請輸入數據n',fontname='Microsoft YaHei')
dot.edge('a','b')
dot.view()

運行後效果以下圖所示
app



以上代碼中,node函數做用是添加圖形框架,而edge函數顧名思義,做用是繪製圖形之間的關係。view函數則是生成流程圖的圖片並顯示出來。簡單吧。繼續完善一下以上代碼,能夠繪製出一副算法流程圖。
echarts


from graphviz import Digraph
dot=Digraph(comment='first graphy',filename='firstGraph',format='png',)
dot.graph_attr['bgcolor']='gray'
dot.graph_attr['labeljust']='center'
dot.graph_attr['margin']='0.75'
dot.node('a', shape='box', fillcolor='lightblue',style='rounded,filled',label='開始',fontname='Microsoft YaHei')
dot.node('b', shape='parallelogram', fillcolor='lightblue',style='filled',label='請輸入數據 n ',fontname='Microsoft YaHei')
dot.edge('a','b',arrowhead='vee')
dot.node('c', shape='rectangle', fillcolor='lightblue',style='filled',label='i=1,s=0',fontname='Microsoft YaHei')
dot.edge('b','c',arrowhead='vee')
dot.node('d', shape='diamond', fillcolor='lightblue',style='filled',label='i<n',fontname='Microsoft YaHei')
dot.edge('c','d',arrowhead='vee')
dot.node('e', shape='rectangle', fillcolor='lightblue',style='filled',label='s+=i',fontname='Microsoft YaHei')
dot.edge('d','e',label='Yes',arrowhead='vee')
dot.node('f', shape='rectangle', fillcolor='lightblue',style='filled',label='i+=1',fontname='Microsoft YaHei')
dot.edge('e','f',arrowhead='vee')
dot.edge('f','d',arrowhead='vee')
dot.node('g', shape='parallelogram', fillcolor='lightblue',style='filled',label='打印 s 的值',fontname='Microsoft YaHei')
dot.edge('d','g',label='No',arrowhead='vee')
dot.node('h', shape='parallelogram', fillcolor='lightblue',style='rounded,filled',label='結束',fontname='Microsoft YaHei')
dot.edge('g','h',arrowhead='vee')
dot.view()
運行以上代碼後,能夠繪製一副程序流程圖,效果圖以下:


固然,Python中的「graphviz」庫不只能夠繪製流程圖,更重要的是,利用它能夠輔助繪製出一些重要算法的運算結果與框架圖。例如,能夠利用它繪製決策樹算法的運算結果圖。
框架



另外還能夠繪製神經網絡算法關係圖。

怎麼樣,伸出你的小手也來試一試吧!

-end-

Python 青少年編程


Python數據分析系列推薦閱讀: 

透過 「數字」 看湖北疫情,中國加油,湖北加油!

用Pyecharts作數據可視化,驚豔的你不要不要的(一)!


用Pyecharts作數據可視化,驚豔的你不要不要的(二)!


用Pyecharts作數據可視化,驚豔的你不要不要的(三)!


用Pyecharts作數據可視化,驚豔的你不要不要的(四)!


用Pyecharts作數據可視化,驚豔的你不要不要的(五)!


用Pyecharts作數據可視化(六)---手把手教你製做最流行的動態變化圖!


Python公益課堂:


Python青少年編程推出公益課堂啦,今天推出第一講,進來看看吧!


Python青少年編程公益課堂第二講----turtle繪圖中的幾個重要函數及其應用








本文分享自微信公衆號 - python 青少年編程(gh_73f62b58c679)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索