最近想寫一些文檔,畫一些程序的邏輯圖,用了vision,markdown等軟件感覺不怎么好用,於是找到graphviz,這款強大的軟件。下面介紹一些入門,還有自己在用的過程中遇到的問題
1、中文亂碼的問題。
采用graphviz.exe的界面編寫好圖形語句之后生成圖片中文文字顯示都沒問題,當關閉.gv文件之后再打開.gv文件那么原來里面的中文就會出現亂碼。在網上搜到一個解決的辦法,重新設定中文自定即:
找到安裝路徑在 C:\Program Files\Graphviz 2.21\etc\fonts\fonts.conf,找到以下這行: <dir>#FONTDIR#</dir>
改成 Windows 字型路徑: <dir>C:\WINDOWS\Fonts</dir>
我沒有成功,可能是版本不對,我就沒有找到<dir>#FONTDIR#</dir>。
2、閃退的問題。
采用graphviz.exe編輯.gv文件,當編寫的內容太多的時候就會出現自動關閉的情況,這個就讓我不能忍受了,只能采用.dot或者.gv文件來搞了。
3、下面是自己的一個例子,用例子來解釋一下dot的基本語法
digraph main { //graph[rankdir="LR",rank="same"]; /* 這一段是用來注釋的 這里可以描述這段圖片意義 */ //子圖(使用subgraph聲明)可以進行和“父圖”類似的設置,唯一注意的是子圖必須以cluster做為名稱的前綴,這點要注意,不用cluster的話就沒有效果了 subgraph cluster_0 { //這段是圖cluster_0的屬性,可以直接在這里面寫 style=filled; color=lightgrey; fontname="KaiTi"; label = "主流程"; node [style=filled,color=white,fontname="SimSun",shape=box]; graph[rankdir="LR",rank="same"]; a0 -> a1[label="XXX"]; a1-> a2[label="XXX"]; a2-> a3[label="XX"]; a0[label="start",style=filled,color=red];// 這個節點的顏色會把上的color=white的顏色給覆蓋了 } subgraph cluster_1{ graph[rankdir="LR",rank="same"]; //rankdir="LR"; //rank="same"; node [style=filled, color=red,shape=box]; edge[style=dashed]; label="節點流程";//這個會亂碼 a1->b0[label="yyy"]; b0-> b1[label="yyx"]; b1-> b2 [label="xke"]; b2-> b3; } }
4、每次運行程序生成圖片的命令是:dot -Tpng myimage.dot/myimage.gv -o image.png,反復輸入的話會比較煩,如果用一些文本編輯器,可以寫一個運行python的腳本會很快,在windows下我們也可以寫成批處理腳本比如my.bat,里面就寫一句話,以后每次生成圖片的時候換個名字就好了。
my.bat
Rem dot -Tpng myimage.dot -o image.png pause; dot -Tpng myimage.dot -o myimage.png pause;
附:windows系統中文字體的英文名
新細明體:PMingLiU 細明體:MingLiU 標楷體:DFKai-SB 黑體:SimHei 宋體:SimSun 新宋體:NSimSun 仿宋:FangSong 楷體:KaiTi 仿宋_GB2312:FangSong_GB2312 楷體_GB2312:KaiTi_GB2312 微軟正黑體:Microsoft JhengHei 微軟雅黑體:Microsoft YaHei
【參考博客】
1、http://blog.csdn.net/lanchunhui/article/details/49472949
2、http://smallx.me/2016/04/10/%E4%BD%BF%E7%94%A8Graphviz%E7%BB%98%E5%88%B6%E6%B5%81%E7%A8%8B%E5%9B%BE%E5%92%8C%E5%85%B3%E7%B3%BB%E5%9B%BE/
3、http://www.graphviz.org/Home.php
4、https://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html