You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Manim的NumberLine上添加π、平方根等自定义数轴数值

Manim 为 NumberLine 添加自定义离散数值标签

NumberLine默认根据x_range参数生成等步长的连续刻度,没有直接暴露自定义离散值的初始化参数,但可以通过内置的add_labels方法快速实现π、平方根、特殊常量这类非等距/非十进制数值的标注,不需要重写类逻辑。


核心实现逻辑

  • 初始化NumberLine时,如果不需要默认生成的连续小数刻度,直接将include_numbers设为False;如果要保留原有刻度、仅额外追加特殊值标签,保持include_numbers=True即可
  • 构造字典存储自定义标注:键为标签对应的数轴实际坐标值,值为要显示的标签对象(支持LaTeX公式、普通文本、任意Manim元素)
  • 调用数轴实例的add_labels方法传入自定义标签字典,按需调整标签方向、大小、偏移量即可

可直接运行的修改后代码

对应你原有代码的调整版本,示例添加了π、±√2、e这类常见特殊值:

from manim import *
import numpy as np

class NumbersClass(Scene):
    def construct(self):
        num_line = NumberLine(
            x_range=[-3, 3, 0.5],
            unit_size=2,
            color=ORANGE,
            include_numbers=True,
            decimal_number_config={
                "num_decimal_places": 1
            },
        )

        # 自定义标签映射:key=数轴坐标值,value=显示的标签对象
        custom_label_map = {
            PI: MathTex(r"\pi"),
            -PI: MathTex(r"-\pi"),
            np.sqrt(2): MathTex(r"\sqrt{2}"),
            -np.sqrt(2): MathTex(r"-\sqrt{2}"),
            np.e: MathTex(r"e")
        }
        # 添加自定义标签,label_direction控制标签在数轴的上下方位
        num_line.add_labels(custom_label_map, label_direction=DOWN)

        # 按需统一调整标签样式:缩放、偏移避免和原有刻度重叠
        for label in num_line.labels:
            label.scale(0.8)
            label.shift(DOWN * 0.1)

        self.play(DrawBorderThenFill(num_line), run_time=2)
        self.wait(duration=1)

常见场景说明

  • 标注虚数:不要使用普通NumberLine,改用ComplexPlane取实轴即可,虚数标签的传入逻辑完全一致,坐标值传入对应复数即可,例如1j: MathTex(r"i")
  • 避免标签重叠:如果默认生成的连续刻度和自定义标签位置冲突,可以将include_numbers设为False,把所有需要显示的刻度都放进自定义标签字典里手动控制
  • 自定义标签样式:标签支持任意Manim对象,除了MathTex公式,传入Text、ImageMobject等元素都可以正常渲染
  • 数值范围校验:如果自定义标签不显示,先检查对应的坐标值是否落在x_range设置的[-3,3]区间内,超出范围的标签会被自动裁剪

内容的提问来源于stack exchange,提问作者Askani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:18:21