Manim项目中如何将X轴改为弧度制LaTeX刻度标签?
Manim X轴弧度制标签不显示问题解决
你的问题出在开启了自动数字标签:当axis_config里设置include_numbers=True时,Manim会自动生成基于数值的刻度标签,覆盖你手动设置的自定义LaTeX标签。另外,直接调用set_tick_labels的方式在部分Manim版本中需要配合关闭自动标签才能生效,更可靠的方式是用add_labels或者在创建Axes时直接指定标签映射。
解决方法1:创建Axes时直接配置X轴标签
修改Axes的初始化参数,关闭自动数字标签,并通过x_axis_config指定刻度标签映射:
from manim import * import numpy as np class RadiansTest(Scene): def construct(self): # 定义弧度刻度标签 tick_labels = { -2 * PI: r"$-2\pi$", -3 * PI / 2: r"$-\frac{3\pi}{2}$", -PI: r"$-\pi$", -PI / 2: r"$-\frac{\pi}{2}$", 0: r"$0$", PI / 2: r"$\frac{\pi}{2}$", PI: r"$\pi$", 3 * PI / 2: r"$\frac{3\pi}{2}$", 2 * PI: r"$2\pi$", } axes = Axes( x_range=[-10, 10, PI/2], y_range=[-10, 10, 1], x_length=10, y_length=10, # 全局轴配置:关闭自动数字标签,保留刻度 axis_config={"include_numbers": False, "include_ticks": True}, # 单独配置X轴的标签映射 x_axis_config={"tick_label_map": tick_labels} ) graph = axes.plot(np.sin, color=BLUE, x_range=[-10, 10]) self.play(Create(axes), Create(graph)) self.wait(2)
解决方法2:创建Axes后添加自定义标签
如果需要保留Y轴的自动数字标签,可以只单独关闭X轴的自动数字标签,再用add_labels添加自定义标签:
from manim import * import numpy as np class RadiansTest(Scene): def construct(self): axes = Axes( x_range=[-10, 10, PI/2], y_range=[-10, 10, 1], x_length=10, y_length=10, # Y轴保留自动数字标签,X轴单独配置关闭 axis_config={"include_numbers": True, "include_ticks": True}, x_axis_config={"include_numbers": False} ) # 定义弧度刻度标签 tick_labels = { -2 * PI: r"$-2\pi$", -3 * PI / 2: r"$-\frac{3\pi}{2}$", -PI: r"$-\pi$", -PI / 2: r"$-\frac{\pi}{2}$", 0: r"$0$", PI / 2: r"$\frac{\pi}{2}$", PI: r"$\pi$", 3 * PI / 2: r"$\frac{3\pi}{2}$", 2 * PI: r"$2\pi$", } # 给X轴添加自定义标签 axes.x_axis.add_labels(tick_labels) graph = axes.plot(np.sin, color=BLUE, x_range=[-10, 10]) self.play(Create(axes), Create(graph)) self.wait(2)
关键说明
- 必须关闭X轴的
include_numbers=True,否则自动生成的数值标签会覆盖自定义LaTeX标签。 tick_label_map或add_labels的键必须和X轴的刻度位置完全匹配(比如-2*PI对应的数值要和x_range里的刻度点一致),否则标签不会显示。- 你的x_range设置为
[-10,10,PI/2],2*PI≈6.28在范围内,所以所有定义的标签位置都是有效的。
内容的提问来源于stack exchange,提问作者haifisch123
相关产品推荐
相关产品推荐

