5 款程序员画图神器,全免费!

👉目录

1 Draw.io

2 Excalidraw

3 Graphviz

4 Matplotlib

5 PlantUML

6 写在最后

在程序员的日常工作中,有两大难题:一曰写文档,二曰画图。此前我们策划了多篇技术文档写作指南文章和架构画图技巧文章,有效地帮助到了广大开发者朋友。

点击文章标题即可跳转阅读:

《程序员必备!最全技术文档写作指南》

《如何画好架构图:7种常用类型与示例》

《如何画好一张架构图?》

今天我们为大家精心分享了 5 款鹅厂程序员亲测好用的画图工具,重点是这 5 款工具全部开源免费,如果觉得对你有帮助,希望能在文末得到你的一键三连~

01

Draw.io

Draw.io(现更名为 diagrams.net)是一款功能强大、易于使用的、开源免费的在线流程图绘制工具,它支持用户创建各种类型的图表、流程图、网络图、组织结构图、UML 图等。

Draw.io 不仅支持在线版,还可以在 Windows 、 macOS 和 Linux 等多个平台安装桌面客户端版本,提供跨平台支持能力的同时,也尊重了你不想安装软件的权利。

85d7aa360b52a0230425b0b3c0d94d7c.png

除了跨平台支持的特点,Draw.io 还提供了:

  • 丰富的图形库:内置大量预设图形和模板,满足各种绘图需求。

  • 实时多人协作:支持团队成员实时在线协作,提高工作效率。

  • 自定义形状和模板:用户可以创建并保存个性化的设计。

  • 多格式导出:支持导出 PDF 、 SVG 、 PNG 、 JPEG 以及 HTML 等多种格式。

  • 插件扩展性:通过插件系统,用户可以根据自己的需求扩展软件功能。

以下是一些 Draw.io 模板示例:

2c03bc8969179d5c0f04749fed54474d.png

85429e78e9fc89974bf02c8b96dae2e5.png

1228e6a4e4d88ff883d063e505e90136.png

网页版地址:https://app.diagrams.net/ 

GitHub 客户端地址:https://github.com/jgraph/drawio-desktop/releases

02

Excalidraw

Excalidraw 同样是一款开源免费的画图软件,它的特点在于提供了一种手绘风格的图片输出形态,绘图体验简单、直观却又功能丰富,非常适合用于创建图表、线框图、思维导图和流程图等等程序员日常工作中会遇到的画图场景。

Excalidraw 可以直接通过浏览器访问,也可以通过 Docker 部署到私有服务器上。此外,Excalidraw 还支持与其他应用程序集成,并可通过插件系统扩展功能,包括支持脚本自定义等高级功能。同时还支持端对端加密的在线协作,只需要将一个链接发送给协议方,就能实现画图在线协作。

如果基本的图形无法满足诉求的话,Excalidraw 还提供了在线模板库,供设计师把他们的图形,图标分享给其他用户。例如系统架构图,组件图,UML 图,手绘人物图等等,应有尽有,不一而足。

以下是鹅厂工程师的一些画图示例:

9eced4c7274cc41a18f6faf7e7d8fddd.png

58d06d8e4b3232580af95c417c4f5d24.png

官网地址:https://excalidraw.com/ 

模板库地址:https://libraries.excalidraw.com/?theme=light&sort=default

03

Graphviz

Graphviz 是一款由 AT&T Labs Research 发起的开源工具包,它使用 DOT 语言来描述图形结构,并通过自动布局算法生成可视化图形。

与微软出品的「Visio」的最大不同之处在于,前者是手动的,需要绘图者指定点线之间的布局,而 Graphviz 支持自动布局,只需告知 Graphviz 点与线的关系,它就能实现「自动布局」。

主要特点如下:

  • 简单易用:Graphviz 使用简单的文本描述语言来定义图形结构,无需复杂的绘图技巧。

  • 丰富的图形类型:支持有向图、无向图、流程图、组织结构图、类图、网络拓扑图等多种图形类型。

  • 灵活的布局算法:提供多种布局算法,可以根据图形的特点和需求进行选择,自动处理节点的位置、边的布局以及图形的整体结构。

  • 跨平台支持:可以在 Windows、Mac 和 Linux 等多个操作系统上运行。

  • 丰富的输出格式:支持将图形导出为 PNG、SVG、PDF 等多种格式,方便嵌入到文档、网页或演示文稿中。

  • 可扩展性:提供了丰富的 API 和插件机制,允许开发者根据自己的需求进行定制和扩展。

以下是 Graphviz 的一些官方示例库::

1c76a5a52dff87fb2f5db0230a2a76e3.png

d0f03cd5bfbd1ba218c7756669755222.png

官网地址:https://www.graphviz.org/ 

04

Matplotlib

Matplotlib 是一个在 Python 中广泛使用的数据可视化库,它提供了丰富的绘图功能,支持创建静态、动态和交互式的图表,适用于数据分析、科学研究和工程可视化等领域。

其主要特点如下:

  • 简单易用:Matplotlib 的 API 设计简单直观,易于上手,用户可以快速创建各种类型的图形

  • 多样性:支持多种图形类型,包括线图、散点图、柱状图、饼图、箱线图等,满足用户对不同数据类型的可视化需求

  • 自定义性:用户可以对图形的各种元素(如线条、颜色、标签等)进行个性化定制,以满足个性化的需求

  • 支持多种输出格式:可以将图形输出为多种格式,包括图片文件(如 PNG、JPEG)、PDF 文件、SVG 文件等

  • 与 NumPy 和 Pandas 集成:与 NumPy 和 Pandas 等常用数据处理库集成紧密,可以直接使用这些库中的数据结构来绘制图形

  • 开源免费:用户可以免费使用并根据需要对其源代码进行修改和定制

以下展示一个代码输出示例:

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()

cc2ed7bb9780bf89cc8e560a2c8b6d35.png

官网地址:https://matplotlib.org/ 

05

PlantUML

PlantUML 是一个开源项目,支持快速绘制 UML 图和各种非 UML 图,基本满足程序员的日常工作。它通过简单和直观的语言来定义图形,像 markdown 一样,让人聚焦内容,而非样式,简简单单就可以生成美观的图。

PlantUML 依赖的底层组件就有前文提到的 Graphviz,所以语法也类似,通过自定义的标记语言,来描述不同图形之间的关系,「自动布局」并绘制。

PlantUML 提供了 VS Code 插件下载,非常方便程序员的日常使用。

5e438c19ca40fbde06710e547760de7e.png

392642db0ad48392410b3555a161cf3c.png

VS Code 市场地址:

https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml

06

写在最后

在软件开发的大道上,再好的工具都是「术」的范畴,它的确可以有效地帮助大家提升工作效率,但帮助大家走得更长远的,还是那些硬核的底层原理,那才是「道」之所在。

你或许听过那些大牛用记事本写软件模型的故事,也看到过仅仅用个 PPT 就能把架构图画清楚,甚至不用画图工具几句话就把复杂概念解释清楚的案例。这些才是我们应该去追求的更高境界,诸君一起共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值