Python對Graphviz的封裝:PyGraphviz

jopen 10年前發布 | 69K 次閱讀 圖形/圖像處理 PyGraphviz

PyGraphviz是Graphviz圖形布局和可視化軟件包的一個Python接口。利用PyGraphviz您可以創建,編輯,讀,寫和繪制圖形,并使用Python來訪問Graphviz圖形數據結構和布局算法。

graphviz是貝爾實驗室開發的一個開源的工具包,它使用一個特定的DSL(領域特定語言):dot作為腳本語言,然后使用布局引擎來解析此腳本,并完成自動布局。graphviz提供豐富的導出格式,如常用的圖片格式,SVG,PDF格式等。

graphviz中包含了眾多的布局器:

  1. dot 默認布局方式,主要用于有向圖
  2. neato 基于spring-model(又稱force-based)算法
  3. twopi 徑向布局
  4. circo 圓環布局
  5. fdp 用于無向圖

graphviz的設計初衷是對有向圖/無向圖等進行自動布局,開發人員使用dot腳本定義圖形元素,然后選擇算法進行布局,最終導出結果。

         首先,在dot腳本中定義圖的頂點和邊,頂點和邊都具有各自的屬性,比如形狀,顏色,填充模式,字體,樣式等。然后使用合適的布局算法進行布局。布局算 法除了繪制各個頂點和邊之外,需要盡可能的將頂點均勻的分布在畫布上,并且盡可能的減少邊的交叉(如果交叉過多,就很難看清楚頂點之間的關系了)。所以使 用graphviz的一般流程為:

  1. 定義一個圖,并向圖中添加需要的頂點和邊
  2. 為頂點和邊添加樣式
  3. 使用布局引擎進行繪制

        一旦熟悉這種開發模式,就可以快速的將你的想法繪制出來。配合一個良好的編輯器(vim/emacs)等,可以極大的提高開發效率,與常見的GUI應用的所見即所得模式對應,此模式稱為所思即所得。比如在我的機器上,使用vim編輯dot腳本,然后將F8映射為調用dot引擎去繪制當前腳本,并打開一個新的窗口來顯示運行結果:

Python對Graphviz的封裝:PyGraphviz

對于開發人員而言,經常會用到的圖形繪制可能包括:函數調用關系,一個復雜的數據結構,系統的模塊組成,抽象語法樹等。

基礎知識

graphviz包含3中元素,圖,頂點和邊。每個元素都可以具有各自的屬性,用來定義字體,樣式,顏色,形狀等。下面是一些簡單的示例,可以幫助我們快速的了解graphviz的基本用法。

示例代碼:

>>> import pygraphviz as pgv
>>> G=pgv.AGraph()
>>> G.add_node('a')
>>> G.add_edge('b','c')
>>> G
strict graph {
        a;
        b -- c;
}

項目主頁:http://www.baiduhome.net/lib/view/home/1416017357664

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!