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

分享

Graphviz使用簡介(中文亂碼的問題)

 henan2000 2011-11-09

Graphviz使用簡介(中文亂碼的問題)

2010-11-17 06:17:49| 分類: 工作日志 | 標簽: |字號 訂閱

Graphviz使用簡介

graphviz是基于dot語言的繪圖工具,可以畫有向圖、無向圖、關系圖、目錄圖、流程圖等。具體作用可見它的官方網站

dot draws directed graphs as hierarchies. It runs as a command line program,
web visualization service, or with a compatible graphical interface.
Its features include well-tuned layout algorithms for placing nodes and edge
splines, edge labels, “record” shapes with “ports” for drawing data structures;
cluster layouts; and an underlying file language for stream-oriented
graph tools.

正如上面所提到的,Graphviz是門基于dot語言的繪圖工具,也就是說它不是使用鼠標來畫圖的,而是通過dot這種描述語言來做的,然后在命令行下使用命令生成對應的圖片,這樣做的優(yōu)點是不用去手功的對齊坐標,而且也可以做為一些可視化的解決方案,但是它的缺點同樣是顯著的:無法對每一個元素的位置進行很詳細的控制。這里就存在一個取舍問題了。像我這種就用來畫畫流程圖的人來說,已經夠用了,而且要比visio那種工具更好用。

DOT語言由三個對象組成grahps,nodes,edges,這與離散數(shù)學中的圖的定義是一個概念。下面是個具體的例子,第一行是圖名與類型,其于的就是創(chuàng)建nodes,edges,或者subgraphs。在要創(chuàng)建的這些對象中,它們的名字與屬性可以是 C identifiers,數(shù)字,或者是quoted C string, 引號的作用主要是為了在名字與屬性中可以帶空白符與標點符號。

例子:

digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute -> printf;
init -> make_string;
main -> printf;
execute -> compare;
}

在命令行使用如下命令

dot -Tpng example.dot -o example.png

-T的意思是生成的文件是png格式的,example.dot是代碼所在文件,-o指定生成的文件名。運行成功后將會類似如下的圖。

dot 教程 exmaple

node將在它第一次出現(xiàn)時建立,當多個node使用操作符”->”來聯(lián)接時,邊將自動被創(chuàng)建。

如果想讓邊帶有文字,如下圖,可以使用類似如下語句

main->parse[label=”abc”];

下面是一個比較復雜的例子:

digraph G {
edge [fontname="FangSong"];
node [shape=box, fontname="FangSong" size="20,20"];
{
Lexical_Analyzer [label="詞法分析器"];
Syntax_Analyzer [label="語法分析器" ];
Semantic_Analyzer [label="語義分析" ];
Intermediate_Code_Generator [label="中間代碼生成器" ];
Machine_Independent_Code_Optimizer [label="機器無關代碼優(yōu)化器" ];
Code_Generator [label="代碼生成器" ];
Machine_Dependent_Code_Optimizer [label="機器相關代碼優(yōu)化器" ];
}
node[shape=plaintext, fontname="KaiTi" ]{
character_stream [label="字符流"];
target_machine_code [label="目標機器語言" ];
}character_stream ->Lexical_Analyzer;
Lexical_Analyzer ->Syntax_Analyzer [label="符號流"];
Syntax_Analyzer ->Semantic_Analyzer [label="語法樹"];
Semantic_Analyzer ->Intermediate_Code_Generator [label="語法樹"] ;
Intermediate_Code_Generator->Machine_Independent_Code_Optimizer [label="中間表示形式"];
Machine_Independent_Code_Optimizer ->Code_Generator [label="中間表示形式"];
Code_Generator ->Machine_Dependent_Code_Optimizer [label="目標機器語言"];
Machine_Dependent_Code_Optimizer->target_machine_code ;
}

一個編譯器的各個步驟

這里要注意的是中文問題,graphviz默認設置下是不支持中文,如果在dot文件中直接寫中文,會顯示成亂碼,要解決這個問題要做兩件事,

1、把源文件保存為UTF-8的格式
2、設置fontname,也就是紅色的部分,

如果想更深入的了解graphviz,可以去它的官方網站看一下相關文檔,里面還有一些paper,如果感興趣的話也可以看看,其實graphviz還用到了編譯原理的知識,只是沒有什么創(chuàng)新所以也就沒有重點說了,但從這可見編譯原理的重要性。

1、windows系統(tǒng)中文字體的英文名

新細明體:PMingLiU
細明體:MingLiU
標楷體:DFKai-SB
黑體:SimHei
宋體:SimSun
新宋體:NSimSun
仿宋:FangSong
楷體:KaiTi
仿宋_GB2312:FangSong_GB2312
楷體_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微軟雅黑體:Microsoft YaHei

更詳細的資料見:http://www./chinesemac/pages/fonts.html

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲男人天堂成人在线视频 | 老司机精品视频免费入口| 视频在线播放你懂的一区| 又大又长又粗又黄国产| 国产精品福利一二三区| 国产精品日本女优在线观看| 久久碰国产一区二区三区| 欧美精品亚洲精品日韩精品| 婷婷开心五月亚洲综合| 好吊妞在线免费观看视频| 国产成人精品在线一区二区三区| 久久热麻豆国产精品视频| 高清一区二区三区不卡免费| 国产一区二区三区四区免费| 国产欧美日韩精品自拍| 中文字幕亚洲精品人妻| 91日韩在线观看你懂的| 人妻一区二区三区多毛女| 99亚洲综合精品成人网色播| 人妻巨大乳一二三区麻豆| 久久碰国产一区二区三区| 国产精品欧美一级免费| 国产精品免费视频专区| 日韩人妻一区二区欧美| 久久国产亚洲精品赲碰热| 国产精品亚洲欧美一区麻豆| 亚洲国产中文字幕在线观看| 日韩中文无线码在线视频| 五月婷婷六月丁香狠狠| 色婷婷在线视频免费播放| 日本黄色高清视频久久| 91精品国产综合久久不卡| 欧美乱码精品一区二区三| 免费啪视频免费欧美亚洲| 国产又粗又猛又爽又黄的文字| 国产不卡的视频在线观看| 欧美成人久久久免费播放| 国产传媒精品视频一区| 日韩中文高清在线专区| 亚洲精品国产精品日韩| 丝袜视频日本成人午夜视频|