ManimCommunity / manim

A community-maintained Python framework for creating mathematical animations.
https://www.manim.community
MIT License
26.7k stars 1.83k forks source link

plot shrinks faster than x_axis when changing x_range #3975

Open e-dervieux opened 1 month ago

e-dervieux commented 1 month ago

Description of bug / unexpected behavior

When plotting a function in an axis environment, if the x_axis range is changed using a ValueTracker, and the same ValueTracker is used as function range, the function does not plot on the expected range. Here is a MWE:

from manim import *

class VaryingSupportSineWave(MovingCameraScene):

    def construct(self):

        x_max = ValueTracker(10)
        ax = always_redraw(lambda: Axes(
            x_range=[0, x_max.get_value(), 1],
            y_range=[-1, 1, 0.5],
            x_length=x_max.get_value()
        ).to_edge(LEFT))
        self.add(ax)

        sine_wave = always_redraw(lambda: ax.plot(lambda x: np.sin(x),
                                                  x_range=(0, x_max.get_value())))

        self.play(Create(sine_wave))
        self.play(x_max.animate.set_value(6))
        self.wait(0.5)

Expected behavior

image

Actual behavior

image

Logs

Terminal output ``` Manim Community v0.18.1 [10/24/24 09:00:31] ERROR module_ops.py:92 VaryingSupportSineWave is not in the script DEBUG Hashing ... hashing.py:352 DEBUG Hashing done in 0.006856 s. hashing.py:364 DEBUG Hash generated : hashing.py:367 3348903278_2543047096_4133455014 INFO Animation 0 : Using cached data (hash : cairo_renderer.py:88 3348903278_2543047096_4133455014) DEBUG List of the first few animation hashes cairo_renderer.py:97 of the scene: ['3348903278_2543047096_4133455014'] DEBUG Hashing ... hashing.py:352 DEBUG Hashing done in 0.006311 s. hashing.py:364 DEBUG Hash generated : hashing.py:367 2784548031_3175177803_765666942 INFO Animation 1 : Using cached data (hash : cairo_renderer.py:88 2784548031_3175177803_765666942) DEBUG List of the first few animation hashes cairo_renderer.py:97 of the scene: ['3348903278_2543047096_4133455014', '2784548031_3175177803_765666942'] DEBUG Animation with empty mobject animation.py:175 DEBUG Hashing ... hashing.py:352 DEBUG Hashing done in 0.006665 s. hashing.py:364 DEBUG Hash generated : hashing.py:367 2784548031_774239770_1835257284 INFO Animation 2 : Using cached data (hash : cairo_renderer.py:88 2784548031_774239770_1835257284) DEBUG List of the first few animation hashes cairo_renderer.py:97 of the scene: ['3348903278_2543047096_4133455014', '2784548031_3175177803_765666942', '2784548031_774239770_1835257284'] INFO Combining to Movie file. scene_file_writer.py:617 DEBUG Partial movie files to combine (3 scene_file_writer.py:561 files): ['/Users/username/Library/Cl oudStorage/someplace/Python/ 18_manim/src/media/videos/test_script/ 720p30/partial_movie_files/VaryingAm plitudeSineWave/3348903278_254304709 6_4133455014.mp4', '/Users/username/Library/Clo udStorage/someplace/Python/1 8_manim/src/media/videos/test_script/7 20p30/partial_movie_files/VaryingAmp litudeSineWave/2784548031_3175177803 _765666942.mp4', '/Users/username/Library/Clo udStorage/someplace/Python/1 8_manim/src/media/videos/test_script/7 20p30/partial_movie_files/VaryingAmp litudeSineWave/2784548031_774239770_ 1835257284.mp4'] INFO scene_file_writer.py:737 File ready at '/Users/username/Library/Clo udStorage/someplace/Python/1 8_manim/src/media/videos/test_script/7 20p30/VaryingAmplitudeSineWave.mp4' INFO Rendered VaryingAmplitudeSineWave scene.py:247 Played 3 animations [10/24/24 09:00:32] INFO Previewed File at: file_ops.py:231 '/Users/username/Library/CloudStorage /someplace/Python/18_manim/src/media/ videos/test_script/720p30/VaryingAmplitudeSineW ave.mp4' ```

System specifications

System Details - OS: macOS Sonoma 14.2.1 (23C71) - RAM: 32Go - Python version (`python/py/python3 --version`): 3.12 - Installed modules (provide output from `pip list`): ``` Package Version ------------------------- --------------- ansi2html 1.9.1 anyio 4.2.0 appnope 0.1.3 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 arrow 1.3.0 asttokens 2.4.1 async-lru 2.0.4 attrs 23.2.0 Babel 2.14.0 beautifulsoup4 4.12.3 bleach 6.1.0 blinker 1.7.0 Brotli 1.1.0 certifi 2023.11.17 cffi 1.16.0 charset-normalizer 3.3.2 click 8.1.7 cloup 3.0.5 colour 0.1.5 comm 0.2.1 contourpy 1.2.0 cycler 0.11.0 Cython 3.0.11 dash 2.14.2 dash-core-components 2.0.0 dash-html-components 2.0.0 dash-table 5.0.0 dataclasses 0.6 debugpy 1.8.0 decorator 5.1.1 defusedxml 0.7.1 et-xmlfile 1.1.0 executing 2.0.1 fastjsonschema 2.19.1 Flask 3.0.0 fonttools 4.25.0 fqdn 1.5.1 glcontext 3.0.0 idna 3.6 importlib-metadata 7.0.0 ipykernel 6.29.0 ipython 8.20.0 ipywidgets 8.1.1 isoduration 20.11.0 isosurfaces 0.1.2 itsdangerous 2.1.2 jedi 0.19.1 Jinja2 3.1.2 joblib 1.3.2 json5 0.9.14 jsonpickle 3.0.2 jsonpointer 2.4 jsonschema 4.21.1 jsonschema-specifications 2023.12.1 jupyter 1.0.0 jupyter_client 8.6.0 jupyter-console 6.6.3 jupyter_core 5.7.1 jupyter-events 0.9.0 jupyter-lsp 2.2.2 jupyter_server 2.12.5 jupyter_server_terminals 0.5.2 jupyterlab 4.0.11 jupyterlab_pygments 0.3.0 jupyterlab_server 2.25.2 jupyterlab-widgets 3.0.9 kiwisolver 1.4.4 manim 0.18.1 ManimPango 0.4.4 mapbox_earcut 1.0.2 markdown-it-py 3.0.0 MarkupSafe 2.1.3 matplotlib 3.8.2 matplotlib-inline 0.1.6 mdurl 0.1.2 mistune 3.0.2 moderngl 5.11.1 moderngl-window 2.4.6 mpmath 1.3.0 multipledispatch 1.0.0 munkres 1.1.4 music-tag 0.4.3 mutagen 1.47.0 nbclient 0.9.0 nbconvert 7.14.2 nbformat 5.9.2 nest-asyncio 1.5.8 networkx 3.3 notebook 7.0.7 notebook_shim 0.2.3 numpy 1.26.2 openpyxl 3.1.2 overrides 7.7.0 packaging 23.1 pandas 2.1.4 pandas-flavor 0.6.0 pandocfilters 1.5.1 parso 0.8.3 patsy 0.5.6 pexpect 4.9.0 Pillow 10.0.1 pingouin 0.5.5 pip 23.3.1 platformdirs 4.1.0 plotly 5.18.0 prometheus-client 0.19.0 prompt-toolkit 3.0.43 psutil 5.9.8 ptyprocess 0.7.0 pure-eval 0.2.2 pycairo 1.27.0 pycparser 2.21 pycryptodomex 3.20.0 pydub 0.25.1 pyglet 2.0.17 Pygments 2.17.2 pyobjc-core 10.3.1 pyobjc-framework-Cocoa 10.3.1 PyOpenGL 3.1.7 pyparsing 3.0.9 PyQt5 5.15.10 PyQt5-Qt5 5.15.11 PyQt5-sip 12.13.0 PyQt6 6.6.1 PyQt6-Qt6 6.6.1 PyQt6-sip 13.6.0 pyrr 0.10.3 pyserial 3.5 python-dateutil 2.8.2 python-json-logger 2.0.7 pytz 2023.3.post1 PyYAML 6.0.1 pyzmq 25.1.2 qtconsole 5.5.1 QtPy 2.4.1 referencing 0.32.1 requests 2.32.3 retrying 1.3.4 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rich 13.9.2 rpds-py 0.17.1 scikit-learn 1.3.2 scipy 1.11.4 screeninfo 0.8.1 seaborn 0.13.2 Send2Trash 1.8.2 setuptools 68.0.0 si-prefix 1.3.3 six 1.16.0 skia-pathops 0.8.0.post1 sniffio 1.3.0 soundfile 0.12.1 soupsieve 2.5 srt 3.5.3 stack-data 0.6.3 statsmodels 0.14.3 sty 1.0.6 svgelements 1.9.6 sympy 1.13.3 tabulate 0.9.0 tenacity 8.2.3 terminado 0.18.0 threadpoolctl 3.2.0 tikzplotlib 0.10.1 tinycss2 1.2.1 tornado 6.3.3 tqdm 4.66.5 traitlets 5.14.1 types-python-dateutil 2.8.19.20240106 typing_extensions 4.9.0 tzdata 2023.3 uri-template 1.3.0 urllib3 2.1.0 validators 0.34.0 watchdog 5.0.3 wcwidth 0.2.13 webcolors 1.13 webencodings 0.5.1 websocket-client 1.7.0 websockets 12.0 Werkzeug 3.0.1 wheel 0.41.2 widgetsnbextension 4.0.9 xarray 2024.9.0 yt-dlp 2024.7.25 zipp 3.17.0 ```
LaTeX details + LaTeX distribution: TeX Live 2023 + Installed LaTeX packages: no other than TeX Live 2023 base install.

Note: the issue has been evoked here.