一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

graphviz 安裝和入門

 Humen_ 2017-11-21

畫(huà)流程圖裝逼神器:graphviz,不解釋

———————————如下言歸正傳,切入正題———————————–

1、下載

http://www./Download_windows.php
下載 graphviz-2.38.zip ,例如我解壓到位置 D:\Program Files\graphviz

2、配置環(huán)境變量

將 D:\Program Files\graphviz\release\bin 添加到環(huán)境變量 Path 中。

3、驗(yàn)證

進(jìn)入windows命令行界面,輸入dot -version,然后按回車,如果顯示graphviz的相關(guān)版本信息,則安裝配置成功。
如下:

C:\Users\shanhy>dot -version
dot - graphviz version 2.38.0 (20140413.2041)
libdir = "D:\Program Files\graphviz\release\bin"
Activated plugin library: gvplugin_dot_layout.dll
Using layout: dot:dot_layout
Activated plugin library: gvplugin_core.dll
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
        D:\Program Files\graphviz\release\bin\config6
                was successfully loaded.
    render      :  cairo dot fig gd gdiplus map pic pov ps svg tk vml vrml xdot
    layout      :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device      :  bmp canon cmap cmapx cmapx_np dot emf emfplus eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg m
etafile pdf pic plain plain-ext png pov ps ps2 svg svgz tif tiff tk vml vmlz vrml wbmp xdot xdot1.2 xdot1.4
    loadimage   :  (lib) bmp eps gd gd2 gif jpe jpeg jpg png ps svg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4、基本繪圖入門

運(yùn)行 D:\Program Files\graphviz\release\bin 目錄下的 gvedit.exe 可以運(yùn)行打開(kāi)圖形界面。
File > New 創(chuàng)建新的腳本文件,編寫(xiě)腳本后,點(diǎn)擊 “Layout”圖標(biāo)(快捷鍵F5)可以直接查看結(jié)果。

小試牛刀:

digraph gvDemo {
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf
    init -> make_string;
    main -> printf;
    execute -> compare;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

效果:
這里寫(xiě)圖片描述

digraph gvDemo{
    node [peripheries=2 style=filled color="#eecc80"]
    edge [color="sienna" fontcolor="green"]
    main -> parse -> execute;
    main -> init [arrowhead = box];
    main -> cleanupi -> main;
    make_string[label = once shape=parallelogram style=filled ]
    execute -> make_string[label=Go style=dashed arrowtail=diamond];
    execute -> printf [shape=box];
    init -> make_string;
    main -> printf[dir=none];
    execute -> compare[dir=both];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

效果(這個(gè)不錯(cuò),可以當(dāng)以后的模板用 ^_^):
這里寫(xiě)圖片描述

示例1:graph 使用 – 描述關(guān)系

graph gvDemo1 {
    a -- b
    a -- b
    b -- a [color=blue]
}
  • 1
  • 2
  • 3
  • 4
  • 5

效果:
這里寫(xiě)圖片描述

示例2:digraph 使用 -> 描述關(guān)系

digraph gvDemo2 {
    a -> b
    a -> b
    b -> a [color=blue style=filled]
}
  • 1
  • 2
  • 3
  • 4
  • 5

效果:
這里寫(xiě)圖片描述

示例3:

digraph gvDemo3 {
    edge[fontname="Microsoft YaHei"]
    node[fontname="Microsoft YaHei"]
    graph[fontname="Microsoft YaHei"]
    label="游戲資源更新流程"
    rankdir="TB"
    start[label="啟動(dòng)游戲" shape=circle style=filled]
    ifwifi[label="網(wǎng)絡(luò)環(huán)境判斷是否 WIFI" shape=diamond]
    needupdate[label="是否有資源需要更新" shape=diamond]
    startslientdl[label="靜默下載" shape=box]
    enterhall[label="進(jìn)入游戲大廳" shape=box]


    enterroom[label="進(jìn)入房間" shape=box]
    resourceuptodate[label="資源不完整" shape=diamond]
    startplay[label="正常游戲" shape=circle fillcolor=blue]
    warning[label="提醒玩家是否更新" shape=diamond]
    startdl[label="進(jìn)入下載界面" shape=box]
    //{rank=same; needupdate, enterhall}


    {shape=diamond; ifwifi, needupdate}


    start -> ifwifi
    ifwifi->needupdate[label="是"]
    ifwifi->enterhall[label="否"]
    needupdate->startslientdl[label="是"]
    startslientdl->enterhall
    needupdate->enterhall[label="否"]


    enterhall -> enterroom
    enterroom -> resourceuptodate
    resourceuptodate -> warning[label="是"]
    resourceuptodate -> startplay[label="否"]
    warning -> startdl[label="確認(rèn)下載"]
    warning -> enterhall[label="取消下載"]
    startdl -> enterhall[label="取消下載"]
    startdl -> startplay[label="下載完成"]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

效果:
這里寫(xiě)圖片描述

示例4:

graph gvDemo4{
    "黑海" -- "亞速海";
    "黑海" -- "博斯普魯斯海峽"
    "達(dá)達(dá)尼爾海峽" -- "愛(ài)琴海"
    subgraph cluster_T{//新東西
        label = "黑海海峽";//新東西
        "達(dá)達(dá)尼爾海峽" -- "馬爾馬拉海" -- "博斯普魯斯海峽";
    }
    subgraph cluster_M{
        label = "地中海海域";
        "中部地中海" -- {"愛(ài)琴海" "愛(ài)奧尼亞海" "西西里海峽"}; //也是新東西
        "西部地中海" -- {"西西里海峽" "第勒尼安海" "利古里亞海" "伊比利海" "阿爾沃蘭海"};
        "愛(ài)奧尼亞海" -- "亞得里亞海";
        "阿爾沃蘭海" -- "直布羅陀海峽";
    }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

效果:
這里寫(xiě)圖片描述

這張圖有些新東西可以看。
第一個(gè)是subgraph 關(guān)鍵字。一如名字所示,他是用來(lái)定義「次級(jí)圖片」用的。
次級(jí)圖片在dot的官方文件中常被叫作cluster subgraph,特指圖示中被方框包裹起來(lái)的那兩塊,其定義方式和一般的graph非常相似,不過(guò)使用上有兩件事需要留意:
graph的命名得以cluster前綴開(kāi)頭,否則語(yǔ)法雖然能過(guò)關(guān),但生不出圖面上您預(yù)期的效果。
如果父圖是無(wú)向圖,他本身也得是無(wú)向圖;反之如果父圖是有向圖,這邊也得乖乖照著來(lái)。
第二個(gè)重點(diǎn)是下面這段:

“中部地中?!?– {“愛(ài)琴海” “愛(ài)奧尼亞?!?“西西里海峽”};
用大括號(hào)括起,用空格分開(kāi)-這是一口氣將好幾個(gè)節(jié)點(diǎn)群組起來(lái)同時(shí)操作的方法,其等效于:
“中部地中?!?– “愛(ài)琴?!? 2 “中部地中?!?– “愛(ài)奧尼亞?!? 3 “中部地中?!?– “西西里海峽”;

您甚至可以用以下程式碼畫(huà)出下面這個(gè)圖:

digraph gvABC {
    { a b c } -> { d e f }
}
  • 1
  • 2
  • 3

這里寫(xiě)圖片描述

除了直接使用工具查看和生成結(jié)果外,還可以使用命令來(lái)操作:

語(yǔ)法:
<cmd> <inputfile> -T <format> -o <o(jì)utputfile>
示例:
dot D:\test\1.gv -Tpng -o image.png
  • 1
  • 2
  • 3
  • 4

Graphviz 中的 cmd 有好多種,每種使用方法都完全相同,差別只在于渲染出來(lái)的圖片效果不一樣。
dot 渲染的圖具有明確方向性(最常用,一般都使用這個(gè))。
neato 渲染的圖缺乏方向性。
twopi 渲染的圖采用放射性布局。
circo 渲染的圖采用環(huán)型布局。
fdp 渲染的圖缺乏方向性。
sfdp 渲染大型的圖,圖片缺乏方向性。

PS:

Setting(快捷鍵Shift + F5) 里面我們可以設(shè)置生成的文件格式,例如可以生成 svg、pdf 等等格式,很強(qiáng)大。你可以參考工具里面可以選擇的值帶入到命令行執(zhí)行。
Graphviz 使用空格來(lái)解析腳本,所以我們?cè)诰帉?xiě)腳本的時(shí)候,對(duì)于含有空格的字符,要使用雙引號(hào),這樣才不會(huì)出現(xiàn)錯(cuò)誤。
更多關(guān)于 dot 語(yǔ)法和graphviz 的使用詳見(jiàn)官方文檔: http://www./Documentation.php

關(guān)于中文亂碼問(wèn)題的解決方法: 先將源文件保存為UTF-8格式,然后對(duì)中文內(nèi)容設(shè)置 frontname,例如:start[label="啟動(dòng)游戲" shape=circle style=filled, fontname="NSimSun"]
或者設(shè)置全局屬性,例如上面gvDemo3 中的代碼片段:

digraph gvDemo3 {
    edge[fontname="Microsoft YaHei"]
    node[fontname="Microsoft YaHei"]
    graph[fontname="Microsoft YaHei"]

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

fontname后面也可以直接指定 xxx.ttf 字體文件
Windows系統(tǒng)中文字體的英文名對(duì)應(yīng)關(guān)系參考如下:
新細(xì)明體:PMingLiU
細(xì)明體:MingLiU
標(biāo)楷體:DFKai-SB
黑體:SimHei
宋體:SimSun
新宋體:NSimSun
仿宋:FangSong
楷體:KaiTi
仿宋_GB2312:FangSong_GB2312
楷體_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微軟雅黑體:Microsoft YaHei

參考資料:
http://www./Documentation/dotguide.pdf(官方)
http://blog./94472/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产午夜精品久久福利| 在线免费观看黄色美女| 欧美日韩亚洲巨色人妻| 国产精品不卡一区二区三区四区| 果冻传媒精选麻豆白晶晶| 欧美有码黄片免费在线视频| 国产伦精品一区二区三区高清版| 欧美又黑又粗大又硬又爽| 麻豆一区二区三区在线免费| 98精品永久免费视频| 亚洲中文字幕在线视频频道| 黑丝袜美女老师的小逼逼| 日韩不卡一区二区三区色图| 欧美人禽色视频免费看| 亚洲一区精品二人人爽久久| 午夜精品久久久免费视频| 伊人久久青草地婷婷综合| 欧美精品久久一二三区| 深夜视频成人在线观看| 熟女乱一区二区三区四区| 精品欧美一区二区三久久| 中文人妻精品一区二区三区四区 | 麻豆一区二区三区在线免费| 日本av一区二区不卡| 欧美日韩国内一区二区| 国产欧美一区二区久久| 我想看亚洲一级黄色录像| 久久亚洲国产视频三级黄| 国产三级黄片在线免费看| 精品少妇人妻一区二区三区| 日韩成人高清免费在线| 国产激情一区二区三区不卡| 爽到高潮嗷嗷叫之在现观看| 国产精品视频一区麻豆专区| 日韩成人动画在线观看| 亚洲午夜精品视频观看| 国产免费自拍黄片免费看| 国产av熟女一区二区三区蜜桃| 久热99中文字幕视频在线| 欧美偷拍一区二区三区四区| 日韩在线中文字幕不卡|