第一步:Graphviz官網安裝graphviz(可下載.msi和免安裝版),下載後將bin目錄配置到環境變量Path中node
第二步:命令行安裝graphviz,這個模塊給出了不少的python接口去使用Graphviz軟件python
pip install graphviz
python-graphviz
是什麼?數據庫
==簡介==:Graphviz是AT&T Labs Research開發的開源圖形可視化軟件。圖形可視化是一種將結構信息表示爲抽象圖形和網絡圖的方式。它在網絡,生物信息學,軟件工程,數據庫和網頁設計,機器學習以及其餘技術領域的可視界面中具備重要的應用。網絡
==特徵==:Graphviz佈局程序以簡單的文本語言獲取圖形的描述,並以有用的格式製做圖表,例如用於網頁的圖像和SVG;PDF或Postscript,以包含在其餘文檔中;或在交互式圖形瀏覽器中顯示。Graphviz具備用於具體圖表的許多有用功能,例如顏色,字體,表格節點佈局,線條樣式,超連接和自定義形狀的選項。機器學習
使用原理: graphviz實際是一種繪圖工具,能夠根據dot腳原本畫出樹形圖,==咱們能夠利用python代碼生成dot腳本==,而後調用graphviz來解析腳本,生成一張圖片.工具
dot腳本語言:是開源工具包Graphviz上用來畫圖的一門腳本語言,語法很是簡單,官方文檔也只有8頁。
案例一:佈局
from graphviz import Digraph dot = Digraph(comment='The Test Table')# 給dot腳本語言加註釋 #----------建立結點語句---- # 添加圓點A,A的標籤是Dot A dot.node('A', 'Dot A') # 添加圓點 B, B的標籤是Dot B dot.node('B', 'Dot B') # 添加圓點 C, C的標籤是Dot C dot.node(name='C', label= 'Dot C',color='red') #----------建立邊的語句-----(兩種方式) # 建立一堆邊,即鏈接AB的兩條邊,鏈接AC的一條邊。 dot.edges(['AB', 'AC']) # 在建立兩圓點之間建立一條邊 dot.edge('B', 'C', 'test') #--------觀看原dot語言的表達形式----- # 獲取DOT source源碼的字符串形式,如圖一 print(dot.source) #--------顯示圖像的----------- #dot.view() 直接顯示,使用Digraph.gv默認名 dot.render('test-table.gv', view=True)# 設置圖片名,以及直接顯示
案例二:學習
from graphviz import Digraph sub_g0 = Digraph(comment="process1",graph_attr={"style":'filled',"color":'lightgrey'},node_attr={"style":"filled","color":"red"}) sub_g0.node("a0","a0") sub_g0.node("a1","a1") sub_g0.node("a2","a2") sub_g0.node("a3","a3") sub_g0.edge("a0","a1") sub_g0.edge("a1","a2") sub_g0.edge("a2","a3") sub_g0.edge("a3", "a0") sub_g1 = Digraph(comment="process1",graph_attr={"style":'filled'}) sub_g1.node("B","b0") sub_g1.node("C","b1") sub_g1.node("D","b2") sub_g1.node("E","b3") sub_g1.edges(["BC","CD","DE"]) grap_g = Digraph("G",format="pdf") grap_g.node( "start", label="start",shape="Mdiamond") grap_g.node( "end", label="end", shape="Mdiamond") grap_g.subgraph(sub_g0) #將sub_g0和sub_g0 的Digraph加入到grap_g的Digraph中,方便一次顯示 grap_g.subgraph(sub_g0) grap_g.edge("start","a0") grap_g.edge("start","B") grap_g.edge("a1","E") grap_g.edge("D","a3") grap_g.edge("a3","end") grap_g.edge("E","end") grap_g.view() #grap_g.render('test-table2.gv', view=True)