[Graphviz]一些简单的例子(未完待续)
1.设置点和线的形状和颜色
简单的例子
- digraph是有向图,graph是无向图。->用在有向图中,—用在无向图中,不能混用。
digraph G { //给出了图的类型和名字
main -> parse -> execute; //当一个点第一次出现,它就被创建了
main -> init; //用->标识符创建一条边
main -> cleanup;
execute -> make_string;
execute -> printf
init -> make_string;
main -> printf;
execute -> compare;
}
- 得到的图像
稍复杂一点的例子
- 边的属性:在每条边后面的双括号里设置边的属性。也可以用edge设置边的默认值。
- 点的属性:必须给每个点单独地设置一个属性,node表示点的默认值。
- Rmk
- 点的默认参数是shape=ellipse, width=.75, height=.5 and labeled by the node name.
- 一些点的形状在appendix.h中,一些常用的形状有bos, circle, record, plaintext.
digraph G {
size="4,4"; //把图的尺寸设为4 inch * 4 inch
main [shape=box]; /*this is a comment*/ //把main点的形状设为方形
main -> parse [weight=8]; //weight是设置了这条边的重要程度,默认是1
parse -> execute;
main -> init [style=dotted]; //让这条线是点状的
main -> cleanup;
execute -> { make_string;printf} //这条语句一次连了两条线
init -> make_string;
edge[color=red]; //so is this //把边的默认颜色设为了red
main -> printf [style=bold,label="100 times"]; //label就是在边上写了一行字
make_string [label="make a\nstring"]; //让make_string变成了一个两行的字符串(注意其中的\n)
node [shape=box,style=filled,color="0.7 .3 1.0"]; //设置了点的默认参数,蓝色,被用在了compare中
execute -> compare;
}
- 得到的图像
关于边的例子
- 可以设置每条边箭头的方向,用dir,有forward(default),back,both,none四种
digraph html {
A -> B [dir = both];
B -> C [dir = none];
C -> D [dir = back];
D -> A [dir = forward];
}
- 得到的图像
关于点的例子
- 点的shape除了record和Mrecord这两种之外,其他的形状都是多边形,而我们可以对多边形进行属性上的设置,shape=polygon。
- Sides用于设置它的边数
- peripheries用于设置多边形的外框的层数
- regular=true可以让你的多边形是规则的
- orientation=*,可以让你的多边形旋转一个角度,如orientation=15就是旋转了15度
- Skew后面跟一个(-1.0,1.0)的小数,能让你的图形斜切一个角度
- distortion是让你的图形产生透视效果
digraph G {
a -> b -> c;
b -> d;
a [shape = polygon, sides = 5, peripheries = 3, color = lightblue, style = filled];
c [shape = polygon, sides = 4, skew = .4, label = "hello world"]
d [shape = invtriangle];
e [shape = polygon, sides = 4, distortion = .7];
}
- 得到的图像
再一个关于点的例子
digraph A {
A -> B;
A [orientation = 15, regular = true, shape = polygon, sides = 8, peripheries = 4, color = red, style = filled];
B [shape = polygon, sides = 4, skew = 0.5, color = blue];
}
- 得到的图像
record的例子
- record和Mrecord的区别 Mrecord的角是圆的,record是由横的和竖的矩形组成的图形。
digraph structs {
node [shape = record];
struct1 [shape = record, label = "<f0> left|<f1> mid\dle|<f2> right"];
struct2 [shape = record, label = "<f0> one|<f1> two"];
struct3 [shape = record, label = "hello\nworld|{b|{c|<here> die}|f}|g|h"];
struct1 -> struct2;
struct1 -> struct3;
}
- 得到的图形
线上写字的例子
- Rmk:当你的线和线label比较多时,可以给线的属性decorate=true,使得每条线的label与所属线之间连线。你还可以给每条线加上headlabel和taillabel,给每条线的起始点和终点加上label,他们的颜色由labelfontcolor来决定,而label的颜色由fontcolor来决定。
graph A {
label = "I love you";
labelloc = b;
labeljust = 1;
edge [decorate = true];
C -- D [label = "s1"];
C -- E [label = "s2"];
C -- F [label = "s3"];
D -- E [label = "s4"];
D -- F [label = "s5"];
edge [decorate = false, labelfontcolor = blue, fontcolor = red];
C1 -- D1 [headlabel = "c1", taillabel = "d1", label = "c1 - d1"];
}
- 得到的图形
用html语言
- Rmk:在dot中我们可以用html语言写一个table。在label后用<>而不是””就可以引入html语言。
digraph html {
abc [shape = none, margin = 0, label =<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR><TD ROWSPAN="3"><FONT COLOR="red">hello</FONT><BR/>world</TD>
<TD COLSPAN="3">b</TD>
<TD ROWSPAN="3" BGCOLOR="lightgrey">g</TD>
<TD COLSPAN="3">h</TD>
</TR>
<TR><TD>c</TD>
<TD PORT="here">d</TD>
<TD>e</TD>
</TR>
<TR><TD COLSPAN="3">f</TD>
</TR>
</TABLE>>];
}
得到的图形
下面我们创造了一个5*5的表格,我们可以在表格中打字。
digraph html {
abc [shape = none, margin = 0, label =<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR><TD>0</TD><TD>1</TD><TD>2</TD><TD>3</TD><TD>4</TD>
</TR>
<TR><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD>
</TR>
<TR><TD>2</TD><TD></TD><TD></TD><TD></TD><TD></TD>
</TR>
<TR><TD>3</TD><TD></TD><TD></TD><TD></TD><TD></TD>
</TR>
<TR><TD>4</TD><TD></TD><TD></TD><TD></TD><TD></TD>
</TR>
</TABLE>>];
}
- 得到的图形
2.设置点和线的位置(子图的概念)
- 默认时图中的线都是从上到下的,可以改为从左到右。在文件的最上层加上rankdir=LR就是从左到右,默认shiTB(top->bottom),也可以是RL,BT。
- 当图中有时间轴之类的时,我们会需要点能排在一行(列),这时要用到rank,用花括号吧rank=same,然后把需要并排的点一次输入。
[Graphviz]一些简单的例子(未完待续)的更多相关文章
- 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)
计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...
- Go web编程学习笔记——未完待续
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
- 关于DOM的一些总结(未完待续......)
DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...
- virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
- MVC丶 (未完待续······)
希望你看了此小随 可以实现自己的MVC框架 也祝所有的程序员身体健康一切安好 ...
- 一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- C++语言体系设计哲学的一些随想(未完待续)
对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...
- iOS开发系统版本适配(未完待续。。。)
1.iOS9引入了新特性App Transport Security (ATS).新特性要求App内访问的网络必须使用HTTPS协议:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用T ...
- Java开发中的23+2种设计模式学习个人笔记(未完待续)
注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...
- obj-c编程15[Cocoa实例04]:基于Core Data的多文档程序示例[未完待续]
上一个例子我们使用的模式数据实际上是基于一个Person数组,现在我们看一下如何使用Cocoa中的Core Data框架支持,几乎不用写一行代码,完成模式数据的建立. 我们这里模式的元素使用的是Car ...
随机推荐
- NPOI处理Excel
using NPOI; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; NPOI.SS.U ...
- python pip无法安装到2.7
问题 pip默认指向python3.6,没有pip2,pip2.7 解决办法 加上应用路径 加上系统环境变量 参考 https://www.cnblogs.com/fanyuchen/p/712768 ...
- gin中只绑定url查询字符串
package main import ( "github.com/gin-gonic/gin" "log" ) type Person struct{ Nam ...
- 什么是Filter过滤器
一,什么是Filter过滤器: JavaWeb三大组件之一 Filter过滤器是JavaEE的规范.也就是接口 Filter过滤器作用:拦截请求,过滤响应 拦截请求常见的应用场景有: 1,权限检查 2 ...
- C++ 反汇编:关于Switch语句的优化措施
流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支的优化措施有4种形式,分别是,IF-ELSE优化,有序线性优 ...
- maven 中的工程依赖和层级依赖?
一.什么是工程依赖? 思考问题?1.1一旦开始分模块开发的时候,之前的所有包都会被拆分成一个一个的项目 model mapper service ... 其实mapper需要model的支持,怎么解决 ...
- 微服务架构 | 10.2 使用 Papertrail 实现日志聚合
目录 前言 1. Papertrail 基础知识 1.1 Papertrail 特点 1.2 Papertrail 是什么 2. 使用 Papertrail 进行日志聚合的示例 2.1 创建 Pape ...
- MySql数据存储格式Compact及计算MySql的B+Tree高度
1.MySql的compact行记录格式 MySql从版本5.1以后默认使用的是compact行记录格式.可以通过执行以下命令查询到Row_format知悉InnoDB行记录格式类型. show ta ...
- SP419/422 TRANSP(2) - Transposing is Fun
首先可以发现转置本质上就是一个置换,问题就转化为求一个排列排成有序的最少次数. 这是一个经典问题,答案为点数减循环置换的个数,考虑如何求循环置换. 发现有两个特殊性质:置换为转置,矩阵的边长为 \(2 ...
- JAVA中获取不同系统的换行符和获取系统路径路径分割符
简介 JAVA具有多平台特征,一次开发,多平台运行,主要依据JVM,但是不同的操作系统中换行符和分割符不同,故需要根据不同的操作系统去获取不同的符号. JAVA代码 @Test public void ...