认识
示意图(Illustration)是种用简单的图形、符号或标记来表示和传达信息的图表或图像。它通常用于解释概念、过程、关系或设计,并帮助人们更好地理解和记忆相关的信息。
示意图能够通过直观的呈现、清晰的组织和主动的参与,帮助人们更好地理解和记忆相关的信息。
示意图能帮助人们更好地理解和记忆相关的信息有几个原因:
- 首先,示意图通过图形、符号和颜色等元素来呈现信息,使得信息更加直观和易于理解。人脑对于视觉信息的处理速度和能力远远超过对文字的处理,因此示意图能够更快地被人们理解。
- 其次,示意图能够将复杂的概念和关系以简洁的方式呈现,帮助人们更好地理清思路和逻辑,从而更好地理解和记忆相关的信息。示意图的结构化和层次化设计使得信息的组织更加清晰,能够凸显重要的关键点和关系,帮助人们更好地抓住核心要点。
- 另外,绘制示意图也需要人们主动参与,这种主动参与的过程促使人们更深入地思考和理解相关的信息。绘制示意图可以帮助人们整合和提炼知识,加深对信息的理解和记忆,同时也能够激发创造力和想象力,帮助人们更好地理解和应用所学的知识。
在编写文档或记录笔记时,我们经常需要添加插图,以更好的解释文字内容。该笔记将记录:与插图有关的概念术语,我们常用的插图绘制工具,以及相关问题的解决办法。
组成
Graph Theory
https://en.wikipedia.org/wiki/Graph_theory
Graph vs. Diagram vs. Chart
graph、chart、diagram 的区别
Diagram – Wikipedia
三者的中文意思都可以是图表,而且它们之间界限比较模糊,又是可以互换。但是也有一些小区别:
1)Graph,涵义更为抽象,主要用于说明各种事物之间存在的函数关系,或用于对比,饼图、条形图、曲线图都可以叫做 Graph
2)Diagram,比较具象,用于描述某个物的组成、特征等等。比如,涉及到建筑或机器等实际事物的平面图、分解示意图、网络拓扑图等等,就用 Diagram
3)Chart,主要与坐标有关,可以解释为数据关系图。在海事上都用这个;多半用于展示数据,比如直方图、饼图、折线图等等;而如果拿一个画板,简单地用坐标图描述营收变化与成本或时间的关系等等,一般也用 Chart
总而言之,在日常生活中,Chart 是相对简单的说法,Graph 更专业些,Diagram 侧重于具体事物;
示意图的类别
序列图 | Sequence Diagram | Wikipedia/Sequence diagram
- 序列图,它描述了角色及角色之间事件的发生序列。如下图所示:

性质
示意图的意义在于:
- 它能够以简明扼要的方式展示和传达复杂的概念和信息。
- 通过使用图形、符号和标记,示意图可以帮助人们更容易地理解抽象的概念,减少文字的冗长和复杂性。
- 其能够提供更直观的视觉呈现,使人们更容易记忆和回顾相关信息。
构建
人类的创造力真的是太厉害了,任何问题都能创造出解决方案。我们也创造各种各样的图解,用于描述、解决不同的问题。因此我们不能全部梳理,只能梳理出我们用到的图解类型以及对应的工具。
注,我们并非意图列举所有的插图绘制工具,只是我们日常用到的一些绘图工具进行汇总。
TikZiT
TikZiT is a super simple GUI editor for graphs and string diagrams. Its native file format is a subset of PGF/TikZ, which means TikZiT files can be included directly in papers typeset using LaTeX. Pre-built versions are available for systems running Windows, Linux, or macOS. Packages are available for some Linux distributions, or you can build from source.
GraphViz
图解工具,使用 DOT 语言来生成图解。不像平时使用的思维导图工具,在 GraphViz 中,我们只负责描述关系,GraphViz 会为你生成合适的图形结构;
Ditaa – DIagrams Through Ascii Art
Ditaa 是一个用 Java 编写的小型命令行工具,可以将使用 ASCII 字符(包含似于/ | -字符的图)绘制的图转换为适当的位图图形。官网中的例子很好的说明了最好的说明了 Ditaa 的作用,也说明了与其他方法相比使用 Ditaa 的好处;
SeqDiag – Sequence Diagram
http://blockdiag.com/en/seqdiag
时序图绘制软件;
LaTex
文档准备系统。使用纯文本来编写文档;
XMind
只要用在平时的工作当中。大家也基本都在用这东西;
中文首页:https://www.xmind.cn/
Minder
phase1geo/Minder: Mind-mapping application for Elementary OS
LibreOffice Draw
开源 Office 软件 LibreOffice 的 Draw 软件也能绘制图解。类似于 Microsoft Office 的 Visio 软件;
drawio
jgraph/drawio: Source to app.diagrams.net
Excalidraw
https://excalidraw.com/
https://github.com/excalidraw/excalidraw
Web, NodeJS, Yarn, Sketch
Kroki
Kroki! – Creates diagrams from textual descriptions!
Kroki 提供统一的 API,支持(BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML)),以后将支持 Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, Structurizr, SvgBob, UMLet, Vega, Vega-Lite, WaveDrom… 等等;
VCG(Visualization of Compiler Graphs)
Visualization of Compiler Graphs
数据可视化工具
DataV、Grafana、Tableua、QuickBI
Diagrams
https://diagrams.mingrammer.com/
https://diagrams.mingrammer.com/docs/getting-started/installation
https://github.com/mingrammer/diagrams
yEd
yEd – Wikipedia
yWorks – The Diagramming Experts
通过 Python 编程:
1)Create Diagram From Python – yEd Q&A
2)jamesscottbrown/pyyed: A simple Python library to export networks to yEd
3)yEd Module — N2G 0.0.1 documentation
Mermaid
mermaid-js/mermaid: Generation of diagram and flowchart from text in a similar manner as markdown
应用
—— 该部分将介绍针对各种具体场景的解决方案,我们应该使用哪些工具。该部分内容属于实践经验的汇总,是比较具体的应用案例。
它们被广泛应用于各种领域,如教育、科学、工程、设计和通信等,以帮助人们更好地理解和传达信息。
网络拓扑图 | Network Topology Diagram
Top 10 Network Diagram, Topology & Mapping Software
我们希望:
1)会能够表述设备之间的关系,即支持节点间连线,表述设备间的关系;
2)该工具能够兼容多个平台(Windows、macOS、Linux),即源文件能够在多个平台中查看;
# 09/28/2018 Dia
# 05/09/2019 LibreOffice Draw
# 07/31/2021 draw.io
+Dia 并不能跨平台,因此多人分享协作会有些问题;现在,我们使用
+draw.io (diagrams.net) 的桌面程序,轻量、跨平台、能与其他开源组件互操作;
# 06/29/2023 Graphviz
时序图 | Sequence diagram
相关绘制工具:Mscgen
# 05/16/2018 | SeqDiag
思维导图 | Mind mapping | 头脑风暴 | Brainstorming
XMind
Graphviz in Zim
场景 | 绘制网络报文结构图 | Packet Structure
Communication packet/frames diagram: documenting protocols – Stack Overflow
# 12/06/2020 LaTex bytefield https://ctan.org/pkg/bytefield
packetdiag | http://blockdiag.com/en/nwdiag/packetdiag-examples.html
Inkscape
wavedrom | https://wavedrom.com/editor.html
luismartingarcia/protocol
- 官网:www.luismg.com/protocol/
- 文档:https://www.luismg.com/protocol/
- 仓库:https://github.com/luismartingarcia/protocol
- 参考:protocol——命令行绘制协议图大杀器
改进
个人体验
下面是我们个人的一些看法,并不具有代表性,这些看法通常与个人习惯和需求有关系;
我们非常热衷于纸质图解(或许可以考虑手写软件),唯一不好的地方就是修改和维护麻烦。因此就要使用软件工具来解决维护和修改问题;
# 09/01/2018
在绘制流程图的时候,我们不想处理流程图的美观,比如色彩、字体、大小、箭头的样式等等。我们希望能够直接表达思路,工具自动帮我们完成布局,美观对我们来说是次要的。这点用 LibreOffice 的 Draw 功能有些困难,因为在那里我们需要兼顾控件的摆放,弄不好还会歪歪扭扭的,进行调整过于浪费时间。在这一点上 Dia 也可以,但是依然不够优秀。虽然 XMind 在这个时候赢过了前两者,但是还不够;
在这一点上,我们选择使用 Graphviz,我们只需要表达思路,它会自动生成图解。我们唯一需要做的就是使用 DOT 语言来表到思路;
# 09/02/2018 考虑不周。在我们的情景里中,需要对元素进行描述,因此就会由大段的描述性文本。而 Graphviz 通常用于表述元素的关系,元素名通常都不会很长,对于大段文本的显示并不友好。还是使用 XMind 了;
# 09/03/2018 昨晚还是用 XMind 完成了流程图;
参考
Wikipedia / Diagram / https://en.wikipedia.org/wiki/Diagram