6.2. 使用Graphviz绘图#

Graphviz(Graph Visualization Software)是一个开源的图形可视化软件, 它能够从简单的文本文件描述中生成复杂的图形和网络。 它使用一种名为 DOT 的描述语言来定义图形,使得用户可以专注于内容而非布局和设计。

Graphviz 的主要特点和用途包括:

  • 灵活的渲染功能:Graphviz 可以生成多种格式的图形文件,包括 raster 和 vector 格式,如 PNG、PDF、SVG 等。

  • 自动布局:Graphviz 的一个主要特点是其自动布局能力。用户只需定义图的元素和它们之间的关系,Graphviz 就能够自动计算出合适的布局。

  • 扩展性:Graphviz 提供了多种工具和库,可以用于各种应用,如 Web 服务、生成报告,或与其他软件的集成。

  • 广泛的应用:Graphviz 被广泛用于各种领域,包括软件工程(如代码依赖关系图)、网络设计和分析、生物信息学(如基因表达网络)等。

Graphviz 的优势在于快速、灵活且高效。 尽管它的学习曲线可能相对较陡峭,但一旦掌握,你将发现它是一个非常强大的工具。

6.2.1. 安装Graphviz#

Graphviz 可以通过包管理器进行安装,如 aptyumbrew 等。 这里以 Ubuntu 为例,使用 apt 包管理器安装 Graphviz:

# Ubuntu
sudo apt-get install graphviz

安装完成后, 在命令行中输入 dot -V 来验证是否安装成功.

user@host:~$ dot -V
dot - graphviz version 2.43.0 (0)

6.2.2. 修改项目配置文件#

Graphviz在Sphinx中是内置扩展,不需要额外的安装。 修改项目配置文件 conf.py , 在其中开启Graphviz插件并设置一些相关的参数:

# 通过配置开启graphviz插件
extensions = ['sphinx.ext.graphviz']

# 设置graphviz_dot路径
graphviz_dot = 'dot'
# 设置graphviz_dot_args的参数, 这里设置了默认字体
graphviz_dot_args = ['-Gfontname=Georgia',
                     '-Nfontname=Georgia',
                     '-Efontname=Georgia']
# 输出格式, 默认png,这里使用svg矢量图
graphviz_output_format = 'svg'

这里 graphviz_dot 的值是 dot , 为了不把绝对路径写到配置文件中, 防止其他人的路径不一样, 所以这里要求 dot 这个程序在环境变量中, 能够直接使用。

6.2.3. 画图#

在Sphinx文档中使用graphviz段来插入图片, 可以在文档中直接使用dot语言或者使用dot文档.

Example:

.. graphviz::

    digraph abc{
        a;
        b;
        c;
        d;

        a -> b;
        b -> d;
        c -> d;
    }

效果:

digraph abc{ a; b; c; d; a -> b; b -> d; c -> d; }

或者使用一个dot文档:

.. graphviz::external.dot

参考:

sphnix文档使用graphviz来画图