流程图 Graphviz - Graph Visualization Software
0.目录
1.参考
https://www.processon.com/ 应该值得一试
知乎 用什么软件画流程图?
说到流程图还是再次提及一下,我们之前说到的Graphviz 。
Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。
它的主要特点是代码生成图像,并且足够的简单。
2.Graphviz
(1)下载安装
http://graphviz.org/Download.php 最下方 agree
Windows
Stable and development Windows Install packages
(2)添加环境变量
path添加: D:\Program Files (x86)\Graphviz2.38\bin
新开cmd:dot -?
(3)中文支持
只要你用 UTF-8 的編碼來儲存描述關係圖的 dot 檔,Graphviz 也可以產生包含中文的關係圖。但 Windows 版的 Graphviz 似乎沒有設定好 fontconfig,因此會找不到中文字型,只要設定好 fontconfig 即可解決。依照預設安裝路徑,設定檔在 C:\Program Files\Graphviz 2.21\etc\fonts\fonts.conf,找到以下這行: <dir>#FONTDIR#</dir> 改成 Windows 字型檔的路徑: <dir>C:\WINDOWS\Fonts</dir> Graphviz 就可以使用中文了!但注意目前似乎只能輸入英文的字型名稱,範例如下: digraph g { node[fontname = "PMingLiu"]; "中文" -> "英文"; }
(4) 可以运行gvedit.exe写入代码,f5直接预览效果
(5) python库,其实用处不大
https://pypi.python.org/pypi/graphviz
3.参考文档
官网: http://graphviz.org/Documentation.php
一次性批量定义属性
node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour edge [color=Blue, style=dashed] //All the lines look like this
标 题: 【合集】dot language Graphviz流程图的问题
(连线连在角上)
portPos headport tailport 这几个属性
digraph login3times{ edge[fontname="Microsoft YaHei"] node[shape=box, fontname="Microsoft YaHei" size="20,20"] fontname="Microsoft YaHei" label="三次登录流程图"
4.语法注意事项
(1)框图为node,默认形状 ellipse 椭圆形, shape = box 长方形,diamond 菱形,circle 圆形
(2)连线为edge,箭头方向 [dir=forward, back, both, or none]
(3)在有必要的时候加双引号,如:“do sth”, "func()"
(4)注释为 //, 或 /* */
(5)不方便之处:
A -> B -> C ->D[label=to] ,则会在三条连线上都添加 to 字样
对比:
A -> B
B -> C[label=to]
C ->D
5.综合应用
//G:\pydata\pycode>dot eg.dot -Tpng -o eg.png digraph graphname { //rankdir=LR node[fontname = "simsun"] fontname="Microsoft YaHei" label="代理IP获取流程图" START[label="入口get_mimvp()" shape=box] END[label=出口ip_port_type_tuple_list, shape=box] JUDGE[label="feature_vectors == []" color=Blue, fontsize=24, shape=diamond] START -> JUDGE {rank=same; "extract_features()", "load_mimvp()"} JUDGE -> "extract_features()"[label=True tailport=w]// headport=n] "extract_features()"[style=filled, fillcolor=orange] JUDGE -> "load_mimvp()"[label=False tailport=s headport=n] "extract_features()" -> "load_mimvp()"[label=return, fontcolor=red, dir=forward] //dir=forward, back, both, or none port_src_list[style=filled, fillcolor=yellow] port_list[style=filled, fillcolor=green] "load_mimvp()" -> {ip_list, type_list, port_src_list} port_src_list -> port_list {rank=same; ip_list, type_list, port_list} -> "merge_result" -> END subgraph cluster1 { label=子图1_特征提取 "invoke extract_features()"[style=filled, fillcolor=orange] judge[label="filepath is not None" color=Blue, shape=diamond] feature_vectors[style=filled, fillcolor=red] "invoke extract_features()" -> judge judge -> "load_images_from_filepath()"[label=True tailport=w] judge -> "load_images_from_src_list()"[label=False tailport=s] {rank=same; "load_images_from_filepath()", "load_images_from_src_list()"} "load_images_from_filepath()" -> "split_image()"[label=img_list] "load_images_from_src_list()" -> "split_image()"[label=img_list] "split_image()" -> "build_vector()"[label="split_imgs"] "build_vector()" -> feature_vectors[label="item = {input: vector}"] // -> "load_mimvp()" } subgraph cluster2 { label=子图2_余弦相似度比较 port_src[style=filled, fillcolor=yellow] port[style=filled, fillcolor=green] port_src -> "get_port()" -> "load_image_from_src()" -> "invoke split_image()" -> "invoke build_vector()" "invoke build_vector()" -> "cos_similarity()"[label="vector\nfeature_vectors", fontcolor=red] "cos_similarity()" -> port } }
代码另存为eg.dot, 编码utf-8
在命令行中运行:G:\pydata\pycode>dot eg.dot -Tpng -o eg.png