Graph Visualization

1. 什么是graph visualization?  

  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 is open source graph visualization software. It has several main layout programs. See the gallery for sample layouts.

2. 怎样安装graph visualization?

  我的测试系统安装:sudo apt-get install graphviz

3. graph visulzation 的layout?

  dot ? filter for drawing directed graphs

  neato ? filter for drawing undirected graphs

  twopi ? filter for radial layouts of graphs

  circo ? filter for circular layout of graphs

  fdp ? filter for drawing undirected graphs

  sfdp ? filter for drawing large undirected graphs

  patchwork ? filter for squarified tree maps

  osage ? filter for array-based layouts

  graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言)——Dot作为脚本语言,然后使用布局引擎解析脚本并完成自动布局。Graphviz的设计初衷是对图进行自动布局(有向图、无向图、),可以使用dot脚本来定义图形元素,选择一定的算法进行布局,通过对输入脚本的解析,分析出其中的点,边以及子图,然后根据属性进行绘制,继而将结果以自己需要的格式导出来。

  dot语言的定义:(http://www.graphviz.org/content/dot-language)

这里我只介绍一下常用的:

1. dot---基本语法

  graph(无向图)表示图,然后{}中的内容是对图的描述,注释风格和C类似(“//”用于单行注释,/**/用于多行注释)。如一个无向图

graph graph1
{
	a -- b
	c -- d
	d -- f
}

执行 dot -Tpng -o 1.png 1.dot 后 xdg-open 1.png 显示图片

2.dot---节点

DOT中,节点可以不用声明直接使用。每个节点首次出现的名称做为该节点的唯一标识。
    属性设置:对节点可以设置的常见通用属性有shape、label、style、color、fillcolor、rank等,对于不同的形状,可能还有不同的属性可以设置,如对于多边形可以设置边数等。节点属性设置时,node用于设置默认属性(对设置位置之后的点有效),在点后面用[]设置单独一个点的属性。

 1 graph node_setting{
 2     node [shape = "box", style = "filled", color = "black", fillcolor = "green"]//设置节点的默认形状,类型,颜色,填充颜色
 3
 4     a [shape = "ellipse", color = "red", label = "this is a"]//设置节点a的颜色,注意默认节点类型是filled,所以这里的color只是设置a的边框颜色
 5     b [label = "two\nlines"]   //label支持‘\n‘换行
 6     a -- b
 7     a -- c     //如果不需要设置c的属性,可以不用声明c而直接使用
 8
 9     node [shape = "circle"]
10     d [label = "cicle"]
11     c -- d      //d使用之前最后出现的node设置,形状为circle
12     {rank = same a, d}     //设置a和d在同一层
13
14 }

执行 dot -Tpng -o 2.png 2.dot 后 xdg-open 2.png 显示图片

3.dot --- 边

边有有向边和无向边两种,无向边用于无向图,有向边用于有向图,不可混用。
    属性设置:边的常见设置有style、color、weight、label、labelfontcolor、headlabel、taillabel、decorate等,对于有向边,还可以设置边的起点位置等(用n、e、s、w和相邻字母的组合表示位置)。和节点类似的,边属性设置时,用edge[]设置默认属性,在边之后用[]设置单独一条边的属性。

 1 digraph edge_settings{
 2     edge [color = "green", decorate = false]        //设置边的默认属性
 3     node [shape = "polygon", sides = 4, color = "blue"]
 4     a -> b [style = "dotted", color = "red", label = "a to b"]  //设置style、color、label
 5     b: se -> c: w [headlabel = "end",  taillabel = "start"]     //设置边从b的“东南方”出发,从c的“西方”结束,设置有向边起点和重点的label
 6
 7     edge [style = "bond", decorate = true]      //设置之后的边加粗并且标签和连线之间有线标注
 8     //c -> d
 9     {c, f} -> {d, e} [label = "multi-lines"]    //可以用这种方式同时画多条边
10
11 }

执行 dot -Tpng -o 3.png 3.dot 后 xdg-open 3.png 显示图片

4.dot ---有向图

从前面的例子中已经可以看出,DOT语言可以描述无向图和有向图两种图,graph标识无向图,digraph标识有向图。
    属性设置:在一个图的开头写入属性即可设置图形的属性,常用的图形属性有size、label、labelloc、labeljust、bgcolor、rankdir等。
    子图,可以进行和“父图”类似的设置,唯一注意的是子图必须以"cluster"做为名称的开始。

 1 digraph graph_settings {
 2     start [shape = "Mdiamond"]
 3         end [shape = "Msquare"]
 4
 5         subgraph cluster_sub1 {
 6             label = "process #1"
 7                 labelloc = "t"
 8                 bgcolor = "gray55"
 9                 node [style = "filled", color = "white"]
10                 a0 -> a1 -> a2 -> a3 -> a0
11         }
12     subgraph cluster_sub2 {
13         label = "process #2"
14             labelloc = "t"
15             color = "blue"
16             node [style = "filled", color = "black", fillcolor = "gray55"]
17             b0 -> b1 -> b2 -> b3
18     }
19
20     start -> {a0, b0}
21     a1 -> b3
22         b2 -> a3
23         {a3, b3} -> end
24 }

执行 dot -Tpng -o 4.png 4.dot 后 xdg-open 4.png 显示图片

上面的4个例子中都是写完.dot脚本后,执行dot命令才生成图片显示。

那么,有没有工具能让写脚本的同时就能看到图形呢?of course!!!

vimdot

其实graph visualization 官网中介绍了很多的工具,就需要自己一个去试着玩玩,找到适合自己咯

时间: 2024-10-10 06:11:36

Graph Visualization的相关文章

流程图 Graphviz - Graph Visualization Software

0.目录 1.参考 https://www.processon.com/  应该值得一试 知乎 用什么软件画流程图? 9款国内外垂直领域的在线作图工具[可代替visio] 程序员必知的七个图形工具 说到流程图还是再次提及一下,我们之前说到的Graphviz . Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形.它也提供了供其它软件使用的库. 它的主要特点是代码生成图像,并且足够的简单

Graph visualization library in JavaScript (转)

Graph visualization library in JavaScript I've just put together what you may be looking for: http://www.graphdracula.net It's JavaScript with directed graph layouting, SVG and you can even drag the nodes around. Still needs some tweaking, but is tot

算法图绘制工具Graphviz

graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得"(WYTIWYG,what you think is what you get),这是和office的“所见即所得“(WYSIWYG,what you see is what you get)完全不同的一种方式.它的输入是一个用dot语言 编写的绘图脚本,通过对输入脚本的解析,分析出其中的点,边以及子图,然后根据属性进行绘制.用graphviz来绘图的时候,你的主要工作就是编写dot脚本,你只要关注图中各个点之

Go语言(golang)开源项目大全

转http://www.open-open.com/lib/view/open1396063913278.html内容目录Astronomy构建工具缓存云计算命令行选项解析器命令行工具压缩配置文件解析器控制台用户界面加密数据处理数据结构数据库和存储开发工具分布式/网格计算文档编辑器Encodings and Character SetsGamesGISGo ImplementationsGraphics and AudioGUIs and Widget ToolkitsHardwareLangu

画图工具

亿图ppt画图visioONENOTE 如果是由实验数据来做图的话,我个人首推origin.数据导入到做图直至最后的对线形.图例.坐标轴.框图等的修饰的操作都非常容易操作,而且很容易上手.(于是乎我很不理解@章佳杰 同学说的“Origin也用过,不过用的比较少,他对画图方面的操作还是少了点,要修改一些样式之类的不方便.”这句话……)其他如流程图,示意图之类的另当别论,visio.甚至直接用Word.PPT之类都可以很方便来绘制,更不用说Illustrator这种神器了. 如果画示意图,用visi

linux下阅读源代码的工具

source insight 使用教程:http://wenku.baidu.com/link?url=AWmefe23g3AJRja3sGIky8rhmDELYXK9xQHGW137Cjk4qkItt5t8asR4XJqtMpY0GRsL8bnvljzeVRaxVNTzEDVdudmkJqltuWqq6z2Rla_On2mW8sx15bicICLxPwuDwqcUDZHuIq5o6eMdReo0bAzQK24ZYRYT-p0EdV7UaLu 说来真是惭愧呀.一直在用VIM 做开发.却不知道VI

后缀树

在<字符串匹配算法>一文中,我们熟悉了字符串匹配问题的形式定义: 文本(Text)是一个长度为 n 的数组 T[1..n]: 模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m]: T 和 P 中的元素都属于有限的字母表 Σ 表: 如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift). 比如上图中,目标是找出

Kibana+X-Pack

Kibana+X-Pack介绍使用(全) Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作.Kibana目前最新的版本5.0.2,回顾一下Kibana 3和Kibana 4的界面. 下面的图展示的是Kibana 3的界面,所有的仪表盘直接放置主页. 下面的图展示的是Kibana 4的界面,和Kibana 3最大的区别是将原来的主体分成三个部分,分别是发现页.可视化.仪表盘. 下面是目前Kibana 5最新版本的

基于QT开发的第三方库

基于Qt开发的第三方库 分类: Qt2014-02-12 11:34 1738人阅读 评论(0) 收藏 举报 QT第三方库 目录(?)[+] 文章来源:http://blog.csdn.net/zhgn2/article/details/14613519 QxOrm QxOrm is a new open source ORM (Object Relational Mapping) C++ library designed to provide : * Persistence (based on