查看: 219|回复: 0

[评测分享] 【树莓派5 测评】 +07.(Graphviz/Dot)绘图测试(zmj)

[复制链接]
  • TA的每日心情
    奋斗
    前天 15:15
  • 签到天数: 201 天

    连续签到: 2 天

    [LV.7]常住居民III

    发表于 2024-4-27 18:11:32 | 显示全部楼层 |阅读模式
    分享到:
    【树莓派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工具做过多的阐述,对于初学者来讲重点关注官网文档即可。
    参考资料及安装如下:
    1. //------官网:Graphviz
    2. https://www.graphviz.org/
    3. //------官网文档:Graphviz-Documentation★★★★★
    4. https://www.graphviz.org/documentation/
    5. //------源码:Graphviz-Gitlab
    6. https://gitlab.com/graphviz/graphviz/
    7. //------源码使用
    8. git clone https://gitlab.com/graphviz/graphviz.git

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

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

    16. //------文件转换指令(仅供参考)
    17. dot -Tpng dot_demo.gv -o demo.png
    18.         或者
    19. dot -Tpng dot_demo.gv  > demo.png
    复制代码
    2.        测试示例
    绘制流程图测试示例
    //------DOT源码
    1. digraph G {
    2.     rankdir=TB;
    3.     node [shape=box, style=filled, color=lightblue];
    4.    
    5.     // 智能手机品牌和型号
    6.     subgraph cluster_1 {
    7.         label="小米";
    8.         style=dashed;
    9.         MIphone [label="小米手机MIphone", color=orange];
    10.     }

    11.     // 上市公司及其产品
    12.     Qualcomm [label="Qualcomm\nSnapdragon 888处理器"];
    13.     Samsung [label="Samsung\nLPDDR5 RAM"];
    14.     SKHynix [label="SK Hynix\nUFS 3.1存储"];
    15.     LGDisplay [label="LG Display\nOLED显示屏"];
    16.     Sony [label="Sony\n图像传感器"];
    17.     Murata [label="Murata\n锂离子电池"];
    18.     AACTechnologies [label="AAC Technologies\n线性马达"];

    19.     // 连接智能手机和组件供应商
    20.     MIphone -> Qualcomm [label="处理器"];
    21.     MIphone -> Samsung [label="RAM"];
    22.     MIphone -> SKHynix [label="存储"];
    23.     MIphone -> LGDisplay [label="显示屏"];
    24.     MIphone -> Sony [label="图像传感器"];
    25.     MIphone -> Murata [label="电池"];
    26.     MIphone -> AACTechnologies [label="线性马达"];

    27.     // 公司间的合作关系
    28.     Qualcomm -> Samsung [label="技术合作"];
    29.     Qualcomm -> LGDisplay [label="显示技术合作"];
    30.     Sony -> Samsung [label="传感器技术合作"];
    31.     Murata -> Qualcomm [label="电池管理合作"];
    32. }
    复制代码
    //------执行
    1. //------执行dot转换
    2. dot -Tpng -o mi_phone.png mi_phone.dot
    3. //------部分参数说明
    4. 这条指令的作用是将名为“mi_phone.dot”的DOT文件转换成一个名为“mi_phone.png”的PNG图像文件。下面是对这条指令中每个参数的详细说明:
    5. 1. `dot`: 这是Graphviz软件包中的工具,用于处理图形描述语言(DOT)文件。它可以用来生成各种类型的图表,如树形图、有向图、网络图等。
    6. 2. `-Tpng`: 这个参数指定了输出图像的格式,`-Tpng`表示输出图像将保存为PNG格式。Graphviz支持多种图像格式,包括PNG、SVG、PDF、JPEG等。
    7. 3. `-o`: 这个参数后面跟着的是输出文件的名称,`-o`后面指定的文件名是`mi_phone.png`,这意味着生成的图像将被保存为名为`mi_phone.png`的PNG文件。
    8. 4. `mi_phone.dot`: 这是输入文件的名称`mi_phone.dot`,也就是包含DOT语言描述的文本文件。
    复制代码
    image-20240416101933682.png
    //------结果
    image-20240416102105984.png
    3.        个人感受
    个人对 DOT & Graphviz 的感受如下:
    1. 1. Graphviz工具
    2.     graphviz是一个开源软件包,dot和gvedit等工具都在该软件包中,或者可以说graphviz是处理该DOT语言文件的一个集成化的工具。
    3. 2. DOT语言
    4.     DOT是一种文本图形描述语言。DOT语言文件通常具有.gv或是.dot的文件扩展名。它借助Graphviz等工具完成图形渲染生成.png、.jpg、.pdf等多种类型的图片。
    5. 3. DOT & graphviz的局限性
    6.     Graphviz中有很多工具可以将DOT语言的文本渲染成为图片,但正如我们所见,我们在享受方便的编码的同时,将图片的布局等任务交给了这些工具,虽然这些工具有很不错的布局算法支持,但仍不一定能满足我们的要求,所以当对图片的布局有特殊要求时,DOT & graphviz就显示出了它的局限性。当然,我们可以再使用其他图片编辑器校正DOT语言生成的图片,但这种时候,DOT & graphviz的方便性或许早就消失殆尽了。
    7. 4. DOT & graphviz的适用群体
    8.     就我个人体会而言,DOT & graphviz适合这些群体使用:
    9.     a> 绘图**,像我一样的画图**并且喜欢操作键盘远胜于鼠标;
    10.     b> 技能**,没有熟练的掌握其他作图工具;
    11.     c> 布局需求低,对图片布局等没有特殊要求;
    12.     d> 流程图及结构图,要绘制的是流程图结构图之类的图而不是画小狗小猫山山水水。
    复制代码
    //------end


    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-19 21:59 , Processed in 0.127500 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.