Typora绘图
在学习的过程中不可避免地要绘制流程图,树状图,这些图画起来比较简单,但是要达到美观就比较麻烦了。所以在网上找了一些绘图的工具,首先是Typora的自带绘图工具。
Typora的绘图代码
mermaid绘图
首先是成品:
graph LR |
下面是代码:
```mermaid |
接受一下算法:
- {}表示的是条件判断,[]是方形的边框,()是圆形的。
- –>表示的线,A,B,C是标号。||是条件,括号内的是节点名称。
- LR表示横向, TD是竖向
标准流程图flow
成品:
|
代码:
```flow |
|
代码:
```flow |
到此也就结束了,还有UML等的绘制,但是目前我用不到,再此就不进行记录了。
工具绘图Graphviz
Graphviz 是一个开源的图可视化工具,非常适合绘制结构化的图标和网络。Graphviz 使用一种叫 DOT 的语言来表示图形。
DOT 语言
DOT 语言是一种图形描述语言。能够以简单的方式描述图形,并且为人和计算机所理解。
有关代码:
无向图
graph graphname { |
有向图
digraph graphname { |
设置属性
属性可以设置在节点和边上,用一对 [] 表示,多个属性可以用空格或者 , 隔开。
strict graph { |
完整的属性列表可以参考 attrs | Graphviz - Graph Visualization Software
子图
subgraph 的作用主要有 3 个:
- 表示图的结构,对节点和边进行分组
- 提供一个单独的上下位文设置属性
- 针对特定引擎使用特殊的布局。比如下面的例子,如果 subgraph 的名字以 cluster 开头,所有属于这个子图的节点会用一个矩形和其他节点分开。
digraph graphname{ |
布局
默认情况下图是从上到下布局的,通过设置 rankdir=“LR” 可以让图从左到右布局。
现在够用了。
基本命令
使用dot -T输出的格式 dot文本 -o *.输出格式 命令,可以生成相应格式的图片。比如要根据上面的脚本生成一个svg图片,可以执行命令:dot -Tsvg eg.dot -o eg.svg
生成图片
dot test.dot -T png -o test.png |
由一个节点指向多个节点时,可以将它们用大括号包上,当子节点含有空格时可用引号将其包含。可以对脚本代码加上注释,其风格与C++的注释风格一样,可以用/* */包括注释内容,也可以用//将后面到下一行为止全当作注释。
节点描述中包含空格导致被拆分成两个节点
解决方案一,使用 label
graph pic1 { |
解决方案二,加双引号
graph pic1 { |
一些基本图形
节点形状
https://graphviz.gitlab.io/_pages/doc/info/shapes.html
箭头的形状也有很大的选择空间
https://graphviz.gitlab.io/_pages/doc/info/arrows.html