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

news2024/11/15 9:42:21

        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直播)结果可以在我个人页面查看。

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

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

相关文章

BasicSR项目(通用图像超分、修复、增强工具库)介绍

项目地址:https://github.com/XPixelGroup/BasicSR 文档地址:https://github.com/XPixelGroup/BasicSR-docs/releases BasicSR 是一个开源项目,旨在提供一个方便易用的图像、视频的超分、复原、增强的工具箱。BasicSR 代码库从2018年4月20日…

【QT】Qt事件

目录 前置知识 事件概念 常见的事件描述 进入和离开事件 代码示例: 鼠标事件 鼠标点击事件 鼠标释放事件 鼠标双击事件 鼠标滚轮动作 键盘事件 定时器事件 开启定时器事件 窗口相关事件 窗口移动触发事件 窗口大小改变时触发的事件 扩展 前置知识…

知识改变命运 第七集(下):Java中数组的定义与使用

4. 数组练习 4.1 数组转字符串 import java.util.Arrays int[] arr {1,2,3,4,5,6}; String newArr Arrays.toString(arr); System.out.println(newArr); // 执行结果 [1, 2, 3, 4, 5, 6]使用这个方法后续打印数组就更方便一些. Java 中提供了 java.util.Arrays 包, 其中包含…

SwiftUI 截图(snapshot)视频画面的极简方法

功能需求 在 万物皆可截图:SwiftUI 中任意视图(包括List和ScrollView)截图的通用实现 这篇博文中,我们实现了在 SwiftUI 中截图几乎任何视图的功能,不幸的是它对视频截图却无能为力。不过别着急,我们还有妙招。 在上面的演示图片中,我们在 SwiftUI 中可以随心所欲的截图…

【ZooKeeper学习笔记】

1. ZooKeeper基本概念 Zookeeper官网:https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop项目中的一个子项目,是一个树形目录服务Zookeeper翻译过来就是动物园管理员,用来管理Hadoop(大象)、Hive&…

浪潮信息F-OCC算法夺冠,自动驾驶感知技术再创新高

浪潮信息,作为行业领先的AI技术提供商,其AI团队在近期举办的全球权威CVPR 2024自动驾驶国际挑战赛(Autonomous Grand Challenge)中大放异彩,凭借“F-OCC”算法模型以48.9%的卓越成绩,一举夺得占据栅格和运动估计(Occupancy & …

前端Vue组件化实践:打造仿京东天猫商品属性选择器组件

在前端开发领域,随着业务需求的日益复杂和技术的不断进步,传统的整体式应用开发模式已逐渐显得捉襟见肘。面对日益庞大的系统,每次微小的功能修改或增加都可能导致整个逻辑结构的重构,形成牵一发而动全身的困境。为了解决这一问题…

基于Node.js将个人网站部署到ECS

基于Node.js将个人网站部署到云端ECS 一、如何购买ECS以及如何使用学生认证优惠?1.进入阿里云网站,进行学生认证2.购买学生优惠,免费试用一个月3.重置个人密码 二、服务器的配置以及与宝塔面板的链接1.个人电脑打开终端(winR->…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析:使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代,数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究,数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

一文SpringCloud

Springcloud 什么是Springcloud? 官网:Spring Cloud Data Flow Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控…

Flat Ads:金融APP海外广告投放素材的优化指南

在当今全球化的数字营销环境中,金融APP的海外营销推广已成为众多金融机构与开发者最为关注的环节之一。面对不同地域、文化及用户习惯的挑战,如何优化广告素材,以吸引目标受众的注意并促成有效转化,成为了广告主们亟待解决的问题。 作为领先的全球化营销推广平台,Flat Ads凭借…

树莓派PICO使用INA226测量电流和总线电压(3)

上一篇文章我们讲了如何测试电流,但是INA226有一个非常典型的问题,那就是误差比较大,因为采样电阻非常小,我的开发板用的是100mΩ的采样电阻,在设定中我也用的是这个采样电阻值,但事实上,测试得…

文件内容查阅

cat concatenate files and print on the standard output Linux中一个最简单的且最常用的命令是cat命令。其功能是在终端设备上显示文件内容。 cat命令-n选项用于显示行号。 tac concatenate and print files in reverse tac命令的功能是用于反向显示文件内容,即…

【Qt 基础】绘图

画笔 QPen pen; pen.setWidth(3); // 线条宽度 pen.setColor(Qt::red);// 画笔颜色 pen.setStyle(Qt::DashLine);// 线条样式 pen.setCapStyle(Qt::RoundCap);// 线端样式 pen.setJoinStyle(Qt::BevelJoin);// 连接样式 painter.setPen(pen);线条 线端 连接 画刷 QBrush bru…

css设置弹性flex后,如果设置100vh高度不撑满的原因

问题 父元素设置height为100%,有两个子元素,第一个设置height:100vh,第二个设置flex:1,此时第一个高度无法撑满盒子 原因解决方式 当父元素设置display为flex,第一个div设置高度64px,剩一个div设置高度为flex:1,这时…

数据处理-Matplotlib 绘图展示

文章目录 1. Matplotlib 简介2. 安装3. Matplotlib Pyplot4. 绘制图表1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图 5. 中文显示 1. Matplotlib 简介 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Ma…

Qt项目中添加自定义文件夹,进行整理归类

Qt项目中添加文件夹进行归类 1、在windows的工程目录下创建一个文件夹,如widgets 2、将.h 、.cpp、.ui文件拷贝到windows该文件夹widgets 3、在qt工程中,根目录右键,选择添加现有文件,批量选择 .h 、.cpp、.ui文件之后&#xf…

初识影刀:EXCEL根据部门筛选低值易耗品

第一次知道这个办公自动化的软件还是在招聘网站上,了解之后发现对于办公中重复性的工作还是挺有帮助的,特别是那些操作非EXCEL的重复性工作,当然用在EXCEL上更加方便,有些操作比写VBA便捷。 下面就是一个了解基本操作后&#xff…

开发总结 - H5/web C端评论区开发逻辑

1. 背景 平时做的系统都是偏公司业务的系统,这次开发了一个用户评论的功能,同时开发了web版和H5版本的,因为没有做过这种C端的常用的功能,所以记录一下此次的开发,从参考友商设计到独立思考业务之间的区别再到实际开发…

everything搜索不到任何文件-设置

版本: V1.4.1.1024 (x64) 问题:搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含