【树莓派5 测评】 +07.(Graphviz/Dot)绘图测试(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_demo.gv -o demo.png
- 或者
- dot -Tpng dot_demo.gv > demo.png
复制代码 2. 测试示例绘制流程图测试示例 //------DOT源码 - digraph G {
- rankdir=TB;
- node [shape=box, style=filled, color=lightblue];
-
- // 智能手机品牌和型号
- subgraph cluster_1 {
- label="小米";
- style=dashed;
- MIphone [label="小米手机MIphone", color=orange];
- }
- // 上市公司及其产品
- Qualcomm [label="Qualcomm\nSnapdragon 888处理器"];
- Samsung [label="Samsung\nLPDDR5 RAM"];
- SKHynix [label="SK Hynix\nUFS 3.1存储"];
- LGDisplay [label="LG Display\nOLED显示屏"];
- Sony [label="Sony\n图像传感器"];
- Murata [label="Murata\n锂离子电池"];
- AACTechnologies [label="AAC Technologies\n线性马达"];
- // 连接智能手机和组件供应商
- MIphone -> Qualcomm [label="处理器"];
- MIphone -> Samsung [label="RAM"];
- MIphone -> SKHynix [label="存储"];
- MIphone -> LGDisplay [label="显示屏"];
- MIphone -> Sony [label="图像传感器"];
- MIphone -> Murata [label="电池"];
- MIphone -> AACTechnologies [label="线性马达"];
- // 公司间的合作关系
- Qualcomm -> Samsung [label="技术合作"];
- Qualcomm -> LGDisplay [label="显示技术合作"];
- Sony -> Samsung [label="传感器技术合作"];
- Murata -> Qualcomm [label="电池管理合作"];
- }
复制代码//------执行 - //------执行dot转换
- dot -Tpng -o mi_phone.png mi_phone.dot
- //------部分参数说明
- 这条指令的作用是将名为“mi_phone.dot”的DOT文件转换成一个名为“mi_phone.png”的PNG图像文件。下面是对这条指令中每个参数的详细说明:
- 1. `dot`: 这是Graphviz软件包中的工具,用于处理图形描述语言(DOT)文件。它可以用来生成各种类型的图表,如树形图、有向图、网络图等。
- 2. `-Tpng`: 这个参数指定了输出图像的格式,`-Tpng`表示输出图像将保存为PNG格式。Graphviz支持多种图像格式,包括PNG、SVG、PDF、JPEG等。
- 3. `-o`: 这个参数后面跟着的是输出文件的名称,`-o`后面指定的文件名是`mi_phone.png`,这意味着生成的图像将被保存为名为`mi_phone.png`的PNG文件。
- 4. `mi_phone.dot`: 这是输入文件的名称`mi_phone.dot`,也就是包含DOT语言描述的文本文件。
复制代码//------结果 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
|