写方案、做项目、申报课题,画技术路线图、原理图、系统架构图这些基本是每个人都躲不开的活儿。相信很多同行跟我一样,以前一直靠PPT手动拖拽画图,用久了,各种难受的地方真的越攒越多。
框体大小参差不齐,字体忽大忽小,箭头歪歪扭扭,全凭感觉手动拖拽。复制到不同文档、不同电脑,还经常出现字体错位、排版崩坏的情况。版本迭代时,旧图想要复用,几乎等于重新绘制一张。尤其多层级、多模块的大型技术架构图,手工工具的短板会被无限放大。
最近试了一下用Matplotlib 写代码绘制架构流程图。把绘制方框、文字居中的逻辑封装成独立函数,不用反复复制一堆重复代码。
def draw_box(ax, cx, cy, w, h, title, desc, color): x0 = cx - w / 2 y0 = cy - h / 2 box = FancyBboxPatch((x0, y0), w, h, boxstyle="round,pad=0.08", facecolor=color, edgecolor="#ffffff", linewidth=1.5, alpha=0.88) ax.add_patch(box) ax.text(cx, cy+0.23, title, fontsize=11, color="white", ha="center", va="center", fontweight="bold") ax.text(cx, cy-0.23, desc, fontsize=8.2, color="#e0f4ff", ha="center", va="center")
写好函数之后,调用非常轻松,只需要传入中心点坐标、长宽、文字和颜色,一行代码生成一个标准模块,不用再反复调试文字居中:
# 调用示例:绘制感知层模块draw_box(ax, 7.0, 24.4, 2.8, 1.2, "全域现状排查", "水质/底泥/排污口调研", "#194775")
想要新增模块,直接复制一行改参数就行;修改模块名称、位置,只改动对应参数,所有文字自动居中对齐。
就拿这张水环境 BIM 数字孪生平台六层架构图来说,图里所有模块、箭头、配色,全部依靠代码参数定义,不存在凭手感拖拽对齐的情况。后续方案调整,新增模块、修改文字名称,改动参数一键重绘,不用担心排版乱套。配色、画布大小、字体样式统一规范,导出高清图片。
就拿这张水环境 BIM 数字孪生平台六层架构图来说,图里所有模块、箭头、配色,全部依靠代码参数定义,不存在凭手感拖拽对齐的情况。后续方案调整,新增模块、修改文字名称,改动参数一键重绘,不用担心排版乱套。配色、画布大小、字体样式统一规范,导出高清图片,论文、汇报、申报材料通用,跨设备打开不会变形。
当然实话实说,代码绘图有门槛,前期需要搭建基础框架,临时画一张简易草图,肯定不如拖拽工具来得快。
但如果你的图纸需要反复修改、持续迭代,尤其是层级多、模块复杂的技术路线、系统架构图,程序化绘图,真的可以省下大量重复调整的时间。