用途
该技能面向 STEM 教学场景,用于生成静态图表与动画,帮助解释物理、数学等概念。同时提供一套为 Excel/DAX/Power Query 函数生成解释性可视化图片的流程。
主要能力
1. 物理:受力分析图(Free Body Diagrams)
使用 Matplotlib,脚本位于 scripts/physics_fbd.py。
示例代码:
from scripts.physics_fbd import draw_inclined_plane_fbd, draw_two_blocks_rope
# 斜面与力的分解
draw_inclined_plane_fbd(mass=4, angle=30, show_components=True)
# 两物块由绳子连接
draw_two_blocks_rope(mass_A=2, mass_B=3, F_pull=10)
输出:PNG 文件,保存在 learning-notes/ 文件夹。
2. 数学:函数图与几何
使用 Matplotlib,脚本位于 scripts/math_plots.py。
示例代码:
from scripts.math_plots import plot_function, draw_unit_circle, draw_coordinate_plane
import numpy as np
# 函数图
plot_function(lambda x: np.sin(x), x_range=(-2*np.pi, 2*np.pi), title="sin(x)")
# 带角度的单位圆
draw_unit_circle(angles_deg=[0, 30, 45, 60, 90])
# 带向量的坐标平面
draw_coordinate_plane(
vectors=[((0,0), (3,2), "a", "red"), ((0,0), (1,4), "b", "blue")]
)
3. 流程图
使用 Matplotlib,脚本位于 scripts/flowchart.py。
示例代码:
from scripts.flowchart import draw_simple_flowchart, draw_decision_flowchart
# 线性流程
draw_simple_flowchart([
("Start", "start"),
("Input x", "io"),
("Process", "process"),
("End", "end"),
])
# 分支判断
draw_decision_flowchart(
before_decision=[("Start", "start")],
decision_text="x > 0?",
yes_branch=[("Positive", "process")],
no_branch=[("Negative", "process")],
after_merge=[("End", "end")]
)
4. 动画(Manim)
用于 3Blue1Brown 风格动画,完整指南见 references/manim-guide.md。
scripts/manim_physics.py 中可用的场景:
| 场景 | 说明 |
|---|---|
| VectorAddition | 首尾相接的向量加法 |
| ForcesOnBox | 带运动的受力分析图 |
| NewtonThirdLaw | 作用力与反作用力对 |
| InclinedPlane | 斜面上的力与方程 |
| ProjectileMotion | 抛物线轨迹与速度向量 |
| CircularMotion | 向心加速度 |
| AtwoodIncline | 滑轮系统(可自定义 m1、m2、θ) |
渲染命令:
# 预览(低画质,快速)
manim -pql scripts/manim_physics.py VectorAddition
# GIF 输出
manim -ql --format=gif scripts/manim_physics.py VectorAddition
自定义动画示例:
from manim import *
class MyScene(Scene):
def construct(self):
circle = Circle(color=BLUE)
self.play(Create(circle))
self.play(circle.animate.shift(RIGHT * 2))
5. 函数解释可视化
用于生成解释 Excel/DAX/Power Query 函数工作方式的图片。
快速开始:
# 1. 生成可视化
python3 tools/visualize_function.py excel left 1
# 2. 上传到服务器(--mkdir 在需要时创建目录)
python3 tools/ftp_upload.py -f media/function-viz/excel/left-1.png -r wp-content/uploads/function-viz/excel/ --mkdir
# 3. 在 JSON 示例中添加 image_url,然后发布
python3 tools/smart_publish.py --slugs left --program excel --allow
输出:media/function-viz/{program}/{slug}-{example_number}.png 服务器路径:https://www.thepexcel.com/wp-content/uploads/function-viz/{program}/{slug}-{example}.png
支持的函数:
| 函数 | 说明 |
|---|---|
| LEFT | 从左侧提取字符 |
| RIGHT | 从右侧提取字符 |
| MID | 从中间提取字符 |
| FIND | 查找文本位置 |
| SUBSTITUTE | 替换文本 |
工作流:
- 生成 — python3 tools/visualize_function.py {program} {slug} {example_num}
- 上传 — python3 tools/ftp_upload.py -f {file} -r wp-content/uploads/function-viz/{program}/ --mkdir
- 更新 JSON — 在 example 中添加 "image_url": "https://..."
- 发布 — python3 tools/smart_publish.py --slugs {slug} --program {program} --allow
自定义可视化(嵌套函数): 对于复杂公式,例如 =LEFT(A1, FIND(" ", A1)-1),需要单独编写脚本,示例见 media/function-viz/excel/left-5-custom.py。注意:主脚本仅支持包含字符串字面量的简单公式。
使用方式
- 选择工具 — 静态图用 Matplotlib,动画用 Manim。
- 运行脚本 — python3 scripts/physics_fbd.py 或 manim -pql ...
- 查看输出 — explorer.exe output.png 或使用图片查看器。
提示:查看器可使用 run_in_background=true,避免阻塞对话。
适用场景
- 物理教学中的受力分析、向量、运动学演示。
- 数学函数绘图、单位圆、坐标平面与向量。
- 算法或流程的流程图绘制。
- 需要动态演示的 STEM 概念动画。
- Excel/DAX/Power Query 函数用法的可视化说明。
限制
- 函数解释可视化的主脚本仅支持包含字符串字面量的简单公式,嵌套函数需自行编写脚本。
- 其他限制暂未提供。
相关技能
- /explain-concepts — 可视化正在讲解的概念
- /thepexcel-brand-guidelines — 品牌主题可视化
- /pptx — 将可视化嵌入演示文稿