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

 腾讯开发者   2024-09-17 10:50   426 人阅读  0 条评论

目录


1 Draw.io

2 Excalidraw

3 Graphviz

Matplotlib

PlantUML

6 写在最后





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








01



Draw.io

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

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

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

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


  • 丰富的图形库:内置大量预设图形和模板,满足各种绘图需求。
  • 实时多人协作:支持团队成员实时在线协作,提高工作效率。
  • 自定义形状和模板:用户可以创建并保存个性化的设计。
  • 多格式导出:支持导出 PDF 、 SVG 、 PNG 、 JPEG 以及 HTML 等多种格式。
  • 插件扩展性:通过插件系统,用户可以根据自己的需求扩展软件功能。



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

5 款程序员画图神器,全免费!  第2张
5 款程序员画图神器,全免费!  第3张5 款程序员画图神器,全免费!  第4张
5 款程序员画图神器,全免费!  第5张
网页版地址:https://app.diagrams.net/ 
GitHub 客户端地址:https://github.com/jgraph/drawio-desktop/releases



02



Excalidraw

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

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

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

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

5 款程序员画图神器,全免费!  第6张
5 款程序员画图神器,全免费!  第7张

官网地址: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 的一些官方示例库::

5 款程序员画图神器,全免费!  第8张
5 款程序员画图神器,全免费!  第9张

官网地址: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()

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

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



05



PlantUML

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

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

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

5 款程序员画图神器,全免费!  第11张
5 款程序员画图神器,全免费!  第12张

VS Code 市场地址:
https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml



06



写在最后

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

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

-End-



本文地址:https://docker.ink/?id=390
温馨提示:文章内容系作者个人观点,不代表Docker中文社区对观点赞同或支持。
版权声明:本文为转载文章,来源于 腾讯开发者 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?