在日常教学和考试命题中,物理图像的制作往往是一项耗时且繁琐的工作。特别是在电子文档中,教师很难高效、精准地绘制出规范、清晰的图示。
本篇博客提供了一套基于 Python 的自动化绘图解决方案,涵盖从基础坐标图到复杂电路图与3D结构图的多种案例,旨在让物理教师、教辅编写人员、教学内容创作者能 一键生成标准物理图 ,大大提升效率与专业度。
文章目录
AI物理题库例题图
这7类绘图样例覆盖了高中物理教学中最常见的图像类型:从基础的运动图、结构示意图,到复杂的3D模型、电路图、实验轨迹图,几乎涵盖了所有题型中对图示的需求。借助 Python 的 matplotlib
、numpy
、schemdraw
等模块,可以实现快速、精确、规范的自动化制图,不仅提升命题与教学效率,也为教学数字化、图像标准化提供了强有力的工具支持。
序号 | 图示名称 | 功能用途 | 使用模块 | 适用题型场景 |
---|---|---|---|---|
1 | 位移/速度-时间图像 | 展示物体运动状态(匀速/加速等) | matplotlib , numpy |
选择题、实验题、运动分析 |
2 | 对称双摆示意图 | 展示对称摆结构、简谐运动结构 | matplotlib , numpy |
实验装置结构图、受力分析 |
3 | 电磁感应原理图(2D/3D) | 表达发电原理,磁感线结构关系 | matplotlib , mpl_toolkits.mplot3d |
原理图、实验解释、探究题 |
4 | 速度空间轨迹图 | 表示速度在二维平面上的变化轨迹 | matplotlib , numpy |
速度合成、抛体分析、图像题 |
5 | 夹角结构图 | 展示向量夹角、对称轴等角度关系 | matplotlib , numpy |
向量分析、图像判读题 |
6 | 电路结构图(简易) | 快速生成标准电路连接示意 | schemdraw , matplotlib |
电学实验、电路分析、电源电压测量 |
7 | 抛体运动轨迹图 | 小球水平抛出、轨迹预测结构 | matplotlib , numpy |
实验还原题、物理过程分析题 |
基于考试管理系统可以通过API生成对应的题目,但是这4个选项图就不太好操作了,对于普通教师来说这种画图虽然可以在纸上手画,但是如果在电子文档里就有点难度了,所以这个选项的图可以通过py 的脚本来实现。
样例1:常见运动图像(位移-时间、速度-时间)
用于选择题、实验题等分析运动特性问题。
效果图
代码示例
import matplotlib.pyplot as plt
import numpy as np
import random
from matplotlib import rcParams
# 设置中文字体显示(推荐使用微软雅黑)
rcParams['font.sans-serif'] = ['Microsoft YaHei']
rcParams['axes.unicode_minus'] = False
# 定义绘图函数
def draw_all_motion_graphs():
t = np.linspace(0, 10, 100)
motion_settings = [
("x-t", "匀速直线运动", lambda t: 2 * t + random.uniform(-1, 1)),
("x-t", "匀加速直线运动", lambda t: 0.5 * 1.2 * t ** 2),
("v-t", "静止不动", lambda t: np.zeros_like(t)),
("v-t", "反向减速运动", lambda t: -1.5 * t + 10)
]
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for i, (option_type, motion_desc, func) in enumerate(motion_settings):
ax = axes[i]
x = func(t)
ax.plot(t, x, linewidth=2)
ax.set_xlabel("时间 t (s)", fontsize=12)
ax.set_ylabel("位移 x (m)" if option_type == "x-t" else "速度 v (m/s)", fontsize=12)
ax.set_title(f"{
chr(65 + i)} 选项:{
option_type} 图像 - {
motion_desc}", fontsize=13)
ax.grid(True)
plt.tight_layout()
plt.show()
# 执行绘图
draw_all_motion_graphs()
样例2:对称摆系统图
适用于力学对称性分析、周期性实验装置示意图。
效果图
代码示例
import matplotlib.pyplot as plt
def draw_symmetric_pendulum():
fig, ax = plt.subplots(figsize=(5, 6))
# 固定点 O
ox, oy = 0, 5
ax.plot(ox, oy, 'ko') # 黑点表示挂点
# 两个摆球的位置(左右对称)
L = 4
angle = 30 # 左右偏离角度(单位:度)
import numpy as np
theta = np.radians(angle)
px, py = L * np.sin(theta), oy - L * np.cos(theta)
qx, qy = -px, py
# 绘制悬线
ax.plot([ox, px], [oy, py], 'k', lw=2)
ax.plot([ox, qx], [oy, qy], 'k', lw=2)
# 绘制摆球
ax.plot(px, py, 'o', color='brown', markersize=12)
ax.plot(qx, qy, 'o', color='gray', markersize=12)
# 标注点 P Q O
ax.text(px + 0.2, py, 'P', fontsize=12)
ax.text(qx - 0.4, qy, 'Q', fontsize=12)
ax.text(ox + 0.1, oy + 0.1, 'O', fontsize=12)
# 添加虚线对称轴
ax.plot([0, 0], [oy - 4.5, oy], 'b--', alpha=0.4)
# 可选:添加水平参考线
ax.plot([-3, 3], [py + 0.5, py + 0.5], 'k', alpha=0.3)
ax.plot([-3, 3], [py - 0.5, py - 0.5], 'k', alpha=0.3)
ax.set_xlim(-3, 3)
ax.set_ylim(0, 6)
ax.set_aspect('equal')
ax.axis('off')
plt.title("对称双摆模型示意图", fontsize=14)
plt.show()
# 调用函数绘图
draw_symmetric_pendulum()
样例3:电磁感应结构图(2D+3D对比)
用于解释发电原理、磁场-导体运动、电路连接等概念。
效果图
这种3D转换成平面效果一般。
来个3D效果的。
代码示例
2D实现代码
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
# 中文字体设置(自动兼容 Windows、macOS、Linux)
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 或 Microsoft YaHei / PingFang SC / Noto Sans CJK SC
matplotlib.rcParams['axes.unicode_minus'] = False
def draw_induction_diagram():
fig, ax = plt.subplots(figsize=(10, 6))
# === 1. 磁体 ===
n_block = patches.Rectangle((-3, 1), 1, 3, color='red')
s_block = patches.Rectangle((2, 1), 1, 3, color='steelblue')
ax.add_patch(n_block)
ax.add_patch(s_block)
ax.text(-2.5, 3.5, "N", fontsize=16, color='white', weight='bold', ha='center')
ax.text(2.5, 3.5, "S", fontsize=