dot格式绘图工具 html,使用dot来绘图
写在前面
第一次了解到dot已经是很久之前的事情了,但是到今天才决定写下一点东西,可见懒到什么程度。最开始对dot感兴趣是因为下面这张图:
网络图
对于这种网络图用visio很容易搞定,但是复制、粘贴、拖拽这些用起来总是感觉不怎么顺手。但是用dot来做就完全不一样了,只需写段文本:
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute -> printf;
init -> make_string;
main -> printf;
execute -> compare;
}
然后在需要的时候在这段文本中增加边、节点即可。保存之后只需要用贝尔实验室搞的graphviz来生成目标图片就可以了:
dot -Tpng G.dot -o g.png
这样你的vim、emacs就马上变成了一个可以画图的工具了:)。
可能你觉得这样还不够爽,想想看如果用代码自动生成dot文件,也就是说可以通过用代码输出dot文件来间接到达输出图片的目的,是不是能做的事情多多了?
简单用法
日常中用到画图的地方,知道下面几点基本上就够用了:
有向图(digraph)用a->b,无向图(graph)用a--b;
节点、边通过中括号中的key=value来设置,比如main[shape=box];将main节点设置为矩形;
连接点的方向可以通过b->c:se;进行指定;
使用subgraph定义子流程图;
常用属性
对于各种结构的通用的属性如下:
属性名称
默认值
含义
color
black
颜色
colorscheme
X11
颜色描述
fontcolor
black
文字颜色
fontname
Times-Roman
字体
fontsize
14
文字大小
label
显示的标签,对于节点默认为节点名称
penwidth
1.0
线条宽度
style
样式
weight
重要性
常用边属性如下:
属性名称
默认值
含义
arrowhead
normal
箭头头部形状
arrowsize
1.0
箭头大小
arrowtail
normal
箭头尾部形状
constraint
true
是否根据边来影响节点的排序
decorate
设置之后会用一条线来连接edge和label
dir
forward
设置方向:forward,back,both,none
headclip
true
是否到边界为止
tailclip
true
与headclip类似
常用节点属性如下:
属性名称
默认值
含义
shape
ellipse
形状
sides
4
当shape=polygon时的边数
fillcolor
lightgrey/black
填充颜色
fixedsize
false
标签是否影响节点的大小
常用图属性如下:
属性名称
默认值
含义
bgcolor
背景颜色
concentrate
false
让多条边有公共部分
nodesep
.25
节点之间的间隔(英寸)
peripheries
1
边界数
rank
same,min,source, max,sink,设置多个节点顺序
rankdir
TB
排序方向
ranksep
.75
间隔
size
图的大小(英寸)
高级用法
在dot里面label的玩法比较多,在上面看到的每个节点都是简单的一段文字,如果想要比较复杂的结构怎么办?如下图:
复杂的节点
对应的代码如下:
digraph structs {
node [shape=record];
struct1 [shape=record,label=" left| mid\ dle| right"];
struct2 [shape=record,label=" one| two"];
struct3 [shape=record,label="hello\nworld |{ b |{c| d|e}| f}| g | h"];
struct1 -> struct2;
struct1 -> struct3;
}
这个还不算厉害的,label还支持HTML格式的,这样你能想得到的大部分样子的节点都可以被定义出来了:
HTML格式的label
代码如下:
digraph html {
abc [shape=none, margin=0, label=<
hello world |
b | g | h | ||
c | d | e | |||
f |
>];
}
接着来看cluster的概念,在dot中以cluster开头的子图会被当做是一个新的布局来处理,而不是在原图的基础上继续操作。比如:
流程图
对应代码如下:
digraph G {
subgraph cluster0 {
node [style=filled,color=white];
style=filled;
color=lightgrey;
a0 -> a1 -> a2 -> a3;
label = "process #1";
}
subgraph cluster1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a3 -> a0;
a3 -> end;
b3 -> end;
start [shape=Mdiamond];
end [shape=Msquare];
}
如果没有cluster的话我们大概能想象的出来最后的结果是什么样子的。可能会想能不能将一个节点直接指向cluster?答案是不能!对于这种需求可以用lhead来搞定:
digraph G {
compound=true;
subgraph cluster0 {
a -> b;
a -> c;
b -> d;
c -> d;
}
subgraph cluster1 {
e -> g;
e -> f;
}
b -> f [lhead=cluster1];
d -> e;
c -> g [ltail=cluster0, lhead=cluster1];
c -> e [ltail=cluster0];
d -> h;
cluster0->cluster1;
}
生成的图片如下:
节点指向cluster
dot格式绘图工具 html,使用dot来绘图相关推荐
- 【工具】1640- 这 5 款 AI 绘图工具,让你的绘图更高效!
关注 "AI 工具派" 探索最新 AI 工具,发现 AI 带来的无限可能性! 大家好,我是 Chris. 最近我又发现了一些非常优秀的 AI 绘图工具,这些工具可以帮助我们更轻松地 ...
- draw.io绘图工具
draw.io 绘图工具 文章目录 draw.io 绘图工具 1 庞大且付费的visio工具 2 draw.io 1 庞大且付费的visio工具 这又是一篇工具安利文.好用的东西要推广给更多的人知道. ...
- PlotJuggler绘图工具无法打开rosbag文件解决方案
项目场景: 利用PlotJuggler绘图工具进行rosbag数据可视化处理 问题描述 正常安装PlotJuggler绘图工具后,无法打开rosbag文件 原因分析: 3.2更新后将ros支持放在了插 ...
- coreldraw梯形校正_入门:CorelDraw12智能绘图工具使用方法详解
今天为大家带来一篇基础教程,就是教大家利用CorelDraw12智能绘图工具使用方法,教程真的很不错,很值得学习,推荐过来,大家一起来学习吧! 大家都知道CorelDRAW 12新增了Smart Dr ...
- Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略
Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略 目录 graph_feature函数:为给定的特征生成特征谱系图
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件
Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件 目录 Graphviz软件的下载 Graphviz将dot文件转为结构图的pdf文件 输出结果 Gr ...
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件
Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件 目录 Graphviz软件的下载 Graphviz使用方法 Graphviz软件的下载 Graphv ...
- python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateFormatte ...
- 如何构建一个在线绘图工具:Feakin 是如何设计与构建的?
高中,读过几本 3D 图形编程相关的书.怎么说呢,自那以后,图形学相关的东西,都不在我的兴趣范围里了.直到最近,我重新燃起了一点兴趣: 架构治理工具 ArchGuard 依赖于「图即代码」,用于生成架 ...
- linux怎么进入绘图模式,Linux 绘图工具
Linux 绘图工具 2016-11-03 Thursday 主要介绍一下 Linux 中的 Gnuplot Graphviz 套件,主要用于画图. Ggnuplot 是一个命令行驱动的绘图工具,可将 ...
最新文章
- 深入理解WMS(二):Dialog与Toast源码解析
- 【谦先生日志】程序员如何优雅地融入新环境
- android串口通讯奇偶校验,串口通讯奇偶数校验及CRC校验如何使用详解
- 【小白成长撸】--二分查找
- imagej链接资源
- 引用: 编写高性能 Web 应用程序的10个技巧
- 巧用 Class Extension 隐藏属性
- FPGA串口传图sobel边缘检测
- 传统3D游戏引擎的Web化
- python2048游戏代码_python 实现 2048 游戏 (二)
- SAP BW4基础入门篇
- html页面中插入flv格式视频
- 画动漫人物眼睛怎么上色
- 魅族手机sim卡无显示无服务器,设备管理器无显示内容怎么处理?
- 笔记本电脑维修90个精选实例
- VLOOKUP函数最常用的10种用法
- KPA EtherCAT主站协议栈基准
- python requests的作用_requests session的作用
- 【RabbitMQ】什么是RabbitMQ?RabbitMQ有什么用?应用场景有那些?
- 大数据Spark学习笔记—未更完