文档章节

利用Graphviz 画结构图

涩女郎
 涩女郎
发布于 2014/12/15 17:21
字数 796
阅读 28
收藏 0

1. Graphviz介绍

    Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具。

它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”。

Graphviz提供了dot语言来编写绘图脚本。什么?!画个图也需要一个语言!!

不要急,dot语言是非常简单地,只要看了下面几个列子,就能使用了。

 

2. Graphviz的几个例子

    下面的几个例子都来自于官方文档。详情请见:Graphviz官网.

2.1 Fancy graph

digraph G{

	size = "4, 4";//图片大小
	main[shape=box];/*形状*/

	main->parse;
	parse->execute;

	main->init[style = dotted];//虚线

	main->cleanup;

	execute->{make_string; printf}//连接两个

	init->make_string;

	edge[color = red]; // 连接线的颜色

	main->printf[style=bold, label="100 times"];//线的 label

	make_string[label = "make a\nstring"]// \n, 这个node的label,注意和上一行的区别

	node[shape = box, style = filled, color = ".7.3 1.0"];//一个node的属性

	execute->compare;
}

从上面的代码可以看出,dot语言非常简单,就是一个纯描述性的语言而已。

大家可以把上面的代码和下图中的连接对应起来看。

                                       1

                                              <图1. Fancy graph>

 

2.2 Polygon graph

digraph G{
	size = "4, 4"
	a->b->c;
	b->d;
	
	a[shape = polygon, sides = 5, peripheries=3, color = lightblue, style = filled];	//我的形状是多边形,有五条边,3条边框, 颜色的淡蓝色, 样式为填充
	c[shape = polygon, sides = 4, skew= 0.4, lable = "hello world"];	//我的形状是4变形, 角的弯曲度0.4, 里面的内容为"hello world"
	d[shape = invtriange];	//我是三角形
	e[shape = polygon, side = 4, distortion = .7];	//我是梯形啊}

 

 

下面是对应的图片:

                                          polygon

                                       <图2. Polygon graph>

2.3 连接点的方向

     我们可以用“n”,”ne”,”e”,””se”, “sw”,”w”,”nw”,

分别表示冲哪一个方向连接这个节点(图形)-“north, northeast……”

如:

digraph G{	//b->c[tailport = se];
	b->c:se;
}

 

 

                                         se

                                           <图3. Se graph>

 

2.4 数据结构图

    数据结构图是我们很容易用到的一类图形,一个简单地数据结构图代码如下:

digraph g{
	node [shape = record,height=.1//我定义了我下面的样式;  
 	node0[label = "<f0> |<f1> G|<f2> "];  
	//我是一个node,我有三个属性,第二个的名字为G,其他两个为空
        node1[label = "<f0> |<f1> E|<f2> "];  
       node2[label = "<f0> |<f1> B|<f2> "];  
       node3[label = "<f0> |<f1> F|<f2> "];  
       node4[label = "<f0> |<f1> R|<f2> "];  
       node5[label = "<f0> |<f1> H|<f2> "];  
       node6[label = "<f0> |<f1> Y|<f2> "];  
       node7[label = "<f0> |<f1> A|<f2> "];  
       node8[label = "<f0> |<f1> C|<f2> "];  
	
	"node0": f2->"node4":f1;	//我的第三个属性连到node4的第二个属性
	"node0": f0->"node1":f1;
	"node1": f0->"node2":f1;
	"node1": f2->"node3":f1;
	"node2": f2->"node8":f1;
	"node2": f0->"node7":f1;
	"node4": f2->"node6":f1;
	"node4": f0->"node5":f1;
}

 

 

                                         data

                                               <图4. Data graph>

2.5 Hash table graph

 

 

这是一个简单地哈希表,如下图所示

                                             Hash

                                                          <图5. Hash table graph>

 

 

2.6 Process grahp

下面画一个轻量级的流程图。

 

 

 

 

结果输出图形如下:

                                             Process

                                                <图6. Hash table graph>

 

3. 小结

    相信这几个列子下来,各位看官对graphviz也有了了解了吧,我个人用了一遍下来发现太爽了。

而对于dot语言,作为一个描述性的语言就非常简单了, 只要有编程基础的人,模仿几个列子下来

应该就能应用了。

    各位看官,有没有心动啊。


© 著作权归作者所有

共有 人打赏支持
涩女郎
粉丝 37
博文 104
码字总数 160210
作品 0
浦东
高级程序员
私信 提问
Caffe绘制神经网络结构图

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 1. 介绍 Caffe中自带绘制神经网络结构图的工具,主要是在pycaffe中,因此首先要安装pycaffe,可参考我的另一篇文章,Caffe安装,除此之外...

Quincuntial
2017/04/28
0
0
利用Visio绘制网络拓扑图要注意些什么

利用Visio绘制网络拓扑图要注意些什么 网络拓扑图绘制工具很多,利用专业的工具可以绘制出漂亮美观的网络拓扑图。下面介绍下网络拓扑图的绘制工具有哪些呢?在windows平台有microsoftvisio、...

小章鱼
2012/03/30
0
0
topgit 分支的图形化显示

使用 Git + topgit 做版本控制,当 topgit分支(功能分支)非常多并且相互依赖比较复杂时,非常需要有一个直观的图形化的分支依赖图。 联想到我们使用 git 经常用到的 git glog 命令输出,如...

鉴客
2011/05/10
2.2K
0
图形编辑组件--NetEditor

NetEditor 是一个 Java 组件可让你编辑和显示图形的连接,适合用来绘制各种图形,例如网络结构图、流程图等等。支持边界处理、undo/redo、剪贴板操作、拖放操作,导出到 GIF, JPEG, PNG, BM...

匿名
2012/08/10
1K
0
NetEditor 17.0 发布,图形编辑组件

NetEditor 17.0 发布,该版本的 API 完全兼容 Swing 和 Android,修复了一些 bug。 NetEditor 是一个 Java 组件可让你编辑和显示图形的连接,适合用来绘制各种图形,例如网络结构图、流程图等...

oschina
2013/10/24
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

基于 DataLakeAnalytics 的数据湖实践

随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析...

迷你芊宝宝
29分钟前
1
0
ubuntu查看防火墙状态

1.查看防火墙当前状态 sudo ufw status 2.开启防火墙 sudo ufw enable 3.关闭防火墙 sudo ufw disable 4.查看防火墙版本 sudo ufw version 5.默认允许外部访问本机 sudo ufw default all...

Frost729
30分钟前
1
0
Gradle插件使用过程记录

Android中基于Gradle进行编译打包的过程,下面记录一下如何进行Gradle插件开发的过程: 首先在项目中新建的一个名为buildSrc的module,为什么叫这个名字请看官方文档。然后将Java文件夹以及r...

JerryLin123
37分钟前
1
0
RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占优势

美国时间3月4-8日,国际知名信息安全峰会RSA Conference在美国旧金山开幕,云安全及云可以为企业提供更可靠的资产管理方式成为大会热点。 此次峰会共吸引全球700多家机构参展,其中近42%为云...

阿里云云栖社区
38分钟前
2
0
重磅推出TabLayout高级窗口组件

TabLayout是在APICloud现有窗口系统基础上升级而来的高级窗口组件,符合Material Design规范,可通过简单的配置为窗口实现原生的导航栏和TabBar,它将帮助您节省30%以上的重复编码工作量,同...

API_Cloud
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部