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

Manim问题:为何我的图表绘制仅用了动画时长的一半?

问题原因

你这里的核心问题是用错了动画方式:

  • Write(sin_graph)是一次性绘制出完整的正弦曲线,它的播放逻辑和tracker.animate.set_value(749)完全独立。即使你给self.play设置了run_time=10,Write动画会按照自身逻辑快速完成(你看到的5秒是因为图形路径较长,但依然达不到10秒的同步要求)。
  • 你期望曲线随ValueTracker数值逐步绘制,但Write是静态绘制完整图形,根本不会跟踪tracker的变化。
修复方案

把静态完整曲线改成随tracker动态更新的部分曲线,去掉Write动画,让曲线自动跟随tracker的数值变化:

修改后的完整代码:

from manim import *
import math
import numpy as np

class TrackerExample(Scene):
    def sin(self, x):
        f = 1 / 50
        return np.sin(x * 2 * math.pi * f) / 2 + 0.5

    def construct(self):
        axes = Axes(
            x_range=[0, 749, 100],
            y_range=[0, 4, 2],
            axis_config={"include_numbers": True, "font_size": 24},
            x_length=4,
            y_length=3
        ).move_to(LEFT * 2)

        self.play(Write(axes, lag_ratio=0.01, run_time=1))

        tracker = ValueTracker(0)

        # 用always_redraw创建随tracker更新的动态曲线,只绘制x从0到当前tracker值的部分
        sin_graph = always_redraw(
            lambda: axes.plot(
                lambda x: self.sin(x),
                color=BLUE,
                x_range=[0, tracker.get_value()]  # 只绘制当前tracker对应的区间
            )
        )

        numbers = DecimalNumber(0).move_to(2*RIGHT)
        numbers.add_updater(lambda m: m.set_value(int(tracker.get_value())))

        self.add(numbers, sin_graph)  # 添加动态曲线到场景

        # 只播放tracker的动画,曲线和数字会自动同步更新
        self.play(tracker.animate.set_value(749), run_time=10, rate_func=linear)

# 注释掉直接调用construct的代码,Manim推荐用命令行运行
# example = TrackerExample()
# example.construct()
关键修改点
  • 用always_redraw包裹曲线绘制逻辑,指定x_range=[0, tracker.get_value()],每次tracker变化时,都会重新绘制从0到当前数值的曲线段。
  • 去掉Write(sin_graph)动画,直接把动态曲线加入场景,它会随着tracker的动画自动逐步绘制。
  • 注释掉直接调用construct()的代码,Manim社区版推荐通过命令行(比如manim -pql your_script.py TrackerExample)运行场景,直接调用construct会跳过很多动画渲染逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:10:32