Manim 排网格:两层 arrange 嵌套,还是 arrange_in_grid?六个大小不一的方块实测对比
利益相关本文作者与极坐标⋅XYZjizuobiao.xyz团队有关联。下面的数字是我们在 Manim Community 0.21.02026 年的最新版本上跑出来的代码都贴在文里结论请自行验证。成员一样大的时候两种写法排出来的网格一模一样。差别出在成员大小不一的时候先把每行各自arrange、再把几行上下叠起来行与行之间互不知道对方上下对不成列arrange_in_grid是按整张表算的同一列的成员中心在一条竖线上。所以要「表格」那种横竖都对齐的效果用arrange_in_grid每行个数不一样、或者每行要各自居中用两层arrange。Manim 是用 Python 代码写数学动画的开源引擎3Blue1Brown 的视频就是它做的。它没有「表格布局」「弹性布局」这类东西排版靠的是VGroup上的几个方法每个方法调用一次就摆一次位置。排网格能用的就是上面这两条路。一段代码把两种写法并排放六个方块边长依次是 0.5、2、0.5、1、0.5、1.5间距都用 0.2。左边蓝色是两层arrange右边黄色是arrange_in_gridfrom manim import * class GridVsNested(Scene): def construct(self): sides [0.5, 2, 0.5, 1, 0.5, 1.5] def make(color): return [Square(side_lengths, colorcolor).set_fill(color, 0.5) for s in sides] # 左边两行各自 arrange再把两行上下叠起来 m make(BLUE) row1 VGroup(*m[:3]).arrange(RIGHT, buff0.2) row2 VGroup(*m[3:]).arrange(RIGHT, buff0.2) nested VGroup(row1, row2).arrange(DOWN, buff0.2).move_to([-3.5, 0, 0]) # 右边同样六个方块交给 arrange_in_grid grid VGroup(*make(YELLOW)).arrange_in_grid(rows2, cols3, buff0.2).move_to([3.5, 0, 0]) self.add(nested, grid) self.wait()不想在本机装环境的话把这段贴进极坐标⋅XYZ 的工作区点运行就能看里面装的也是 Manim 0.21.0。排出来差在哪我们把每个方块的中心坐标打印了出来x 以各自那一组的中心为零点两层 arrange左arrange_in_grid右第一行三个方块的 x-1.45、0、1.45-1.95、-0.25、1.7第二行三个方块的 x-1.2、-0.25、0.95-1.95、-0.25、1.7两行的 y0.85、-1.10.85、-1.1同一行里相邻两个的间隙都是 0.2第一行 0.45、0.7第二行 0.95、0.95整体宽 × 高3.4 × 3.74.9 × 3.7行的高度两边一样都是按这一行里最高的那个方块来的。差别全在横向。左边每一行内部间隙严格是 0.2排得紧但六个中心落在六个不同的 x 上。右边两行的 x 完全相同三列对得很齐代价是间隙不再是 0.2buff0.2在这里是格子与格子之间的距离小方块待在一个比它宽的格子正中两边自然空出来一截。整体也因此宽了 1.5。原因在两个方法的做法上。arrange是让第二个成员next_to到第一个旁边、第三个next_to到第二个旁边一路接下去它眼里只有相邻的两个。arrange_in_grid先把成员按行列分好取每一列里最宽的当列宽、每一行里最高的当行高画出一张格子再把成员一个个放进去。排完之后整组的位置也不一样这一点和对不对齐没关系但两条路混着用的时候很容易被它绊一下。arrange排完会把整组挪到画面正中arrange_in_grid排完整组留在原来的中心。我们把两种写法都先move_to([3, 2, 0])再排两层arrange排完中心在 (0, 0)前面的move_to白写了arrange_in_grid排完中心还是 (3, 2)。所以上面那段代码里两边的move_to都放在了排列的后面。用arrange的时候这个顺序是必须的用arrange_in_grid时放前放后都行统一放后面最省心。arrange_in_grid 的格子还能怎么调格子里靠哪边默认是放在格子正中。cell_alignmentDOWN让每个成员贴着格子底边我们试了上面那六个方块同一行的底边 y 变得一样了第一行 -0.15第二行 -1.85像东西摆在架子上。col_alignmentslcr可以一列一列地指定左、中、右做左列是名称、右列是数字的小表格时用得上。格子固定大小不想让列宽随内容变可以直接给col_widths[2] * 3, row_heights[2] * 2。这样排完三列的中心相距都是 2.2列宽 2 加间隙 0.2和里面装的方块多大没关系。列表长度要和列数对上我们试过给三列只传两个宽度报的是ValueError: col_widths has a mismatching size.横竖间隙分开设buff(0.2, 1.0)第一个数是横向间隙第二个是纵向间隙。这是量出来的结果0.21.0 的文档字符串里写的是(row, col)容易理解反。行列数只写一个七个成员写cols3会排成 3、3、1写rows2是 4、3。两个都写但装不下比如七个成员rows2, cols3会报ValueError。什么时候反而该用两层 arrangearrange_in_grid有一件事做不到每行各自居中。七个边长 1 的方块arrange_in_grid(cols3, buff0.2)前两行的 x 是 -1.2、0、1.2第三行只有一个它在 x -1.2靠最左。网格是按格子填的不满的那一行从第一格开始放。换成两层arrange每行是一个独立的小组最外层arrange(DOWN)时默认中心对中心第三行那一个就在 x 0居中了。同样的道理每行个数本来就不一样的排法只能用两层arrange。比如 1、2、3 的三角堆sq [Square(side_length1) for _ in range(6)] rows VGroup(VGroup(sq[0]), VGroup(*sq[1:3]), VGroup(*sq[3:])) for r in rows: r.arrange(RIGHT, buff0.2) rows.arrange(DOWN, buff0.2)排出来第一行在 x 0第二行在 ±0.6第三行在 -1.2、0、1.2每行都以中线对称。小结两层 arrangearrange_in_grid成员一样大结果相同结果相同成员大小不一行内间隙相等上下不成列行列都对齐间隙随格子变每行个数不同、每行各自居中能不能不满的行靠左排完整组的位置回到原点留在原来的中心格内对齐、固定格子大小没有cell_alignment、col_alignments、col_widths代码量每行一个小组外面再套一层一行arrange的buff、aligned_edge、centerFalse这些基础用法以及往VGroup里放图片报错怎么办在极坐标⋅XYZ 的这篇文章里写得更细配套视频在教程《布局下· 尺寸 / 包围 / 编组 / 深度 实战》的第三节。实测环境Manim Community 0.21.0 · 2026 年 10 月

相关新闻

2027创新计算机选题:NeuroFlow 神经自适应个人计算环境

2027创新计算机选题:NeuroFlow 神经自适应个人计算环境

项目定位 NeuroFlow 是面向 2027 年的下一代个人计算系统,以「脑机接口 环境智能 自适应计算」为核心,让计算机从「被操作」进化为「主动理解并协同人」。系统通过非侵入式脑电/肌电传感器实时感知用户情绪、意图与认知负荷,并据此动态调度…

2026/10/18 16:47:11 阅读更多 →
用 AtomCode 跑完一个 7 万行企业级后端,136 次提交后我还在推荐

用 AtomCode 跑完一个 7 万行企业级后端,136 次提交后我还在推荐

摘要:一个企业级业务平台的后端服务,Java 1.8 Spring Boot MyBatis,从 0 到 723 个 Java 文件、约 7.3 万行代码,3 个月 136 次提交。我用 AtomCode 把它从"一个人手工堆"跑成了"规则化 可验证"的生产线。…

2026/10/18 16:47:16 阅读更多 →
工程监测系统从现场到云端设备选型全链路指南

工程监测系统从现场到云端设备选型全链路指南

1. 一套监测系统从现场到云端,设备清单到底怎么拉干工程监测这行十来年,我见过太多项目在设备选型阶段翻车。有人拿着一份报价单来找我,说现场装了三十多个传感器,数据就是上不来,问我是不是云平台的问题。我一看清单就…

2026/10/18 9:07:54 阅读更多 →

最新新闻

Vibe Coding 优缺点全解析:用 TaoToken 统一 Key 实测 AI 编程体验

Vibe Coding 优缺点全解析:用 TaoToken 统一 Key 实测 AI 编程体验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 16:46:42 阅读更多 →
玄武CLI vs Ollama:国产算力本地大模型部署选型与调优指南

玄武CLI vs Ollama:国产算力本地大模型部署选型与调优指南

1. 从一条命令行说起:为什么本地跑大模型这件事,值得重新审视如果你最近半年在折腾本地大模型部署,大概率绕不开一个名字:Ollama。它把"下载模型、拉起服务、暴露接口"这三件事压缩成了一条命令,确实让很多人…

2026/10/18 16:46:42 阅读更多 →
矩阵不是堆账号,而是织一张AI看得见的信任网

矩阵不是堆账号,而是织一张AI看得见的信任网

做矩阵这几年,我见过太多人把“矩阵”做成了“养号流水线”:弄几十台旧手机,注册一批账号,批量发布相似内容,指望哪条命中了就赚哪条。这种玩法在前几年确实能捞到一些流量,但放到今天,基本上是…

2026/10/18 16:46:42 阅读更多 →
小学生Python入门:用Turtle图形库实现编程启蒙的极度舒适

小学生Python入门:用Turtle图形库实现编程启蒙的极度舒适

简介:这是一份专为零基础小学生设计的Python编程入门教程PDF,以轻松易懂、节奏舒缓的方式系统讲解编程核心概念,解决初学者畏难、不知从何学起的问题。教程覆盖Python交互环境启动、print与input函数使用、整数/浮点数/字符串/布尔值等基本数…

2026/10/18 16:46:42 阅读更多 →
Java Web停车场管理系统:毕设课设可用的业务闭环实战方案

Java Web停车场管理系统:毕设课设可用的业务闭环实战方案

简介:本资源是一套完整的Java Web停车场管理系统毕业设计项目,面向计算机专业本科生及Java初学者,解决校园或中小型商业场景下车位管理、车主信息登记与停车流程数字化等实际问题。压缩包共含源码、数据库脚本、开题报告论文文档及操作视频说…

2026/10/18 16:46:42 阅读更多 →
AirLLM:单张显卡也能跑70B大模型的分层推理显存优化方案

AirLLM:单张显卡也能跑70B大模型的分层推理显存优化方案

1. AirLLM 到底是什么:一个把“大模型塞进小显存”的暴力优雅方案QLoRA、GPTQ、GGUF,这些名字想必大家都不陌生。这几年为了在消费级显卡上跑大模型,各路方案层出不穷,核心思路无非两种:量化压缩模型权重,或…

2026/10/18 16:45:42 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →