Manim绘图技术咨询:图像绘制方式、默认区间及grid.plot算法疑问
Manim图像绘制相关问题解答
1. Manim中如何绘制图像?
- 最常用的方式是基于
Axes类(替代旧版GraphScene)实现,步骤如下:- 在场景类的
construct方法中创建Axes实例,可按需自定义坐标轴范围、刻度间距等参数; - 调用
Axes的plot方法传入目标函数,得到曲线对象; - 将坐标轴和曲线添加到场景中。
- 在场景类的
- 示例代码:
from manim import * class PlotDemo(Scene): def construct(self): # 自定义坐标轴范围 axes = Axes(x_range=[-5, 5, 1], y_range=[-3, 3, 1]) # 绘制正弦函数曲线 sin_graph = axes.plot(lambda x: np.sin(x), color=BLUE) self.add(axes, sin_graph)
- 也可以用
FunctionGraph类快速生成曲线,无需先创建坐标轴:
cos_graph = FunctionGraph(lambda x: np.cos(x), x_range=[-4, 4])
2. Manim绘制图像时默认使用的区间是什么?
- 当使用
Axes默认参数创建坐标轴时,x轴默认范围为[-10, 10],y轴默认范围同样是[-10, 10]; - 调用
Axes.plot()时若未指定x_range参数,会默认采用当前坐标轴的x轴范围作为函数绘制区间; - 使用
FunctionGraph且未指定x_range时,默认绘制区间也是[-10, 10]。
3. grid.plot(lambda x: #function of x)的绘制算法是怎样的?
- 这里的
grid一般指Axes或其基类CoordinateSystem的实例,plot方法的核心逻辑如下:- 采样点生成:根据指定的x区间(或默认坐标轴范围)生成均匀分布的采样点,默认采样点数为200(可通过
num_samples参数调整); - 函数值计算:遍历每个采样点的x值,计算对应的y值,得到一系列坐标点对;
- 曲线拼接:将坐标点转换为Manim屏幕坐标,通过插值算法(默认线性插值,可通过
use_smoothing参数启用样条平滑)将点连接成连续曲线; - 特殊场景处理:若函数存在间断点,需手动拆分区间绘制或提升采样密度,避免曲线异常连接。
- 采样点生成:根据指定的x区间(或默认坐标轴范围)生成均匀分布的采样点,默认采样点数为200(可通过
内容的提问来源于stack exchange,提问作者Utkarsh Mittal
相关产品推荐
相关产品推荐

