Graphviz 資料網路的布局軟體

2021-09-19 20:09:28 字數 2872 閱讀 3744

接觸graphviz是幾年前的乙個專案,要畫出資料網路的布局,使用graphviz能比較清楚的畫出資料之間的關係。

可以在gallery中檢視他能完成的圖形:最方便的地方在於能夠很快的清晰的畫出點與點之間的關係,並且有許多布局演算法能夠很好的去布局。

之前使用它畫過流程圖,如:

還有決策樹。使用twopi畫出資料的關聯關係:

根據自己的版本來選擇:

安裝在任意喜歡的位置。但是需要把安裝目錄的graphviz/bin加入環境變數path裡,我這裡只寫了相對路徑。

開啟cmd,輸入:dot --help,如果彈出以下資訊,就是安裝成功:

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

dot 預設布局方式,主要用於有向圖

neato 基於spring-model(又稱force-based)演算法

twopi 徑向布局

circo 圓環布局

fdp 用於無向圖

以上布局我都使用過,但是個人比較傾向dot和twopi,可以根據需求來畫圖。

以畫乙個dot布局為例子:

(1)建立乙個first.dot指令碼:

digraph first2
解釋:digraph是畫圖型別,接觸高階使用可以有不同的型別,first2可以和檔名first不一樣。畫了abcd4個點。然後a->b表示a點指向b點,如果有線條的指向,可以不用先宣告點。即,上述**等價於:

digraph first2
(2)畫圖

開啟cmd到first.dot目錄下,執行:

dot -tpng first.dot -o first.png

可以得到畫好的圖形。

解釋:dot表示使用的是dot布局,其他布局相應的修改即可,-t表示格式,即畫成png格式,-o表示重新命名為first.png。

在這裡如果出現syntax error,可看第四部分常見問題解決。

(3)畫圖結果

上面的簡單的**得到以下結果:

網上參考一篇部落格,寫的比較詳細,對於很多應用場景都有提到:

但是,想要查詢每個屬性的資訊,可以看官網的查詢文件:

node, edge and graph attributes(屬性):

node shapes(節點形狀):

arrow shapes(箭頭形狀):

如果遇見以下錯誤:

image.png

解決:1、編碼問題。

把檔案另存為,'utf-8'或'ansi'(不涉及中文使用時),看是否編譯出問題。

2、對於檔案格式的識別。

將檔案開頭加2個空格,其識別的時候,對於第乙個字元,在windows下會問題,源於檔案的編碼格式。

修改檔案,graphviz2.37\etc\fonts\fonts.conf,安裝的相對目錄。

(1)檔案修改

將下列**:

#windowsfontdir#

~/.fonts

修改為:

c:\windows\fonts

~/.fonts

(2)文字設定

2.1 文字儲存的編碼為"utf-8"

2.2 文字中的字型設定

使用的dot檔案按照規則屬性,設定fontname屬性即可:

fontname="microsoft yahei"

edge [fontname="microsoft yahei"];

node [fontname="microsoft yahei"];

以上分別是全域性、邊、節點的設定。

可用的中文,有很多:

黑體:simhei 

宋體:simsun

新宋體:nsimsun

仿宋:fangsong

楷體:kaiti

新細明體:pmingliu

細明體:mingliu

標楷體:dfkai-sb

微軟正黑體:microsoft jhenghei

微軟雅黑體:microsoft yahei

2.3dot檔案中的中文前後加空格

如:label="節點"應為label=" 節點 "

文件與資料 網路

敏捷園區網路解決方案設計指南和最佳實踐 交換機堆疊 svf助手 命令 告警 日誌 錯誤碼 mib查詢 華為企業網路產品 相簿服務平台 s12700 v200r012c00 產品文件 s1720,s2700,s5700,s6720 v200r012 c00 c20 產品文件 consolidated ...

資料網路開啟失敗

經常用手機的小夥伴們肯定會遇到這樣的問題,在戶外沒有wifi的時候,開啟了資料網路,可是明明已經顯示連線了資料網路,手機也並未欠費,卻無法上網,這是怎麼回事呢?有什麼解決辦法呢?首先我們應該了解一下手機使用資料網路是怎麼上網的。當我們身處較為偏僻的地方,基站建設會比較少,訊號覆蓋沒有那麼強,此時資料...

jq easyui資料網路的分頁過程

第一次寫技術方面的文章,有點忐忑,總怕自己講的不對誤導別人。但是萬事總有個開頭,有不足錯誤之處,請各位讀者老爺指出。言歸正傳,最近剛進新公司,上頭要求我先熟悉熟悉easyui這個元件庫。在涉及到datagrid元件的分頁功能時,遇到了一點問題。我們在處理分頁時,通常有兩種方式,前端分頁和後台分頁。前...