图像与可视化
========================================
在DI-engine中,我们经常会需要进行图像的绘制,以及一些信息的度量与可视化,本节将对这些内容进行详细介绍。
PlantUML
-----------------
PlantUML是一种可以用于绘制UML等图像的工具,详情可参考 `PlantUML官方网站 `_ 。其最大的特点在于:基于代码,无需关注排版,十分易于维护。
例如,我们可以绘制类图
.. image:: plantuml-class-demo.puml.svg
:align: center
可以绘制算法的流程图
.. image:: plantuml-activity-zh-demo.puml.svg
:align: center
也可以绘制YAML数据
.. image:: plantuml-yaml-demo.puml.svg
:align: center
我们可以使用plantumlcli工具进行图像的生成,具体可参考 `plantumlcli的Github仓库 `_ 。
.. note::
而在DI-engine的文档中,已经集成了PlantUML,可以基于源代码自动生成图像。例如,我们可以在当前路径下创建文件 ``plantuml-demo.puml``
.. literalinclude:: plantuml-demo.puml
:language: text
:linenos:
当编译文档时,SVG格式的图像 ``plantuml-demo.puml.svg`` 也将会自动生成,如下所示。
.. image:: plantuml-demo.puml.svg
:align: center
graphviz
-----------------
对于更加复杂的拓扑结构图,我们可以使用graphviz工具进行绘制:
* `Graphviz官方文档 `_
* `Graphviz Python封装库 `_
* `Graphviz在线绘制 `_
例如,我们可以使用Graphviz,快速绘制一个图结构,如下代码所示
.. literalinclude:: graphviz-demo.gv
:language: text
:linenos:
绘制的图像如下所示
.. image:: graphviz-demo.svg
:align: center
draw.io
-----------------
``draw.io`` 是一个极为简单易用的在线图像编辑工具,可以用来编辑工作流图、BPM、组织图、UML图、ER图以及网络拓朴图等:
* `draw.io工具 `_
* `draw.io官方文档 `_
.. image:: draw.io-example.png
:align: center
``draw.io`` 最大的特点在于拖动式的作图方式,因而可以实现“所见即所得”。
snakeviz
-----------------
当我们需要对一个程序或程序的局部进行测速时,可以使用原生的cProfile,而snakeviz则可以使测速结果以可视化的形式展现出来:
* `cProfile官方文档 `_
* `snakeviz官方文档 `_
.. image:: snakeviz-example.png
:align: center