Graphviz画图实现可视化
介绍
G r a p h v i z Graphviz Graphviz是一个优秀的开源画图软件,采用 d o t dot dot语言编写,可以根据点,边等属性,自动绘制图,同时可以导出 p d f , p n g , s v g pdf,png,svg pdf,png,svg等格式,功能相当强大。
下载与安装
1.Win10-64位链接:
安装后是文件目录是这个样子
2.配置环境变量
然后
c
m
d
cmd
cmd下输入dot -version
检查是否安装成功。
出现上面文字说明安装成功。
注:如果出现Format: "dot" not recognized. Use one of:
就输入dot -c
至此已经成功安装完毕。
然后就可以开始画图了。
先随便创建一个
d
o
t
dot
dot为后缀名的文件,可以用自己的编译器编写,我是用的
S
u
b
l
i
m
e
T
e
x
t
3
Sublime\ Text\ 3
Sublime Text 3。
实例
先来画个有向图
digraph G {
A -> B
A -> C
C -> D
}
c d cd cd进入到该文件目录下
将利用 d o t dot dot文件生成 p n g png png图片。
输入命令:
dot -Tpng my.dot -o my.png
效果:
G
r
a
p
h
v
i
z
Graphviz
Graphviz功能很强大,比如可以用她画一个简单的二叉排序树。鬼知道我因为左右儿子问题开始画了两个小时。
digraph G {
graph [nodesep=0.3]
node [shape=circle]
edge [arrowhead=vee]
E [group=E]
" " [group=" "]
E -> " "
_tmp [group=" ", label="", width=0, style=invis]
_tmp1 [group=" ", label="", width=0, style=invis]
" " -> _tmp [style=invis]
" " -> _tmp1 [style=invis]
" " -> ".";
_E [group=E, label="", width=0, style=invis]
E -> _E [style=invis]
v [group=v]
E -> v
e [group=e]
v -> e
a[group=a]
e -> a;
_a [group=a, label="", width=0, style=invis]
a -> _a [style=invis]
_a1 [group=a, label="", width=0, style=invis]
a -> _a1 [style=invis]
a -> d;
_e [group=e, label="", width=0, style=invis]
e -> _e [style=invis]
e -> r;
r -> m;
m -> l;
l -> h;
_l [group=l, label="", width=0, style=invis]
l -> _l [style=invis]
h -> g;
_h [group=h, label="", width=0, style=invis]
h -> _h [style=invis]
h -> i;
_m [group=m, label="", width=0, style=invis]
m -> _m [style=invis]
m -> n;
_n [group=n, label="", width=0, style=invis]
n -> _n [style=invis]
_n1 [group=n, label="", width=0, style=invis]
n -> _n1 [style=invis]
n-> o;
_r [group=r, label="", width=0, style=invis]
r -> _r [style=invis]
r -> s;
_s [group=s, label="", width=0, style=invis]
s -> _s [style=invis]
_s1 [group=s, label="", width=0, style=invis]
s -> _s1 [style=invis]
s -> t;
_v [group=v, label="", width=0, style=invis]
v -> _v [style=invis]
/*_v1 [group=v, label="", width=0, style=invis]
v -> _v1 [style=invis]
v -> w;*/
y [group=y,color=red]
v -> y
y -> w
_y [group=y, label="", width=0, style=invis]
y -> _y [style=invis]
{rank=same; _E; e}
}
效果: