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

如何在Manim Python库生成的图表中添加y=0刻度标签?

解决Manim中y轴原点(0)刻度标签不显示的问题

问题原因分析

你之前的方法失效主要有两个原因:

  • 调用get_y_axis_config()修改的是坐标轴初始化时的配置字典副本,并非轴实例的实时属性,修改后不会触发刻度的重新生成。
  • 手动添加标签时,可能存在标签被轴线、刻度线遮挡的情况,导致看不到效果。

有效解决方法

方法1:创建坐标轴时直接配置y轴

在初始化Axes时,通过y_axis_config直接设置显示原点刻度,这是最稳妥的方式:

class YourExpScene(Scene):
    def construct(self):
        # 初始化坐标轴时配置y轴显示原点刻度
        ax_exp1 = Axes(
            x_range=[-2, 2, 1],
            y_range=[-1, 5, 1],
            y_axis_config={
                "exclude_origin_tick": False,  # 强制显示原点刻度
                "numbers_to_exclude": [],       # 确保不排除0这个数值
                "include_numbers": True         # 开启数值标签显示
            }
        )
        # 绘制示例函数
        graph = ax_exp1.plot(lambda x: np.exp(x), color=BLUE)
        self.add(ax_exp1, graph)

方法2:已创建坐标轴后动态修改

如果已经创建了坐标轴,需要直接修改y轴实例的属性,然后重新生成刻度和标签:

class YourExpScene(Scene):
    def construct(self):
        ax_exp1 = Axes(x_range=[-2,2,1], y_range=[-1,5,1])
        # 获取y轴实例
        y_axis = ax_exp1.y_axis
        # 修改核心属性
        y_axis.exclude_origin_tick = False
        y_axis.numbers_to_exclude = []
        # 重新生成刻度和数值标签
        y_axis.generate_ticks()
        y_axis.generate_numbers()
        
        graph = ax_exp1.plot(lambda x: np.exp(x), color=BLUE)
        self.add(ax_exp1, graph)

方法3:手动添加标签并调整层级

如果坚持手动添加,确保标签处于上层避免被遮挡:

class YourExpScene(Scene):
    def construct(self):
        ax_exp1 = Axes(x_range=[-2,2,1], y_range=[-1,5,1])
        graph = ax_exp1.plot(lambda x: np.exp(x), color=BLUE)
        
        # 计算原点位置并创建标签
        ticker_0 = MathTex(r"0").move_to(ax_exp1.c2p(0, 0))
        # 将标签层级设为比坐标轴高,防止被遮挡
        ticker_0.set_z_index(ax_exp1.z_index + 1)
        
        self.add(ax_exp1, graph, ticker_0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:05:12