怎么安装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 matterslogo.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 matterslogo.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 gridself.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直播)结果可以在我个人页面查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐 2 个 硬核的 AI 开源项目

01 AI 助手在你的终端中配对编程 Aider 由 Paul Gauthier 精心打造的开源AI配对编程工具,已经在GitHub上赢得了超过 12.8k 颗星星,人气爆棚! 这不仅仅是个工具,它是你在终端中的 AI 编程伙伴,帮你编辑存储在本地 Git 仓…

mavsdk_server安卓平台编译

1.下载好mavsdk并进入mavsdk目录 2.生成docker安卓平台文件 docker run --rm dockcross/android-arm64 >./dockcross-android-arm64 3.生成makefile ./dockcross-android-arm64 cmake -DCMAKE_BUILD_TYPERelease -DBUILD_MAVSDK_SERVERON -DBUILD_SHARED_LIBSOFF -Bbuild/…

JS进阶-异常处理

学习目标&#xff1a; 掌握异常处理 学习内容&#xff1a; throw抛异常try/catch捕获异常debugger throw抛异常&#xff1a; 异常处理是预估代码执行过程中可能发生的错误&#xff0c;然后最大程度的避免错误的发生导致整个程序无法继续运行。 <title>throw抛异常</…

前端面试题-怎样获取 url 地址栏 ? 后面的查询字符串,并以键值对形式放到对象里面

哈喽小伙伴们大家好!今天继续更新面试题系列文章 以百度为例&#xff1a; 我们以百度搜索掘金&#xff0c;url 为以下格式 https://cn.bing.com/search?q%E7%A8%80%E5%9C%9F%E6%8E%98%E9%87%91&formANNTH1&refig668f422a37c343b6b0f4ac940f65d043&pcEDGENTP&am…

免费的AI抠图工具 毫秒级抠图 离线可用 -鲜艺AI抠图

鲜艺AI抠图是一款免费的AI抠图工具&#xff0c;不登录、不联网&#xff0c;内嵌 AI 模型&#xff0c;快至毫秒级抠图&#xff0c;支持批量抠图&#xff0c;支持点击按钮选择图片、拖入图片、粘贴图片、粘贴图片链接、从网页拖入图片&#xff0c;支持Windows和macos&#xff0c;…

使用 NumPy 及其相关库(如 pandas、scikit-learn 等)时,由于 NumPy 的版本不兼容或者某些依赖库与 NumPy 的版本不匹配

题意&#xff1a; numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject 问题背景&#xff1a; I want to call my Python module from the Matlab. I received the error: Error using numpy_ops>init thi…

戴尔inspiron如何独显直连?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

解决安卓tv 蓝牙遥控器配对后输入法弹不出来的问题

t972在蓝牙配对后&#xff0c;自带的LatinIME 输入法会出现弹不出来的现象。 经过分析&#xff0c;主要为蓝牙的kl 文件适配存在问题。解决如下&#xff1a; 1.新建 kl文件 这个需要结合选用的遥控器来设定名称&#xff0c;我这边的遥控器是按照如下配置的 Vendor_2b54_Pr…

用户登陆实现前后端JWT鉴权

目录 一、JWT介绍 二、前端配置 三、后端配置 四、实战 一、JWT介绍 1.1 什么是jwt JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间以安全的方式传输信息。JWT 是一种紧凑、自包含的信息载体&…

【Android面试八股文】组件化在项目中有什么意义?

一、没有组件化会出现什么问题? 早期的单一分层模式 问题一:无论分包怎么做,随着项目增大,项目失去层次感,后面接手的人扑街问题二:包名约束太弱,稍有不注意,就会不同业务包直接互相调用,代码高耦合问题三:多人开发在版本管理中,容易出现代码覆盖冲突等问题二、组件…

【Linux】Linux的账号和用户组

管理员的工作中&#xff0c;相当重要的一环就是【管理账号】。 因为整个系统都是你在管理&#xff0c;并且所有一般用户的账号申请&#xff0c;都必须要通过你的协助才行&#xff0c;所以你就必须要了解一下如何管理好一个服务器主机的账号。 在管理Linux主机的账号时&#xff…

Django 删除单行数据

1&#xff0c;添加模型 from django.db import modelsclass Post(models.Model):title models.CharField(max_length200)content models.TextField()pub_date models.DateTimeField(date published)class Book(models.Model):title models.CharField(max_length100)author…

121. 小红的区间翻转(卡码网周赛第二十五期(23年B站笔试真题))

题目链接 121. 小红的区间翻转&#xff08;卡码网周赛第二十五期&#xff08;23年B站笔试真题&#xff09;&#xff09; 题目描述 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&#xff0c;&#x…

顺序表算法 - 移除元素

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-element/description/思路: 代码: // numsSize表示数组的长度 …

网络安全——防御课实验二

在实验一的基础上&#xff0c;完成7-11题 拓扑图 7、办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 首先&#xff0c;按照之前的操作&#xff0c;创建新的安全区&#xff08;电信和移动&#xff09;分别表示两个外网…

Readiris PDF Corporate / Business v23 解锁版安装教程 (PDF管理软件)

前言 Readiris PDF Corporate / Business 是一款高性能的 OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;能够帮助用户将纸质文档、PDF 文件或图像文件转换为可编辑和可搜索的电子文本。该软件提供专业级的功能和特性&#xff0c;非常适合企业和商业使用。使用 Rea…

基于lstm的股票Volume预测

LSTM&#xff08;Long Short-Term Memory&#xff09;神经网络模型是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;它在处理长期依赖关系方面表现出色&#xff0c;尤其适用于时间序列预测、自然语言处理&#xff08;NLP&#xff09;和语音识别等领域。以下是…

LabVIEW人工模拟肺控制系统开发

开发了一种创新的主被动一体式人工模拟肺模型&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现了步进电机驱动系统的精确控制和多种呼吸模式的模拟。该系统不仅能够在主动呼吸模式下精确模拟快速呼吸、平静呼吸和深度呼吸&#xff0c;还能在被动模式下通过PID控制实现…

C++20中的consteval说明符

在C20中&#xff0c;立即函数(immediate function)是指每次调用该函数都会直接或间接产生编译时常量表达式(constant expression)的函数。这些函数在其返回类型前使用consteval关键字进行声明。 立即函数是constexpr函数&#xff0c;具体情况取决于其要求。与constexpr相同&…

神经网络以及简单的神经网络模型实现

神经网络基本概念&#xff1a; 神经元&#xff08;Neuron&#xff09;&#xff1a; 神经网络的基本单元&#xff0c;接收输入&#xff0c;应用权重并通过激活函数生成输出。 层&#xff08;Layer&#xff09;&#xff1a; 神经网络由多层神经元组成。常见的层包括输入层、隐藏层…