graphviz數據結構做圖工具應用比較普遍了,不少數據結構均可以使用gv畫出來,好比常見的c語言的結構體、指針、鏈表等。也能夠用來畫流程圖等常規圖示,好用。html
mac os系統能夠經過brew進行安裝node
brew install graphviz
複製代碼
而後就能夠使用dot命令行工具了,這個工具就是用來生成圖片的 git
graphviz從dot語言生成圖形,這個dot語言的語法十分簡單,沒有複雜的分支判斷語句,官方文檔參考:graphviz.gitlab.io/_pages/doc/…github
好比4.gv, 包含一個"hello"的圖形shell
digraph {
hello
}
複製代碼
而後執行dot 4.gv -Tpng -o 4.png && open 4.png
生成圖片,效果以下bash
能夠看到gv默認使用橢圓解釋要畫的圖數據結構
gv支持不少的圖形形狀,完整列表能夠參考https://www.graphviz.org/doc/info/shapes.html 按類別能夠分紅兩類,1是正方形、圓形等幾何形狀,另外一類是表格(Record Node) 編輯器
shape=box
便可
digraph {
hello [shape=box]
}
複製代碼
效果以下 工具
表格gitlab
digraph {
hello [shape=record label="first|second|last"]
}
複製代碼
效果以下
digraph {
node1 [shape=box]
node2 [shape=box]
}
複製代碼
下面來表示node1和node2的關係
單向 node1 -> node2
雙向 node1 -> node2 node2 -> node1
無明確方向 node1 -- node2
graph {
node1 [shape=box]
node2 [shape=box]
node1 -- node2
}
複製代碼
digraph G {
rankdir="RL"
value1 [
shape="circle"
label="value1"
]
value2 [
shape="circle"
label="value2"
]
item1 [
shape="record"
label="item1| <f0> *next : struct item\l| <f1> *prev : struct item\l| <f2> *data : void* \l"
]
item2 [
shape="record"
label="item2| <f0> *next : struct item\l| <f1> *prev : struct item\l| <f2> *data : void* \l"
]
item1:f1 -> null
item1:f0 -> item2
item1:f2 -> value1
item2:f1 -> item1
item2:f0 -> null
item2:f2 -> value2
}
複製代碼
typora, macdown等文本編輯器已經直接支持graphviz圖片的所見即所得的編輯了
能夠關注個人公衆號,第一時間獲取最新更新!
dot語言中的註釋和c語言相同 // 表示單行註釋, /* */表示多行註釋
pdot() {
dot $1.gv -Tpng -o $1.png && open $1.png
}
複製代碼