在程序员的日常工作中,有两大难题:一曰写文档,二曰画图。此前我们策划了多篇技术文档写作指南文章和架构画图技巧文章,有效地帮助到了广大开发者朋友。
点击文章标题即可跳转阅读:
今天我们为大家精心分享了 5 款鹅厂程序员亲测好用的画图工具,重点是这 5 款工具全部开源免费,如果觉得对你有帮助,希望能在文末得到你的一键三连~
关注腾讯云开发者,一手技术干货提前解锁👇
Draw.io(现更名为 diagrams.net)是一款功能强大、易于使用的、开源免费的在线流程图绘制工具,它支持用户创建各种类型的图表、流程图、网络图、组织结构图、UML 图等。
Draw.io 不仅支持在线版,还可以在 Windows 、 macOS 和 Linux 等多个平台安装桌面客户端版本,提供跨平台支持能力的同时,也尊重了你不想安装软件的权利。
除了跨平台支持的特点,Draw.io 还提供了:
以下是一些 Draw.io 模板示例:
网页版地址:https://app.diagrams.net/
GitHub 客户端地址:https://github.com/jgraph/drawio-desktop/releases
Excalidraw 同样是一款开源免费的画图软件,它的特点在于提供了一种手绘风格的图片输出形态,绘图体验简单、直观却又功能丰富,非常适合用于创建图表、线框图、思维导图和流程图等等程序员日常工作中会遇到的画图场景。
Excalidraw 可以直接通过浏览器访问,也可以通过 Docker 部署到私有服务器上。此外,Excalidraw 还支持与其他应用程序集成,并可通过插件系统扩展功能,包括支持脚本自定义等高级功能。同时还支持端对端加密的在线协作,只需要将一个链接发送给协议方,就能实现画图在线协作。
如果基本的图形无法满足诉求的话,Excalidraw 还提供了在线模板库,供设计师把他们的图形,图标分享给其他用户。例如系统架构图,组件图,UML 图,手绘人物图等等,应有尽有,不一而足。
以下是鹅厂工程师的一些画图示例:
官网地址:https://excalidraw.com/
模板库地址:https://libraries.excalidraw.com/?theme=light&sort=default
Graphviz 是一款由 AT&T Labs Research 发起的开源工具包,它使用 DOT 语言来描述图形结构,并通过自动布局算法生成可视化图形。
与微软出品的「Visio」的最大不同之处在于,前者是手动的,需要绘图者指定点线之间的布局,而 Graphviz 支持自动布局,只需告知 Graphviz 点与线的关系,它就能实现「自动布局」。
主要特点如下:
以下是 Graphviz 的一些官方示例库::
官网地址:https://www.graphviz.org/
Matplotlib 是一个在 Python 中广泛使用的数据可视化库,它提供了丰富的绘图功能,支持创建静态、动态和交互式的图表,适用于数据分析、科学研究和工程可视化等领域。
其主要特点如下:
以下展示一个代码输出示例:
import matplotlib.pyplot as plt
import numpy as np
# Fixing random state for reproducibility
np.random.seed(19680801)
dt = 0.01
t = np.arange(0, 30, dt)
nse1 = np.random.randn(len(t)) # white noise 1
nse2 = np.random.randn(len(t)) # white noise 2
# Two signals with a coherent part at 10 Hz and a random part
s1 = np.sin(2 * np.pi * 10 * t) + nse1
s2 = np.sin(2 * np.pi * 10 * t) + nse2
fig, axs = plt.subplots(2, 1, layout='constrained')
axs[0].plot(t, s1, t, s2)
axs[0].set_xlim(0, 2)
axs[0].set_xlabel('Time (s)')
axs[0].set_ylabel('s1 and s2')
axs[0].grid(True)
cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)
axs[1].set_ylabel('Coherence')
plt.show()
官网地址:https://matplotlib.org/
PlantUML 是一个开源项目,支持快速绘制 UML 图和各种非 UML 图,基本满足程序员的日常工作。它通过简单和直观的语言来定义图形,像 markdown 一样,让人聚焦内容,而非样式,简简单单就可以生成美观的图。
PlantUML 依赖的底层组件就有前文提到的 Graphviz,所以语法也类似,通过自定义的标记语言,来描述不同图形之间的关系,「自动布局」并绘制。
PlantUML 提供了 VS Code 插件下载,非常方便程序员的日常使用。
VS Code 市场地址:
https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml
在软件开发的大道上,再好的工具都是「术」的范畴,它的确可以有效地帮助大家提升工作效率,但帮助大家走得更长远的,还是那些硬核的底层原理,那才是「道」之所在。
你或许听过那些大牛用记事本写软件模型的故事,也看到过仅仅用个 PPT 就能把架构图画清楚,甚至不用画图工具几句话就把复杂概念解释清楚的案例。这些才是我们应该去追求的更高境界,诸君一起共勉!
-End-