由于在写作中经常需要配图,本文分享下我常用的绘图工具以及如何存储并展示配图。
白板绘图
Excalidraw
白板绘图的好处在于灵活度非常高。好的白板工具可以很方便的绘制自由的图片和预定义的结构化图形,这方面我在用的工具是 Excalidraw,由于本工具是开源的,我也部署了自己的 Excalidraw 白板工具。在基于纯文本的人生管理这篇文章里所有的配图都是用 Excalidraw 绘制,比如下图:
一个好的白板工具应该需要有什么特性呢?Excalidraw 的创始人写了一篇很好的文章Rethinking Virtual Whiteboard来回答这个问题。
Excalidraw 的优点有以下:
- 无需注册,直接使用,用完即走;
- 代码开源,免费使用,不用担心商业问题;
- 多人实时协作,共同绘制;
- 数据可导出,可通过链接直接分享给任何人;
- 数据存储在浏览器本地,文件可离线编辑;
- 扩展性强,可以导入其他人绘制的资源库;
- 数据采用端到端加密,服务器端数据加密存储,隐私保护很可靠;
- 保存的文件可直接在 VSCode 编辑(通过插件),同时可被其他网站嵌入使用,比如不只是笔记工具的 Logseq里的绘图功能就是嵌入 Excalidraw 完成的;
拥有这么多特性,用 Excalidraw 能画啥图得取决于你的想象力了:在 One Year of Excalidraw与 Create Diagrams That Look Like Hand-drawn这两篇文章里可以看到使用 Excalidraw 画常见的结构图如架构图、结构图、流程图与交互图等,也可以自由绘制如品牌Logo、事件风暴图、原型图、对比图、手绘图、四格漫画与平面图等。
除了 Excalidraw 外,其创始人早期用了另一个白板工具近 10 年,这个工具是 zwibbler,我看了下感觉用 Excalidraw 完全可以替代它。
Miro&& Mural&& Figma
这几个在线白板很适合团队协作(比如敏捷工作流如 Retro、站会、头脑风暴、工作坊等),和 Excalidraw 不同之处在于,它们支持的模版更为丰富,还能集成不同的 App,比如在白板里插入表格和图片之类。其中 Figma 虽然是个类似 Sketch 的设计工具,但是也支持白板的用法。
不好的地方在于它们都不是开源的,但是也提供了免费版。当然也可以用 Google 出品的jamboard替代,虽然没有提供模版,但是基本功能都类似。
Perfect FreeHand
带有压感的在线手写板工具,以下是用手写板手写的效果:
文本绘图
文本绘图的好处在于修改、存储方便,很简单即可绘制出固定模式的图,如时序图、架构图、部署图、线框图、甘特图、WBS与思维导图。 PlantUML是一个支持文本绘制类UML图的工具,可以在 Real World Plantuml 找到很多用它实现的图。我一般用它来绘制以下一些图。
思维导图
文本如下:
@startmindmap
skinparam monochrome true
Markdown排版
(1) 写作
- 博客
- 知乎专栏
- 微信公众号
(2) 幻灯片
(3) 专业报告
(4) 笔记
@endmindmap
可以使用在线编辑器 PlantUML Editor在线编辑预览。
架构图
源文本见 arch_aws.plantuml。
关于文本绘图的进一步思考,推荐看 C4 Model 的作者这篇 Software architecture diagrams as text。
专业绘图
Sketch/OmniGraffle
源文件见 Serverless.sketch。
要想用 Sketch 画好配图,配色很重要,这方面可以看 draveness 写的这篇《技术文章配图指南》。当然 Sketch 可以做的远不止这些,不过这不在本文讨论范围。
draw.io/GoogleDrawings
这类工具都可以绘制各类你想要的配图,唯一限制的就是你的想象力了。
在线绘图工具如 Google Drawings的多人实时协作功能更是团队协作绘图利器。这篇《分布式事务中的时间戳》中的配图就是用 Google Drawings 绘制的。
代码绘图
Python Jupyter Notebook
我用这个绘制一些数据分析的图,比如这种:
源代码见:index_month_quote_change.ipynb。
其他工具
Excel
用 Excel 画图不是不可以,你可以用数据绘制图,也可以用单元格来绘制马赛克的图,不过我一般用它来绘制投资组合的一些走势图和状态图。
配图存储与展示
图片我一般用 VSCode 插件 markdown image paste配置 AWS S3 后,可将复制到剪贴板的图片一键上传至 S3 桶,之后可通过桶绑定的域名访问图片,具体详见《我的笔记系统》VSCode插件一键存储图片至S3节。
关于绘图工具的思考
没有一种工具是万能的,万能如 Excalidraw 也无法替代 Lucidchart/Draw.io/Google Drawings/Visio 这些复杂的工具(他们更适合复杂的对精确性有高度要求的图)。更没有一种软件工具能替代纸和笔。工具更重要的是背后使用它的人,能用图片讲好一个故事才是我们需要不断提升的能力,一个工具能做到不限制你的发挥就算适合的好的工具。
【本文是51CTO专栏作者“ThoughtWorks”的原创稿件,微信公众号:思特沃克,转载请联系原作者】