Graphviz绘图 - DOT语言

Graphviz绘图 - DOT语言

技术杂谈小彩虹2021-07-18 21:26:2360A+A-

平时工作中总是需要画一些流程图的,流程图在绘制的过程中,如果想在中间插入一个步骤,或者删除一个步骤是比较麻烦的,需要调节一些其他的节点,那么怎么解决这一问题呢?

答:使用 Graphviz绘图,用代码来画图,这样子修改一起是比较方便的,专注于流程,思路有了,图自然就有了,不用总是在调整图形、箭头之间花费大量的时间。

简介

Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,可以用于绘制DOT语言脚本描述的图形。

DOT语言是一种文本图形描述语言它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。

一、在 vscode 中 使用 Graphviz绘图 -- 安装插件

image.png

Mac下直接通过brew install graphviz了,也可以直接从官网下载。

brew install graphviz

二、使用示例

1. 简单示例:

digraph G{

    size = "5, 5";//图片大小
    main[shape=box];/*形状*/

    main->parse;
    parse->execute;

    main->init[style = dotted];//虚线

    main->cleanup;
    edge[color = green]; // 连接线的颜色

    execute->{make_string; printf}//连接两个

    init->make_string;
    main->printf[style=bold, label="100 times"];//线的 label

    make_string[label = "make a\nstring"]// \n, 这个node的label,注意和上一行的区别

    node[shape = box, style = filled, color = ".7.3 1.0"];//一个node的属性

    execute->compare;
    
    {rank=same; parse, init}
}

2. 查看可视化图形

点击右键,选择 Open Preview to the SIde, 如下图:

image.png

image.png

3.生成图片

第一步将上述文件创建文本文件并命令为x.dot。

第二步,使用命令将文本内容转换为图片。

dot demo.dot -T png -o demo.png

-T表示输出类型,可以指定jpg、gif、svg等等,-o指定输出文件名,不指定则输出到标准输出上。

三、使用说明

  • 指定形状
    "box"[shape=box]
    "polygon"[shape=polygon,sides=7] 
    "ellipse"[shape=ellipse]
    "circle"[shape=circle]
    "point"[shape=point]
    "triangle"[shape=triangle]
    "invtriangle"[shape=invtriangle]
    "plaintext"[shape=plaintext]
    "diamond"[shape=diamond]

image.png

  • label和bgcolor为定义的图片属性
  • graph 用来描述无向图,关系使用 --来描述,digraph用来描述有向图,关系使用 -> 来描述
  • node和edge,node用来定义节点的默认属性,edge用来定义边的默认属性。作用域从本次定义到下一次定义截住。特定节点/边设置的属性会覆盖默认值。
  • excute的关系通过大括号的方式来对应两个节点
  • []内属性,属性可以针对图、节点、边来设置。
  • rank 定义设置节点处在同一行,辅助渲染出来的图的效果。

graphviz 官网

graphviz 官网地址:www.graphviz.org/ ,官网中有很多例子,可以根据配置,绘制很多图形,甚至是比较复杂的图形。

image.png

image.png

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们