graphviz 的绘图布局
graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。
graphviz中包含了众多的布局器:
- dot 默认布局方式,主要用于有向图
- neato 基于spring-model(又称force-based)算法 基于斥力+张力的布局
- twopi 径向布局
- circo 圆环布局
- osage
- fdp 用于无向图
- sfdp 用于无向图
有向图相关布局
除了 fdp 之外,其他都可以适用于 有向图。 对下面有向图采用不同布局器产生的效果如下:
有向图的定义用关键字digraph定义一个有向图,用“ -> ”表示节点之间的关系
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute -> printf
init -> make_string;
main -> printf;
execute -> compare;
}
dot 布局
dot 22.gv -Kdot -Tpng -o 22dot.png
由于 Kdot 是默认, 所以可以简化成 dot 22.gv -Tpng -o 22dot.png

circo 布局
命令: dot 22.gv -Kcirco -Tpng -o 22circo.png
圆环布局

neato 布局
命令: dot 22.gv -Kneato -Tpng -o 22neato.png

twopi 布局
命令:dot 22.gv -Ktwopi -Tpng -o 22twopi.png

osage 布局

无向图的布局
无向图的定义用关键字graph定义一个无向图,用“ - - ”表示节点之间的关系,如下:
graph test123 {
a -- b -- c;
a -- {x y};
x -- c ;
x -- y ;
}
dot 布局
dot 33.gv -Kdot -Tpng -o 33dot.png

circo 布局
dot 33.gv -Kcirco -Tpng -o 33circo.png

neato 布局
dot 33.gv -Kneato -Tpng -o 33neato.png

twopi 布局
dot 33.gv -Ktwopi -Tpng -o 33twopi.png

osage 布局
dot 33.gv -Kosage -Tpng -o 33osage.png

fdp布局
dot 33.gv -Kfdp -Tpng -o 33fdp.png

sfdp布局
dot 33.gv -Ksfdp -Tpng -o 33sfdp.png

DOT 语言
http://lesliezhu.github.io/public/dot-begin.html
相关命令行参数请参考:
http://www.cnblogs.com/ghj1976/p/4935541.html
graphviz 的绘图布局的更多相关文章
- R语言绘图布局
在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin, 这些边距有什么不同呢,通过box函数可以直观的看到 box 默认在当前图形绘制 ...
- graphviz 决策树绘图中文乱码解决方法
1.修改graphviz配置文件 <dir>C:\WINDOWS\Fonts</dir> 更改为 <dir>~/.fonts</dir> 2.将决策树d ...
- R绘图布局包 customLayout
今天介绍一个R画图布局的包,地址如下: https://github.com/zzawadz/customLayout https://www.customlayout.zstat.pl/index. ...
- 算法图绘制工具Graphviz
graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得"(WYTIWYG,what you think is what you get),这是和office的“ ...
- 转+更新 Graphviz 教程,例子+ 高级应用 写代码,编程绘制架构图(分层拓扑图) 转自官网
1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具. 它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”. Graphviz提供了dot语言来 ...
- R绘图基础
一,布局 R绘图所占的区域,被分成两大部分,一是外围边距,一是绘图区域. 外围边距可使用par()函数中的oma来进行设置.比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3 ...
- 使用egypt+graphviz生成函数调用关系图示例
总结: make (-fdump-rtl-expand) 去除编译优化,比如-O3 egypt test.c.128r.expand >test.dot 可以手动打开dot文件去除一些孤立 ...
- Ubuntu下doxygen+graphviz使用概录
关键词:doxygen.Doxyfile.doxywizard.dot.graphviz等等. 使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp.Latex等等. 如果想 ...
- jsplumb 中文教程
https://wdd.js.org/jsplumb-chinese-tutorial/#/ 1. jsplumb 中文基础教程 后续更新会在仓库:https://github.com/wangdua ...
随机推荐
- Android Source 源码已下载但 Android Studio 找不到的解决办法
Android Studio 2.1 reporting in: solved the issue by resetting SDK. Preferences -> Appearance &am ...
- Day 28面向对象的进阶-内置函数(__new__,__del__)
元类 创造 类 所有类的type 都是他的元类 类创造 对象 具体创造对象的方法 __new__方法 class 类名(classmata = type)#默认是 class 类名(class ...
- Socket编程概念
一.网路套接字 在通信过程中,套接字是成对存在的,该套接字内部借助两个缓冲区实现 二.网络字序 1.存储方式 大端法(网络):高位存低位,低位存高位 小端法(本地):高位存高位,低位存低位 2.网络字 ...
- 用layui遇到过的问题
1.报错“layui.form is not a function”问题 把代码中这一串修改一下:form = layui.form(); 括号去掉就行: form = layui.form; 如果你 ...
- BS4爬取物价局房产备案价以及dataframe的操作来获取房价的信息分析
因为最近要买房子,然后对房市做了一些调研,发现套路极多.卖房子的顾问目前基本都是一派胡言能忽悠就忽悠,所以基本他们的话是不能信的.一个楼盘一次开盘基本上都是200-300套房子,数据量虽然不大,但是其 ...
- sql语句_2
数据表如下 一个user_id对应多个user_name,现在要求是:如果某个用户对应的user_name中存在一个a,打印user_id,a出来:如果不存在,打印user_id,0.打印时候user ...
- ZZNU 1719(最长上升子序列+最长下降子序列)
先吐血一发,噗! 再吐血一次,啊啊啊啊! 好吧,做了那么多次最长上升子序列,看这题看了半天才发现还有最长下降子序列,呵呵哒! AC代码: #include<stdio.h>//老恶心#in ...
- 快速滑动时 `cellForRow` 的调用次数
问题 有一个 1000 个 cell 的 tableView,刚刚进入界面时,contentOffset 为 0.用手快速滑动 tableView,直至最下面一个 cell 显示在屏幕上. 这个过程中 ...
- POST 请求的 forHTTPHeaderField
Response Headers(从服务器得到的回复的头) Field name Description Example Status Access-Control-Allow-Origin Spec ...
- Tomcat发生java.lang.OutOfMemoryError: PermGen space的解决方案
产生该问题的主要原因是JVM永久带空间不足导致的,可以在环境变量CATALINA_OPTS中提高MaxPermSize参数值 set CATALINA_OPTS = -XX:PermSize=12 ...