日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Graphviz简介

發布時間:2024/6/21 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 Graphviz简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

graphviz是一款圖形軟件,與一般的"所見即所得"的普通畫圖工具主要使用鼠標拖拽不同,graphviz使用一門名為dot的語言用來描述圖表,用戶使用dot寫腳本,graphviz根據腳本自動布局生成圖表。graphviz將這種方式稱為"所思即所得"。

使用這種方式有幾個好處,一個是將用戶從排版中解放出來,由工具自動處理這個過程,用戶不必再關心如何布局,修改添加刪除節點的時候也不用再對整個圖的排版布局重新進行人工的整理;另一個好處是某些復雜的情況,比如代碼的類圖和調用圖,dot腳本可以使用其他工具自動生成。

graphviz提供若干的布局器,dot(這個指的是布局命令,上一個dot指的是腳本名字)是默認的布局方式,主要用于畫有向圖;還有其他的布局方式可以參考man dot;

HelloWorld

dot的語法非常簡單,一個最簡單的有向圖可以像下面這樣

digraph g{
	a;
	b;
	a -> b;
}

digraph是關鍵字,代表有向圖,g是圖的名字,a和b是僅有的兩個節點,a指向b;將這段代碼保存為文件g.gv,使用如下命令生成圖片;

dot g.gv -Tpng -o g.png

Dot語法

[strict] (graph|digraph) name { statement-list }

以上是一個頂級圖的定義方式。如果使用了strict關鍵字,指明一個圖是"嚴格的",那么將禁止在同一對節點之間定義多條邊。如果使用digraph關鍵字,表明這是一個有向圖,連線符必須為->;如果使用graph關鍵字,表明這是一個無向圖,連線符必須為--;

語句有以下幾種形式:

name0=val0;		//設置樣式屬性
node[name=val];	//設置節點的樣式屬性
edge[name=val];	//設置邊的樣式屬性

//創建一個節點n0,并設置它的各種屬性
n0[name0=val0, name1=val1, ...]; 

//創建一條邊連接節點n0和n1,并設置它的各種屬性
n0 edgeop n1[name0=val0, name1=val1, ...]; 

//創建一個子圖,子圖的名稱必須以cluster開頭
[subgraph name] { statement-list } 

節點的常用屬性及值如下一般有

形狀(shape):record, box, oval, ellipse, rect ...
邊框顏色(color) 填充顏色(fillcolor):
樣式(style):solid, dashed, dotted, bold, filled, rounded ...
標簽(label)

一個更復雜的例子,一個簡單的站樁對戰角色的動畫狀態圖

digraph{
	rankdir=LR;
	node[shape="record"]
	
	入場[style = "filled", fillcolor = "green"];
	預備;
	受傷;
	攻擊;
	死亡;
	

	入場 -> 預備;

	預備 -> 受傷;
	受傷 -> 預備;

	預備 -> 前搖;
	后搖 -> 預備;

	預備 -> 死亡;
	受傷 -> 死亡;

	subgraph cluster_attack{
		bgcolor = "grey";
		前搖 -> 攻擊 -> 后搖;
	}
}

當節點的shape屬性為record時,可以在label中使用分隔符‘|’來分割這個節點;使用{name0|name1}的形式來縱向分割節點;
還可以在label中定義表格,使用的語法和html類似。更多的例子可以訪問
http://www.graphviz.org/content/node-shapes

局限

graphviz的好處是把用戶從排版中解放出來,但是相應的,也帶來了“不能確定每個結點的位置”的局限性,比如時序圖,使用graphviz就很難表達(非常可能是我不會)。

總結

以上是生活随笔為你收集整理的Graphviz简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。