1078|1

92

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【BIGTREETECH PI开发板】+07.绘图(graphviz)测试(zmj) [复制链接]

 

【BIGTREETECH PI开发板】+07.绘图(graphviz)测试(zmj)

DOT是开源工具包Graphviz上用来画图的一门脚本语言。通过布局引擎解析脚本得到图像,然后可以将图像导出为各种格式以满足需求。有了它,我们就可以很方便地通过编写脚本来画各种结构示意图和流程图。

Graphviz的文件后缀名为.gv。每个.gv文件代表一个图,我们可以通过dot -Tpng example.dot -o example.png命令行方式生成图像,或者使用Graphviz提供的工具gvedit来编辑和运行脚本。

对于不擅长绘图的我来讲,DOT语言和Graphviz工具真的是Very-Good。

1. 说明及安装

Graphviz是贝尔实验室开发的一个开源的绘图工具包。它使用一个特定的DSL(领域特定语言): DOT作为脚本语言。使用布局引擎来解析DOT脚本,完成自动布局。支持丰富的导出格式,例如:PNG、JPG、PostScript、SVG、PDF等。

此处不针对Dot语法和Graphviz工具做过多的阐述,对于初学者来讲重点关注官网文档即可。

参考资料及安装如下:

//------官网:Graphviz
https://www.graphviz.org/
//------官网文档:Graphviz-Documentation★★★★★
https://www.graphviz.org/documentation/
//------源码:Graphviz-Gitlab
https://gitlab.com/graphviz/graphviz/
//------源码使用
git clone https://gitlab.com/graphviz/graphviz.git

注:重点内容/主要内容还是在文档Doc区域。

//------安装及依赖
//---graphviz
sudo apt install graphviz
//---实际需要多个依赖项
sudo apt install graphviz* libghc-graphviz* libgraph-writer-graphviz-perl libgraphviz* python-pygraphviz* python3-pygraphviz*
sudo apt install libghc-base-dev libghc-bytestring-dev libghc-colour-dev libghc-containers-dev libghc-directory-dev

//------文件转换指令(仅供参考)
dot -Tpng dot_demo3.gv -o demo3.png
	或者
dot -Tpng dot_demo3.gv  > demo3.png

 

2. 测试示例

2.1 示例一

绘制简单的流程图:

digraph automata_0 {
  size = "8.5, 11";
  fontname = "Microsoft YaHei";
  fontsize = 10;
  
  node [shape = circle, fontname = "Microsoft YaHei", fontsize = 10];
  edge [fontname = "Microsoft YaHei", fontsize = 10];
  
  0 [ style = filled, color=lightgrey ];
  2 [ shape = doublecircle ];
  
  0 -> 2 [ label = "a " ];
  0 -> 1 [ label = "other " ];
  1 -> 2 [ label = "a " ];
  1 -> 1 [ label = "other " ];
  2 -> 2 [ label = "a " ];
  2 -> 1 [ label = "other " ];
  
  "Machine: a" [ shape = plaintext ];
}

 

2.2 示例二

//------DOT源码

digraph demo_graph {
  bgcolor=beige
  fontcolor=gray10
  fontsize=12
  label="this is demo"
  rankdir=TB

  {rank=same; "level1" "a-level1" "b-level1" "c-level1"}
  {rank=same; "level2" "d-level2" "e-level2"}
  {rank=same; "level3" "f-level3" "g-level3" "h-level3" "i-level3" "j-level3"}
  {rank=same; "level4" "k-level4"}
  "level1"->"level2"->"level3"->"level4"
  "a-level1"->"d-level2"
  "e-level2"->{"h-level3", "k-level4"}
  "b-level1"->{"e-level2", "f-level3", "i-level3", "k-level4"}
  "c-level1"->{"d-level2", "g-level3", "h-level3"}
  "j-level3"->{"f-level3", "k-level4"}
}

//------效果图

 

 

2.3 示例三

//------DOT源码

digraph demo_subgraph {
  bgcolor=beige
  fontcolor=gray10
  fontsize=12
  label="this is demo"
  rankdir=TB

  /* 特别注意: 子图命名必须以"cluster"为前缀 */
  subgraph "cluster_g1" {
    label="g1"
    bgcolor=cadetblue
    "level1"->"level2"->"level3"->"level4"
  }

  subgraph "cluster_g2" {
    label="g2"
    bgcolor=cornsilk
    "level2"
    "d-level2"
    "e-level2"
  }

  subgraph "cluster_g3" {
    label="g3"
    bgcolor=cornsilk
    "level3"
    "f-level3"
    "g-level3"
    "h-level3"
    "i-level3"
    "j-level3"
  }

  "a-level1"->"d-level2"
  "e-level2"->{"h-level3", "k-level4"}
  "b-level1"->{"e-level2", "f-level3", "i-level3", "k-level4"}
  "c-level1"->{"d-level2", "g-level3", "h-level3"}
  "j-level3"->{"f-level3", "k-level4"}
}

 

//------效果图

 

2.4 示例四

//------DOT源码

digraph finite_state_machine {
  rankdir = LR;
  size = "8,5"
  
  node [shape = doublecircle];
  
  LR_0 LR_3 LR_4 LR_8;
  
  node [shape = circle];
  
  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}

//------效果图

3. 个人理解

个人对 DOT & Graphviz 的理解如下:

1. Graphviz工具
    graphviz是一个开源软件包,dot和gvedit等工具都在该软件包中,或者可以说graphviz是处理该DOT语言文件的一个集成化的工具。
2. DOT语言
    DOT是一种文本图形描述语言。DOT语言文件通常具有.gv或是.dot的文件扩展名。它借助Graphviz等工具完成图形渲染生成.png、.jpg、.pdf等多种类型的图片。
3. DOT & graphviz的局限性
    Graphviz中有很多工具可以将DOT语言的文本渲染成为图片,但正如我们所见,我们在享受方便的编码的同时,将图片的布局等任务交给了这些工具,虽然这些工具有很不错的布局算法支持,但仍不一定能满足我们的要求,所以当对图片的布局有特殊要求时,DOT & graphviz就显示出了它的局限性。当然,我们可以再使用其他图片编辑器校正DOT语言生成的图片,但这种时候,DOT & graphviz的方便性或许早就消失殆尽了。
4. DOT & graphviz的适用群体
    就我个人体会而言,DOT & graphviz适合这些群体使用:
    a> 绘图小白,像我一样的画图小白并且喜欢操作键盘远胜于鼠标;
    b> 技能小白,没有熟练的掌握其他作图工具;
    c> 布局需求低,对图片布局等没有特殊要求;
    d> 流程图及结构图,要绘制的是流程图结构图之类的图而不是画小狗小猫山山水水。

 

//------end

最新回复

在享受方便的编码的同时,虽然这些工具有很不错的布局算法支持,但仍不一定能满足我们的要求,同意   详情 回复 发表于 2023-8-11 07:26
点赞 关注
 
 

回复
举报

6809

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

在享受方便的编码的同时,虽然这些工具有很不错的布局算法支持,但仍不一定能满足我们的要求,同意

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表