dot语法

环境配置:

1,安装graphviz。

2、添加dot的环境变量。

——————————————————————————————————————————

dot语法

主函数有两种:

有向图(directed graph):

digraph my_name(图的名字,自己命名)
{
    ……
}

无向图:

graph my_name(图的名字,自己命名)
{
    ……
}


————————————————————————全局性质—————————————————————————


在dot语法中,对于所有字符串,除了多语句节点(因为最外层的双引号管辖所有内容,就像变向花括号一样)都应该加上双引号。如果是单个单词(即中间没有空格)就可以不加。


字符串当中可以加上\n换行符。


颜色名称可以用字符串形式的颜色坐标来表示,如[color=".7 .3 1.0"]。


每一个[   ]括号内都可以写多个相同类型的句子并列,即[语句,语句,语句],如:a[fontname = Verdana, color=navy, shape=record, height=.1];


————————————————————————————————————————————————————



———————————————————————全局设置——————————————————————

设置图大小:

size="数字,数字";  ,如size="2,2";    单位为英寸,此语句可放在函数的任意位置。






                                                                                   ++++++++设置整张图的label:++++++++


内容

label="显示在图上的内容";


竖直方向的位置:

labelloc=参数值,参数值有b(bottom)和t(top)。如果不设置的话,默认为bottom。


水平方向上的位置:

labeljust=参数值,参数值有l(left)和r(right),其他任意值代表middle。如果不设置的话,默认middle。


                                                                                       -------------------------------------------





设置边属性:

edge [边的属性设置语句]; 如 edge [color=red,style=dotted];  辖域是这句话之后构建的所有的边。

优先级按出现顺序来决定,后出现的优先级比先出现的高,也就是说可以被新的同属性语句覆盖。


设置节点属性:

node[节点的设置语句];如node [fontname = Verdana, color=navy, shape=record, height=.1]; 辖域是这句话之后所有的节点。

优先级按出现顺序来决定,后出现的优先级比先出现的高,也就是说可以被新的同属性语句覆盖。


设置边方向:

rankdir=参数值;参数值有LR(从左到右),RL,BT,TB,表示节点结构是水平放置还是竖直放置。没设置的话默认为TB。

可以放在代码的任意位置。


———————————————————————————————————————————————————————————





————————————————————————————设置节点属性———————————————————————————


设置节点的框的形状:

节点文字内容[shape=框的风格名称]; 比如:a[shape=box];  不设置的话默认是椭圆。如果是 plaintext就只有文字,没有边框。


设置节点边框的大小:

节点文字内容[width=值,height=值]。例如a[width=.1,height=2.5];  单位为英寸。


设置节点边框的颜色:

节点文字内容[color=颜色名称]; 比如:a[color=red];


设置节点填充:

默认不填充。节点文字内容[style=filled];,填充颜色同设置的边框颜色,没有设置边框颜色就默认用灰色填充。


节点的设置和边的构造不能同时进行,比如a[color=red]->b; 是不可以的




                                                                   ++++++++++++【多边形边框节点】++++++++++++++

对节点的形状来说,除了shape=record(矩形)和Mrecord(圆角矩形)的边数已经定了,还有circle那些曲边的形状以外,其他的多边形(polygon)可以设置

多边形边框的边数:

节点文字内容[sides=边数]; 如a[sides=5];  节点a的边框就是五边形。

                                                                      --------------------------------------------------------------


设置节点边框层数:

节点文字内容[peripheries=层数]; 比如:a[peripheries=3]; 效果就是有3条边缘线。


设置边节点框形状是否规则:

节点文字内容[regular=是/否]; 比如:a[regular=true];      不设置的话默认是false


设置节点边框偏移角度:

节点文字内容[orientation=偏移角度]; 如a[orientation=45]; 即偏移45度。 默认为竖直,0度    怎么设置往左还是往右偏?


重命名节点文字内容:

原节点文字内容[label=新节点文字内容];                  注:只能重命名节点的文字内容,不能重命名边上标签的内容。





                                                +++++++++设置节点内多语句(只有在shape=record和Mrecord的情况下才能使用)++++++++++

设置多语句:

节点名[label="<地址名>内容|<地址名> 内容|<地址名> 内容"];  说明:节点名不会显示出来(因为框内要显示多语句),比如:a[shape=record,label="<f0>one|<f1>two|<f2> three"]; 显示出来就是有一个1*3的方框格,从左到右里面的内容是one,two,three。另外,内容可以是一个空格(不写或者写多个空格显示出来都是一个空格子)。

<xxxx>这种标签的作用相当于是给对应内容绑定的地址,如果需要设置边的射出射入点的位置,就需要用到这个了。可以只给其中几个语句写上,也可以不写。不同节点之间的语句地址标签名可以重复。


设置多语句摆放位置:

比如:节点名[label="内容 | { 内容 | 内容 } | 内容"];  当中的花括号是改变水平/竖直方向的,可以在任意位置设置,可以多重叠加。默认是水平方向。这里的话就变成了一个1*3的方格,中间那个方格又被分为2*1,即竖直方向的两个方格。

                                                    -----------------------------------------------------------------------------------------------------




————————————————————————————————————————————————————————





———————————————————————————构造边—————————————————————————

一对一:

有向图中:节点文字内容 ->节点文字内容,如a->b。

无向图中:节点文字内容 --节点文字内容 ,如a--b。


一对多:

有向图:节点文字内容->{节点文字内容 ;节点文字内容 ;节点文字内容 } ;     如:a->{b;c;d};

无向图:节点文字内容--{节点文字内容 ;节点文字内容 ; 节点文字内容 } ;     如:a--{b;c;d};

可以用"子节点组成集合"的方式来记忆。


多对一:

有向图:{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 }->节点文字内容 ;     如:{b;c;d}->a;

无向图:{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 }--节点文字内容 ;    如:{b;c;d}--a;


多对多:

有向图:{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 }->{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 } ;     如:{m,n,p,q}->{b;c;d};   会有4*3=12条边。

无向图:{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 }--{ 节点文字内容 ; 节点文字内容 ; 节点文字内容 } ;    如:{m,n,p,q}--{b;c;d};


构造边就像离散数学的二元关系当中的笛卡尔乘积。


设置边的射出与射入位置:

节点 : 参数值->节点 : 参数值,

参数值有:

1、系统中的 "n", "ne","e", "se", "s", "sw", "w" 和 "nw",  

2、 自己在多语句节点里面设置的地址标签。

冒号之后的参数就表示此节点与边连接的位置。可以不设置,默认为两节点之间最近的位置,比如:如果rankdir是竖直情况的话,a->b的默认就是a:s->b:n;     默认都是中间。

—————————————————————————————————————————————————————





————————————————————————设置边的属性———————————————————————

设置边的权重:

节点文字内容->节点文字内容[weight=数值];   如:a->b[weight=2];  不设置的话权值默认为1。


设置边的风格:

节点文字内容->节点文字内容[style=风格名称]; 如:a->b[style=dotted];   会画出一条从a到b的有向虚线段。


设置边的颜色:

节点文字内容>节点文字内容[color=颜色名称]; 如:a->b[color=red]; 


设置边的标签:

节点文字内容->节点文字内容[label="想在边上显示的文字"]; 如:a->b[label="This is a label"];  怎么设置label位置在边的上,下,左,右?


设置两节点间边的方向:

节点文字内容>节点文字内容[dir = 方向名称];  如:a->b[dir=both];     a--b[dir=back];

方向名称有:4个系统方向名称:both(a<->b),none(a--b),back(a<-b),forward(a->b)。有向图中默认为forward,无向图中默认为none。

——————————————————————————————————————————————————————————



————————————————————————全局设置————————————————————————

全局边设置:

edge [边的属性设置语句]; 如 edge [color=red,style=dotted];  辖域是这句话之后构建的所有的边。

优先级按出现顺序来决定,后出现的优先级比先出现的高,也就是说可以被新的同属性语句覆盖。


全局节点设置:

node[节点的设置语句];如node [fontname = Verdana, color=navy, shape=record, height=.1]; 辖域是这句话之后所有的节点。

优先级按出现顺序来决定,后出现的优先级比先出现的高,也就是说可以被新的同属性语句覆盖。

————————————————————————————————————————————————————————





颜色名称列表:





形状名称列表:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值