dot 绘图

dot 绘图
python 绘制 graphviz

dot

DOT 是一种文本图形描述语言。DOT 语言文件通常具有. gv 或是. dot 的文件扩展名。当然,在编写好. dot 或者. gv 的文件之后,需要有专门的程序处理这些文件并将其渲染成为图片,dot 就是其中一款程序,它可以将 DOT 语言描述的图形渲染成. png、.jpg、.pdf 等多种类型。

当然,作为工具,dot 本身是很原始的,就像 gcc 之于 c 代码,g++ 之于 cpp 代码一样,或许某些程序员会热衷于在终端使用这些工具,但也有很多人喜欢交互式的界面,所以就有了 gvedit 之类的工具,它提供交互式的窗口来使用 dot 等工具渲染 DOT 语言描述的图形。

graphviz

graphviz 是一个开源软件包,上述 dot 和 gvedit 等工具都在该软件包中。
所以,不妨简单的认为 DOT 是一门图形描述语言而 graphviz 是处理该语言文件的一个集成化的工具。

环境配置

参考: graphviz

windows

下载 exe 安装即可

ubuntu

sudo apt-get install graphviz

版本查看

windows

dot --version

输出信息如下

dot - graphviz version 9.0.0 (20230911.1827)

ubuntu

dot -version

输出信息如下

dot - graphviz version 2.43.0 (0)
libdir = "/usr/lib/x86_64-linux-gnu/graphviz"
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.so.6
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
        /usr/lib/x86_64-linux-gnu/graphviz/config6a
                was successfully loaded.
    render      :  cairo dot dot_json fig gd json json0 map mp pic pov ps svg tk visio vml vrml xdot xdot_json
    layout      :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device      :  canon cmap cmapx cmapx_np dot dot_json eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg json json0 mp pdf pic plain plain-ext png pov ps ps2 svg svgz tk vdx vml vmlz vrml wbmp webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib
    loadimage   :  (lib) eps gd gd2 gif jpe jpeg jpg png ps svg webp xbm

示例一

新建 test.dot 文件并输入如下内容

digraph G
{
    a -> b;
}

使用如下命令生成 png 图片

dot -Tpng -o test.png test.dot

生成的图片如下
在这里插入图片描述

示例二

digraph BinaryTree {
    node [fontname="Arial", shape=circle, style=filled, color="#ffffff", fillcolor="#0077be", fontsize=12, width=0.5, height=0.5];
    edge [fontname="Arial", fontsize=10, color="#333333", arrowsize=0.5];

    A -> B;
    A -> C;
    B -> D;
    B -> E;
    C -> F;
    C -> G;
}

效果
在这里插入图片描述

示例三

digraph RedBlackTree {
    node [fontname="Arial", shape=circle, style=filled, color="#ffffff", fillcolor="#000000", fontsize=12, width=0.5, height=0.5];
    edge [fontname="Arial", fontsize=10, color="#333333", arrowsize=0.5];

    // 节点定义
    NULL [shape=point];
    node1 [label="1", fontcolor=white, fillcolor=red];
    node2 [label="2", fontcolor=white, fillcolor=black];
    node3 [label="3", fontcolor=white, fillcolor=red];
    node4 [label="4", fontcolor=white, fillcolor=black];
    node5 [label="5", fontcolor=white, fillcolor=red];
    node6 [label="6", fontcolor=white, fillcolor=black];
    node7 [label="7", fontcolor=white, fillcolor=red];

    // 边定义
    NULL -> node1;
    node1 -> node2;
    node1 -> node3;
    node2 -> node4;
    node2 -> node5;
    node3 -> node6;
    node3 -> node7;
}

在这里插入图片描述

vscode 插件

Graphviz (dot) language support for Visual Studio Code

在这里插入图片描述

参考

https://www.graphviz.org/pdf/dotguide.pdf
https://graphviz.org/gallery/
https://frapples.github.io/articles/2016-11-16-1f70.html
https://www.cnblogs.com/alenoscar/p/6064737.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值