怎么安装Manim库在Windows环境下的Jupyter Notebook上

        Manim 是解释性数学视频的动画引擎。 您可以使用它来制作数学视频(或其他字段)。也许你们会在有有些平台上会看过特别好看的数学动画,例如 3Blue1Brown等。这些动画特别好看,还特别丝滑,基本找不到太大的毛病。

我当初用python直接运行manim代码,方法就是先把代码运行完成,没有出错后用命令行进行运行,最后得到结果。这样能得到结果但是运行很慢(因为主要靠cpu运行)。然后最近突然想可不可以用jupyter notebook来运行呢?想了很久,最后实现了在jupyter notebook上运行,并得到结果。

        当时我看manim的官网进项安装,步步出错,还很复杂 。      

今天就跟大家分享一下,塔尖环境的过程把。

        看到官网为我们发现需要那些,首先安装python,需要3.7或者以上的版本。这样会避免后期出现的版本排斥的问题。这个需要去官网去直接下载就好(Welcome to Python.org)。然后安装的时候默认同意安装到系统环境上,也就是系统的环境上的path上。

第二部是安装FFmpeg,按照官网上的链接直接下载(FFmpeg)。

因为下载缓慢,错译需要耐心等待。然后下载完成后需要添加到环境变量中。

步骤是:Windows+X,然后选择系统。然后选择高级系统设置,然后选择环境变量,然后选择系统变量上的Path然后点击‘编辑’,然后新建,然后新建里“粘贴” ffmeg 的bin文件夹(ffmeg\ffmpeg-master-latest-win64-gpl\bin)

下一步是安装LaTex。我这里安装的basic-miktex-24.1-x64.(Getting MiKTeX),

看着自己的计算机性能选择相对应的版本,然后进行安装。安装完成以后,按照上一步一样把latex的bin文件夹添加到系统变量上。

        下一步是安装jupyter notebook。jupyter notebook 是简单来说anaconda的一个变相编译器。我们只安装anaconda就好(Download Anaconda Distribution | Anaconda)。在这里看着需求下载。

下载完成后需要安装,安装完成以后还需要一步,就是把他安装到系统变量里的path上。这些完成以后打开电脑的命令行。可以直接点win+R然后输入cmd直接打开命令行。命令行上输入jupyter notebook 点回撤就能打开jupyter notebook 啦。

选择python3。进入运行框里。

输入pip install manim,安装manim 库。安装需要时间要耐心等待。安装成功以后搭建环境基本完成了。我们可以运行想要的代码并得到结果啦。

运行第一个manim 代码。

from manim import *

class ManimCELogo02(Scene):
    def construct(self):
        self.camera.background_color = "#ece6e2"
        logo_green = "#87c2a5"
        logo_blue = "#525893"
        logo_red = "#e07a5f"
        logo_black = "#343434"
        ds_m = MathTex(r"\mathbb{MANIM}", fill_color=logo_black).scale(7)
        ds_m.shift(2 * LEFT + 3.5 * UP)
        circle = Circle(color=logo_green, fill_opacity=1).shift(5*LEFT)
        square = Square(color=logo_blue, fill_opacity=1).shift(UP+2*LEFT)
        triangle = Triangle(color=logo_red, fill_opacity=1).shift(RIGHT)
        logo = VGroup(triangle, square, circle, ds_m)  # order matters
        logo.move_to(ORIGIN)
        self.add(logo)

代码完成以后我们点运行,没有报错,但是同样没有结果,这什么情况呢?对,就是没有出结果的哪一行没有写进去。

这时候重量级人物出场。魔术师:%%manim -qm -v WARNING

这行代码是一个特殊的Jupyter Notebook魔术命令,用于在Jupyter Notebook中运行Manim动画。下面是关于这行代码的解释:

  • %%manim: 这是Jupyter Notebook中的一个自定义魔术命令,用于告诉Jupyter Notebook执行下面的代码块作为Manim动画。
  • -qm: 这个参数告诉Manim在“快速模式”下运行,这意味着Manim将使用较低的质量和渲染设置来加快渲染速度。
  • -v WARNING: 这个参数设置了Manim的日志级别为“WARNING”,这意味着只会显示警告级别的日志信息,而不会显示更低级别的信息。
  • ManimCELogo02: 这是要执行的Manim场景类的名称,指示Manim应该运行哪个场景以生成动画。

通过执行这行代码,您可以在Jupyter Notebook中使用Manim来生成动画,并使用指定的参数进行配置和控制。

%%manim -qm -v WARNING ManimCELogo02
from manim import *

class ManimCELogo02(Scene):
    def construct(self):
        self.camera.background_color = "#ece6e2"
        logo_green = "#87c2a5"
        logo_blue = "#525893"
        logo_red = "#e07a5f"
        logo_black = "#343434"
        ds_m = MathTex(r"\mathbb{MANIM}", fill_color=logo_black).scale(7)
        ds_m.shift(2 * LEFT + 3.5 * UP)
        circle = Circle(color=logo_green, fill_opacity=1).shift(5*LEFT)
        square = Square(color=logo_blue, fill_opacity=1).shift(UP+2*LEFT)
        triangle = Triangle(color=logo_red, fill_opacity=1).shift(RIGHT)
        logo = VGroup(triangle, square, circle, ds_m)  # order matters
        logo.move_to(ORIGIN)
        self.add(logo)

点运行后我们得到结果。结果如下:

我们得到第一个图像。我们还想得到一个动画视频。我们想试一下效果,然后我们编写了代码,开始了测试:

from manim import *

class OpeningManim(Scene):
    def construct(self):
        title = Tex(r"This is my first \LaTeX")
        basel = MathTex(r"f(x)=f(0)+\frac{f^{\prime}(0)}{1!} x+\frac{f^{\prime \prime}(0)}{2!} x^{2}+\frac{f^{\prime \prime \prime}(0)}{3!} x^{3}+ \\\ldots+\frac{f^{(n)}(0)}{n!} x^{n}+R_{n}(x)")
        VGroup(title, basel).arrange(DOWN)
        self.play(
            Write(title),
            FadeIn(basel, shift=DOWN),
        )
        self.wait()

        transform_title = Tex("That was a transform")
        transform_title.to_corner(UP + LEFT)
        self.play(
            Transform(title, transform_title),
            LaggedStart(*[FadeOut(obj, shift=DOWN) for obj in basel]),
        )
        self.wait()

        grid = NumberPlane()
        grid_title = Tex("This is a grid", font_size=72)
        grid_title.move_to(transform_title)

        self.add(grid, grid_title)  # Make sure title is on top of grid
        self.play(
            FadeOut(title),
            FadeIn(grid_title, shift=UP),
            Create(grid, run_time=3, lag_ratio=0.1),
        )
        self.wait()

        grid_transform_title = Tex(
            r"That was a non-linear function \\ applied to the grid"
        )
        grid_transform_title.move_to(grid_title, UL)
        grid.prepare_for_nonlinear_transform()
        self.play(
            grid.animate.apply_function(
                lambda p: p
                          + np.array(
                    [
                        np.sin(p[1]),
                        np.sin(p[0]),
                        0,
                    ]
                )
            ),
            run_time=3,
        )
        self.wait()
        self.play(Transform(grid_title, grid_transform_title))
        self.wait()

我们还是得到想要的结果啦:(OpeningManim-CSDN直播)结果可以在我个人页面查看。

相关推荐

  1. 怎么windows、linux、mac安装pnpm呢?

    2024-07-14 14:12:03       26 阅读
  2. lxml Windows 7安装无法安装怎么办

    2024-07-14 14:12:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 14:12:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 14:12:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 14:12:03       62 阅读
  4. Python语言-面向对象

    2024-07-14 14:12:03       72 阅读

热门阅读

  1. 昇思25天学习打卡营第23天|LSTM+CRF序列标注

    2024-07-14 14:12:03       25 阅读
  2. QT creator简介

    2024-07-14 14:12:03       30 阅读
  3. 05.CSS 缓动变量 && 首字下沉 & 放大缩小动画

    2024-07-14 14:12:03       24 阅读
  4. iOS热门面试题(三)

    2024-07-14 14:12:03       19 阅读
  5. 六爻排盘 api数据接口

    2024-07-14 14:12:03       21 阅读