Graphviz安装及利用亚洲城ca88手机版官网

亚洲城ca88手机版官网 10
亚洲城ca88手机版官网

Graphviz是老牌的Bell实验室的四位牛人开采的七个摄影工具,它提供了“所想即所得”的见地,通过dot语言来编排脚本并绘制图形,轻巧易懂。

Graphviz介绍

介绍二个高效而轻松的绘图工具graphviz。graphviz是Bell实验室开垦的多个开源的工具包,它利用一个一定的DSL(领域特定语言):
dot作为脚本语言,然后使用布局引擎来分析此脚本,并成功机关布局。graphviz提供丰裕的导出格式,如常用的图片格式,SVG,PDF格式等。

graphviz中含有了相当多的布局器:

  • dot 暗许布局格局,主要用于有向图
  • neato 基于spring-model(又称force-based)算法
  • twopi 径向布局
  • circo 圆环布局
  • fdp 用于无向图

本文首要介绍dot有向图。

第一,在dot脚本中定义图的极限和边,顶点和边都有着各自的习性,比方形状,颜色,填充格局,字体,样式等。然后利用合适的布局算法举行布局。布局算法除了绘制种种顶点和边之外,供给尽只怕的将顶点均匀的分布在画布上,并且尽量的滑坡边的交叉(要是交叉过多,就很丢脸清楚顶点之间的关系了)。所以选拔graphviz的貌似流程为:

  1. 概念贰个图,并向图中加多须求的巅峰和边
  2. 为极端和边增添样式
  3. 选取布局引擎进行绘图

在自家的机械上,使用Sublime Text
编辑dot脚本,然后将F7/Cmd-B映射为调用dot引擎去绘制当前剧本,并展开叁个新的窗口来呈现运营结果:

工欲善其事必先利其器,作为技士平常不可或缺必要张开要求解析和UML建立模型可能向组里成员介绍项指标架构,此时作出五花八门的图就不可制止,那篇文章主要介绍一款壮大的适合程序猿的绘图工具graphviz。

graphviz安装:

Sublime Text 3 集成Graphviz方法

如下:
第一步:下载https://github.com/munro/SublimeGraphvizPreview/archive/master.zip
其次步:张开Preferences -> Packages Settings-> Packages Control
-> Settings
User,来确认一下installed_packages未有GraphVizPreview。並且扩张”remove_orphaned”:
false幸免Sublime Text 把手动安装的插件包给删除了。

{
  "bootstrapped": true,
  "in_process_packages":
  [
  ],
  "installed_packages":
  [
  "EncodingHelper",
  "Package Control",
  "Theme - Spacegray"
  ],
  "remove_orphaned": false
}

其三步:张开Preferences -> Browse Packages…步入到Sublime
Text的插件包下Packa瓦斯。
第四步:解压zip文件到Packa瓦斯下,况且改换文件夹SublimeGraphvizPreview-master为GraphVizPreview。
第五步:重启Sublime Text。

注:神速键为Win+Shift+G,调用Graphviz
调用dot引擎去绘制当前剧本。

器重内容:

  1. 干什么选择graphviz?
  2. graphviz是什么?
  3. 何以选择graphviz?

graphviz有各个设置格局,源码及发行李包裹。

应用graphviz绘制流程图

Paste_Image.png

注:引用image图片的时候,需求动用命令,
动用 dot 命令编写翻译,如

dot hello.dot -T png -o hello.png

完整的吩咐为:

<cmd> <inputfile> -T <format> -o <outputfile>

示范如下:

D:\\>dot -Tjpg tes.dot -o test.jpg
<cmd> 介绍
dot 渲染的图具有明确方向性。
neato 渲染的图缺乏方向性。
twopi 渲染的图采用放射性布局。
circo 渲染的图采用环型布局。
fdp 渲染的图缺乏方向性。
sfdp 渲染大型的图,图片缺乏方向性。

WHY

有人讲自家曾经有Visio、Rational
罗斯那一个庞大的水墨画软件了,为什么还要花时间来学学graphviz那款软件呢?确实像Visio这种软件确实很强劲了,图形化操作分界面上手也万分容易易行,不过……请用visio画出上边那幅图(简书居然未有图床,差评…)

亚洲城ca88手机版官网 1

自己深信不疑您内心早就有20000头草泥马在跑马,如若自身告诉你graphviz很轻巧就做出这种图,你会学啊?另外作为程序员你别告诉自个儿你只在windows下打开付出,这一年头不搞搞Linux都不佳意思说自身是搞IT的,而Visio等软件的平台包容性就呵呵了,究竟微软的亲外甥,graphviz则是windows、linux、Mac全平台包容,借使还要再比较与visio等软件的涉嫌,那就像是markdown与word的涉及,那下懂了吗。

最近流行版源码下载:

基础知识

graphviz满含3相月素,图,顶点和边。每种成分都得以具备各自的属性,用来定义字体,样式,颜色,形状等。

WHAT

好了,说了那么多最后依然要介绍graphviz到底是何等,官方网址的牵线如下:

Graphviz is open source graph visualization software. Graph
visualization is a way of representing structural information as
diagrams of abstract graphs and networks. It has important
applications in networking, bioinformatics, software engineering,
database and web design, machine learning, and in visual interfaces
for other technical domains.

轻松易行词汇就不翻译了,首先是三个图纸可视化软件,然后能用来网络、软件工程、数据库、网址设计这几个方面,同理可得一切为了程序猿(感动)。假如您心动了,接着看==》

任何版本下载链接参照:

第一个graphviz图

digraph abc{
  a;
  b;
  c;
  d;

  a -> b;
  b -> d;
  c -> d;
}

Paste_Image.png

HOW

嗯嗯,没有错,将来才是重头戏,先show多少个案例,看下图

亚洲城ca88手机版官网 2

行吗,假装吓吓你,上代码(没错大家用代码,所思即所得)

digraph finite_state_machine {
  rankdir = LR;
  size = "8,5"
  node [shape = doublecircle];
  LR_0 LR_3 LR_4 LR_8;
  node [shape = circle];

  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}

对此代码是或不是有种就算不打听只是好像也能看懂的赶脚?graphviz使用dot作为脚本语言,用布局引擎解析脚本完结机关布局(拯救直男癌),常用的布局如下:

  • dot 暗中同意布局格局,主要用来有向图
  • neato 基于spring-model(又称force-based)算法
  • twopi 径向布局
  • circo 圆环布局
  • fdp 用于无向图
    末端呈现不一样的布局效用!

发行包:

概念顶点和边的样式

digraph abc{
  node [shape="record"];
  edge [style="dashed"];
  a;
  b;
  c;
  d;

  a -> b;
  b -> d;
  c -> d;
}

Paste_Image.png

初阶画个图

软件下载点击这里

  1. windows用户下载相应版本傻瓜式安装。
  2. linux用户直接sudo apt-get install graphviz也许yum install graphviz
  3. Mac用户brew install graphviz

编辑器只要可以支持文本编辑就可以如记事本,vim等,本文使用sublime

首先,graphviz有多少个宗旨因素【图,点,边】,图分为有向图和无向图,点指的是代表成分的图片,边则是三翻五次图形之间的线,如下图:

亚洲城ca88手机版官网 3

digraph lesson2{
    a->b;
}

digraph指图的体系是有向图,lesson2是图的称号,a,b代表点,->代表连接a,b的边。若想做出无向图则将代码连接如下:

graph lesson2{    /* digraph变为graph */
    a--b;                  /* -> 变成 -- */
}

语法上还是很形象的。其实graphviz画图需求操作的无非是图,点,边八个要素,上边介绍怎么着对那多少个成分进行安装。

RedHat and
CentOS:

非常修改顶点和边样式

将顶点a的水彩改为淡银灰,并将c到d的边改为深紫。

digraph abc{
  node [shape="record"];
  edge [style="dashed"];

  a [style="filled", color="black", fillcolor="chartreuse"];
  b;
  c;
  d;

  a -> b;
  b -> d;
  c -> d [color="red"];
}

Paste_Image.png

先看案例

digraph lesson3 {
  rankdir = LR;
  size = "8,5"

  node [shape = doublecircle];

  LR_0 LR_3 LR_4 LR_8;

  node [shape = circle];

  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}

保存文件名称叫lesson3.dot。
接纳dot渲染,实施命令dot lesson3.dot -T png -o lesson3.png得到下图:

亚洲城ca88手机版官网 4

dot渲染

动用circo实行渲染,施行命令circo lesson3.dot -T png -o
lesson3.png获得下图:

亚洲城ca88手机版官网 5

circo渲染

地点的代码显示了4处有关图的安装

  1. digraph设置了图的类型为有向图,图的称号为lesson3;
  2. rankdir设置图的排列格局,LENVISION是从左到右,TB是从上到下;
  3. size设置了图片的高低,单位是inch。(貌似上边七个图设置小了点,好呢,精通精神);
  4. 同等的代码画出了不相同的图,关键是在于早先时期渲染引擎的选项,差别的授命渲染出不一致的布局。

Fedora:

子图的绘图

digraph abc{

  node [shape="record"];
  edge [style="dashed"];

  a [style="filled", color="black", fillcolor="chartreuse"];
  b;

    subgraph cluster_cd{
      label="c and d";
      bgcolor="blue";
      c;
      d;
    }

  a -> b;
  b -> d;
  c -> d [color="red"];
}

Paste_Image.png

注:子图的称号必须以cluster起头,否则graphviz比不大概设别。

先看下图:

亚洲城ca88手机版官网 6

再看代码:

digraph lesson4{
    size="8,8";
    a->b->c;
    a->d[label="label1"];
    e[shape=box,style=filled,color="red"];
    e->d[label="label2"];
    f[shape=polygon,sides=8,peripheries=4,color="red"];
    d->f;
    g[shape=record];
    h[shape=Mrecord];
    g->h;
}

有关点,形状属性是shape,默认为椭圆,record是矩形,Mrecord是圆角矩形,polygon是多方面形,sides用来定义边数,peripheries用来定义层数,color用来定义颜色。单个点的设置直接在点名称后的正方内设置,结尾记得加分号停止。全局设置使用node[],则后边的点都将运用node的属性设置,作者比较少用所以地点的代码不展现。

Ubuntu:

数据结构的可视化

先看图:

亚洲城ca88手机版官网 7

再看代码:

digraph lesson5{
    a->b[label="label1"];
    a->c[style=dotted];
    b->e[color="red"];
    b->f[dir=both];
    c->g[dir=back];
    c->h[dir=none,decorate=true,label="label2"];
}

至于边,颜色,类型,箭头,连接,那么些属性是摄影时经常会用到的,label为边添Gavin字,style用于安装边的门类,dir用于安装箭头的势头forword,back,both,none多样,color用于安装边的颜料,decorate用于将label加多的文字与边连接起来,常常用于节点复杂时。

yum:

二个hash表的数据结构

hash表内容

struct st_hash_type {
    int (*compare) ();
    int (*hash) ();
};

struct st_table_entry {
    unsigned int hash;
    char *key;
    char *record;
    st_table_entry *next;
};

struct st_table {
    struct st_hash_type *type;
    int num_bins;
/* slot count */
    int num_entries;
/* total number of entries */
    struct st_table_entry **bins;
/* slot */
};

本子如下:

digraph st2{
  fontname = "Verdana";
  fontsize = 10;
  rankdir=TB;

  node [fontname = "Verdana", fontsize = 10, color="skyblue", shape="record"];

  edge [fontname = "Verdana", fontsize = 10, color="crimson", style="solid"];

  st_hash_type [label="{<head>st_hash_type|(*compare)|(*hash)}"];
  st_table_entry [label="{<head>st_table_entry|hash|key|record|<next>next}"];
  st_table [label="{st_table|<type>type|num_bins|num_entries|<bins>bins}"];

  st_table:bins -> st_table_entry:head;
  st_table:type -> st_hash_type:head;
  st_table_entry:next -> st_table_entry:head [style="dashed", color="forestgreen"];
}

Paste_Image.png

注:在顶峰的样子为record的时候,label属性的语法相比奇异,但是使用起来特别灵活。比方,用竖线”|”隔离的串会在绘制出来的节点中表现为一条分隔符。用<>括起来的串称为锚点,当贰个节点有所四个锚点的时候,那个天性会丰裕有用,举例节点st_table的type属性指向st_hash_type,第一个属性指向st_table_entry等,都以经过锚点来达成的。

采用私下认可的dot布局后,赫色的这条边覆盖了数据结构st_table_entry,并欠雅观,因而得以接纳别的布局形式来再次布局,如运用circo算法能够获取更进一竿客观的布局结果。

D:\\>circo -Tjpg tes.dot -o test.jpg

Paste_Image.png

One more things…

行吗,Cook缓缓拿出利器,子图与图像引进……

看图:

亚洲城ca88手机版官网 8

图像引进

代码:

digraph lesson6{
  node [shape="record"];
  edge [style="dashed"];

  a [style="filled", color="black", fillcolor="chartreuse"];
  b;
  c [shape="none", image="logos/browser-icon-chrome-resized.png", label=""];
  d;

  a -> b;
  b -> d;
  c -> d [color="red"];
}

节点除了利用矢量图形外还足以经过image标签引进图像,不得不认同有一点点帅…

再看图:

亚洲城ca88手机版官网 9

子图

再看代码:

digraph abc{

  node [shape="record"];
  edge [style="dashed"];

  a [style="filled", color="black", fillcolor="chartreuse"];
  b;

    subgraph cluster_cd{
      label="c and d";
      bgcolor="mintcream";
      c;
      d;
    }

  a -> b;
  b -> d;
  c -> d [color="red"];
}

透过subgraph在图的里边能够再营造子图,用法与主图一样。

以上的介绍大旨能够知足普通所需,愈来愈多属性与用法请参谋官网,the
end.

yum list ‘graphviz*’ 查看已设置graphviz包

hash表的实例

digraph st{
  fontname = "Verdana";
  fontsize = 10;
  rankdir = LR;
  rotate = 90;

  node [ shape="record", width=.1, height=.1];
  node [fontname = "Verdana", fontsize = 10, color="skyblue", shape="record"];

  edge [fontname = "Verdana", fontsize = 10, color="crimson", style="solid"];
  node [shape="plaintext"];

  st_table [label=<
      <table border="0" cellborder="1" cellspacing="0" align="left">
      <tr>
      <td>st_table</td>
      </tr>
      <tr>
      <td>num_bins=5</td>
      </tr>
      <tr>
      <td>num_entries=3</td>
      </tr>
      <tr>
      <td port="bins">bins</td>
      </tr>
      </table>
  >];

  node [shape="record"];
  num_bins [label=" <b1> | <b2> | <b3> | <b4> | <b5> ", height=2];
  node[ width=2 ];

  entry_1 [label="{<e>st_table_entry|<next>next}"];
  entry_2 [label="{<e>st_table_entry|<next>null}"];
  entry_3 [label="{<e>st_table_entry|<next>null}"];

  st_table:bins -> num_bins:b1;
  num_bins:b1 -> entry_1:e;
  entry_1:next -> entry_2:e;
  num_bins:b3 -> entry_3:e;
}

Paste_Image.png

注:LHaval钦点了左右排序情势。
能够观望,节点的label属性援助类似于HTML语言中的TABLE情势的概念,通过行列的数码来定义节点的形态,进而使得节点的咬合越来越灵敏。

yum install ‘graphviz*’ 安装graphviz

软件模块组成图

digraph idp_modules{

  rankdir = TB;
  fontname = "Microsoft YaHei";
  fontsize = 12;

  node [ fontname = "Microsoft YaHei", fontsize = 12, shape = "record" ];
  edge [ fontname = "Microsoft YaHei", fontsize = 12 ];

      subgraph cluster_sl{
          label="IDP支持层";
          bgcolor="mintcream";
          node [shape="Mrecord", color="skyblue", style="filled"];
          network_mgr [label="网络管理器"];
          log_mgr [label="日志管理器"];
          module_mgr [label="模块管理器"];
          conf_mgr [label="配置管理器"];
          db_mgr [label="数据库管理器"];
      };

      subgraph cluster_md{
          label="可插拔模块集";
          bgcolor="lightcyan";
          node [color="chartreuse2", style="filled"];
          mod_dev [label="开发支持模块"];
          mod_dm [label="数据建模模块"];
          mod_dp [label="部署发布模块"];
      };

  mod_dp -> mod_dev [label="依赖..."];
  mod_dp -> mod_dm [label="依赖..."];
  mod_dp -> module_mgr [label="安装...", color="yellowgreen", arrowhead="none"];
  mod_dev -> mod_dm [label="依赖..."];
  mod_dev -> module_mgr [label="安装...", color="yellowgreen", arrowhead="none"];
  mod_dm -> module_mgr [label="安装...", color="yellowgreen", arrowhead="none"];
}

Paste_Image.png

上面介绍几个轻易的使用作为入门。

状态图

digraph automata_0 {
  size = "8.5, 11";
  fontname = "Microsoft YaHei";
  fontsize = 10;

  node [shape = circle, fontname = "Microsoft YaHei", fontsize = 10];
  edge [fontname = "Microsoft YaHei", fontsize = 10];

  0 [ style = filled, color=lightgrey ];
  2 [ shape = doublecircle ];

  0 -> 2 [ label = "a " ];
  0 -> 1 [ label = "other " ];
  1 -> 2 [ label = "a " ];
  1 -> 1 [ label = "other " ];
  2 -> 2 [ label = "a " ];
  2 -> 1 [ label = "other " ];

  "Machine: a" [ shape = plaintext ];
}

Paste_Image.png

digraph finite_state_machine {
  rankdir = LR;
  size = "8,5"

  node [shape = doublecircle];

  LR_0 LR_3 LR_4 LR_8;

  node [shape = circle];

  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}

Paste_Image.png

graphviz实例:     

模块的生命周期图

digraph module_lc{
  rankdir=TB;
  fontname = "Microsoft YaHei";
  fontsize = 12;

  node [fontname = "Microsoft YaHei", fontsize = 12, shape = "Mrecord", color="skyblue", style="filled"];
  edge [fontname = "Microsoft YaHei", fontsize = 12, color="darkgreen" ];

  installed [label="已安装状态"];
  resolved [label="已就绪状态"];
  uninstalled [label="已卸载状态"];
  starting [label="正在启动"];
  active [label="已激活(运行)状态"];
  stopping [label="正在停止"];
  start [label="", shape="circle", width=0.5, fixedsize=true, style="filled", color="black"];

  start -> installed [label="安装"];
  installed -> uninstalled [label="卸载"];
  installed -> resolved [label="准备"];
  installed -> installed [label="更新"];
  resolved -> installed [label="更新"];
  resolved -> uninstalled [label="卸载"];
  resolved -> starting [label="启动"];
  starting -> active [label=""];
  active -> stopping [label="停止"];
  stopping -> resolved [label=""];
}

Paste_Image.png

  1. digraph g{  
  2.     node [shape = record,height=.1//小编定义了本身下边包车型地铁体裁;    
  3.     node0[label = “<f0> |<f1> G|<f2> “];    
  4.     //作者是多个node,作者有几本天性,第二个的名为G,别的五个为空  
  5.         node1[label = “<f0> |<f1> E|<f2> “];    
  6.        node2[label = “<f0> |<f1> B|<f2> “];    
  7.        node3[label = “<f0> |<f1> F|<f2> “];    
  8.        node4[label = “<f0> |<f1> R|<f2> “];    
  9.        node5[label = “<f0> |<f1> H|<f2> “];    
  10.        node6[label = “<f0> |<f1> Y|<f2> “];    
  11.        node7[label = “<f0> |<f1> A|<f2> “];    
  12.        node8[label = “<f0> |<f1> C|<f2> “];    
  13.       
  14.     “node0″: f2->”node4”:f1;  
  15.     //作者的第多少个性情连到node4的第二个属性  
  16.     “node0″: f0->”node1”:f1;  
  17.     “node1″: f0->”node2”:f1;  
  18.     “node1″: f2->”node3”:f1;  
  19.     “node2″: f2->”node8”:f1;  
  20.     “node2″: f0->”node7”:f1;  
  21.     “node4″: f2->”node6”:f1;  
  22.     “node4″: f0->”node5”:f1;  
  23. }  

粗略的架空语法树

digraph ast{
  fontname = "Microsoft YaHei";
  fontsize = 10;

  node [shape = circle, fontname = "Microsoft YaHei", fontsize = 10];
  edge [fontname = "Microsoft YaHei", fontsize = 10];
  node [shape="plaintext"];

  mul [label="mul(*)"];
  add [label="add(+)"];

  add -> 3
  add -> 4;
  mul -> add;
  mul -> 5;
}

Paste_Image.png

体制如图:

简单的UML类图

digraph G{

  fontname = "Courier New"
  fontsize = 10

  node [ fontname = "Courier New", fontsize = 10, shape = "record" ];
  edge [ fontname = "Courier New", fontsize = 10 ];

  Animal [ label = "{Animal |+ name : String\\l+ age : int\\l|+ die() : void\\l}" ];

      subgraph clusterAnimalImpl{
          bgcolor="yellow"
          Dog [ label = "{Dog||+ bark() : void\\l}" ];
          Cat [ label = "{Cat||+ meow() : void\\l}" ];
      };

  edge [ arrowhead = "empty" ];

  Dog->Animal;
  Cat->Animal;
  Dog->Cat [arrowhead="none", label="0..*"];
}

Paste_Image.png

亚洲城ca88手机版官网 10

时序图

digraph G {
    rankdir="LR";
    node[shape="point", width=0, height=0];
    edge[arrowhead="none", style="dashed"]

    {
        rank="same";
        edge[style="solided"];
        LC[shape="plaintext"];
        LC -> step00 -> step01 -> step02 -> step03 -> step04 -> step05;
    }

    {
        rank="same";
        edge[style="solided"];
        Agency[shape="plaintext"];
        Agency -> step10 -> step11 -> step12 -> step13 -> step14 -> step15;
    }

    {
        rank="same";
        edge[style="solided"];
        Agent[shape="plaintext"];
        Agent -> step20 -> step21 -> step22 -> step23 -> step24 -> step25;
    }

    step00 -> step10 [label="sends email new custumer", arrowhead="normal"];
    step11 -> step01 [label="declines", arrowhead="normal"];
    step12 -> step02 [label="accepts", arrowhead="normal"];
    step13 -> step23 [label="forward to", arrowhead="normal"];
    step24 -> step14;
    step14 -> step04 [arrowhead="normal"];
}

rankdir=”LLacrosse”表示,布局从左L到右中华V。能够观看,在代码中有{}括起来的一部分。

{
    rank="same";
    edge[style="solided"];
    Agency[shape="plaintext"];
    Agency -> step10 -> step11 -> step12 -> step13 -> step14 -> step15;
}

每七个rank=”same”的block中的全数节点都会在同样条线上。大家设置了具备的线为虚线,不过在该block中,将线改为solided。

Paste_Image.png

万一您追求连忙的开销速度,并希望一点也不慢的将谐和的主张画出来,那么graphviz是二个很不错的选料。
graphviz的猛烈在于机关布局,当图中的顶点和边的多少变得过多的时候,手艺很好的回味这一性子的功利。

最后,提供Graphviz下载地址。

越多图形实例及脚本请参见:。

亚洲城ca88手机版官网 11

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图