用python的manim库实现表格的绘制和制作【table 上】

news2024/11/28 14:50:09

表格的定义:按行和列排列的信息(如数字和说明)。

这是人们参加的运动的表格:

 接下来绘制一些表格:

1. 创建一个包含小数数字的表格{DecimalTable}

DecimalTable 是 Manim 中用于创建一个包含小数数字的表格的类。这个函数非常适合用来展示数据,尤其是需要以小数形式展示的数值。

DecimalTable(table, element_to_mobject=<class 'manim.mobject.text.numbers.DecimalNumber'>,
 element_to_mobject_config={'num_decimal_places': 1}, **kwargs)

参数解释

  1. table:

    • 这是一个二维数组或列表,包含你想在表格中显示的数据。每一个子列表或数组表示表格中的一行。
  2. element_to_mobject:

    • 这是一个类 (默认为 DecimalNumber) 用于指定应该如何将表格中的元素转换成 Manim Mobject。DecimalNumber 用于生成显示小数的 Mobject。
  3. element_to_mobject_config:

    • 这是一个字典,用来配置 element_to_mobject 的行为。默认值为 {'num_decimal_places': 1},即将数字格式化为小数点后有 1 位数字。你可以在这个字典中添加更多的配置选项,例如设置数字的颜色、大小等。
  4. kwargs:

    • 这些是传递给 DecimalTable 的其他可选关键字参数,通常用于配置表格的外观和行为,比如表格的背景颜色、边框样式等。

使用示例

以下是一个简单的示例,展示如何使用 DecimalTable 来创建一个表格:

from manim import *  

class DecimalTableExample(Scene):  
    def construct(self):  
        table_data = [  
            [1.0, 2.5, 3.8],  
            [4.1, 5.9, 6.7],  
            [7.3, 8.2, 9.0]  
        ]  
        
        # 创建表格  
        decimal_table = DecimalTable(  
            table_data, 
            row_labels=[MathTex("x").set_color(PINK),MathTex("f(x)").set_color(YELLOW),MathTex("g(x)").set_color(GOLD)],
            h_buff=1,
            element_to_mobject=DecimalNumber,   
            element_to_mobject_config={'num_decimal_places': 3}  
        )  

        self.play(Create(decimal_table))  
        self.wait(2)

运行结果:

 

示例2: 

from manim import *

class DecimalTableExample(Scene):
    def construct(self):
        x_vals = [-2,-1,0,1,2]
        y_vals = np.exp(x_vals)
        t0 = DecimalTable(
            [x_vals, y_vals],
            row_labels=[MathTex("x"), MathTex("f(x)=e^{x}")],
            h_buff=1,
            element_to_mobject_config={"num_decimal_places": 2})
        self.add(t0)

 2.创建一个包含整数的表格【IntegerTable

IntegerTable 是 Manim 中用于创建一个包含整数的表格的类。这个类非常适合用来展示整数数据,类似于 DecimalTable,但专注于整数。

IntegerTable(table, element_to_mobject=<class 'manim.mobject.text.numbers.Integer'>, 
**kwargs)

参数解释

  1. table:

    • 这是一个二维数组或列表,表示你想在表格中显示的数据。每个子列表或数组构成表格中的一行。
  2. element_to_mobject:

    • 这是一个类,默认值为 Integer,用于指定如何将表格中的元素转换为 Manim Mobject。Integer 是用来生成显示整数的 Mobject,适合在动画和场景中展示整数。
  3. kwargs:

    • 这些是其他可选的关键字参数,通常用于配置表格的外观和行为,例如表格的背景颜色、边框样式、字体大小等。

使用示例

以下是一个简单的示例,展示如何使用 IntegerTable 创建一个包含整数的表格:

from manim import *

class IntegerTableExample(Scene):
    def construct(self):
        t0 = IntegerTable(
            [[0,30,45,60,90],
            [90,60,45,30,0]],
            col_labels=[
                MathTex("\\frac{\sqrt{0}}{2}"),
                MathTex("\\frac{\sqrt{1}}{2}"),
                MathTex("\\frac{\sqrt{2}}{2}"),
                MathTex("\\frac{\sqrt{3}}{2}"),
                MathTex("\\frac{\sqrt{4}}{2}")],
            row_labels=[MathTex("\sin"), MathTex("\cos")],
            h_buff=1,
            element_to_mobject_config={"unit": "^{\circ}"})
        self.add(t0)

运行结构: 

 3.创建数学表达式或符号的表格【MathTable

MathTable 是 Manim 中用于创建一个包含数学表达式或符号的表格的类。与其他表格类类似,MathTable 专注于展示数学内容,非常适合用于数学相关的演示。

参数解释

  1. table:

    • 这是一个二维数组或列表,表示你想在表格中显示的数据。每个子列表或数组构成表格中的一行,内容可以是数学表达式的字符串。
  2. element_to_mobject:

    • 这是一个类,默认值为 MathTex,用于指定如何将表格中的元素转换为 Manim Mobject。MathTex 用于生成可渲染的数学文本,适合展示 LaTeX 格式的数学表达式。
  3. kwargs:

    • 这里可以传递其他可选的关键字参数,通常用于配置表格的外观和行为,例如表格的对齐方式、字体大小、颜色等。

使用示例

以下是一个简单的示例,展示如何使用 MathTable 创建一个包含数学表达式的表格:

from manim import *  

class MathTableExample(Scene):  
    def construct(self):  
        table_data = [  
            ["x^2", "x^3", "x^4"],  
            ["a + b", "a - b", "a * b"],  
            ["\\frac{1}{2}", "\\sqrt{2}", "\\int_0^1 x^2 \\, dx"]  
        ]  
        
        # 创建表格  
        math_table = MathTable(  
            table_data, 
            include_outer_lines=True,
            element_to_mobject=MathTex  
        )  

        # 显示表格  
        self.add(math_table)  

 运行结果:

4.创建一个包含图形的表格的类【MobjectTable 】

MobjectTable 是 Manim 中用于创建一个包含 Mobject 的表格的类。与其他表格类不同,MobjectTable 允许你在表格中直接使用已经存在的 Mobject,以便在动画中展示更复杂的对象。

参数解释

  1. table:

    • 这是一个二维数组或列表,表示你想在表格中显示的 Mobject。每个子列表或数组构成表格中的一行,内容可以是已有的 Mobject。
  2. element_to_mobject:

    • 这是一个函数,默认值为 lambda 函数,用于将表格中的元素转换为 Mobject。你可以自定义该函数以实现不同的转换逻辑,通常情况下,一个简单的示例是直接返回输入的 Mobject,但如果你想对输入进行一定的处理(如调整大小、颜色等)可以在这里实现。
  3. kwargs:

    • 这部分是其他可选的关键字参数,通常用于配置表格的外观和行为,例如行高、列宽、对齐方式、边框样式等。

使用示例

以下是一个简单的示例,展示如何使用 MobjectTable 创建一个包含不同 Mobject 的表格:

from manim import *  

class MobjectTableExample(Scene):  
    def construct(self):  
        circle = Circle(radius=0.5, color=BLUE)  
        square = Square(side_length=1, color=YELLOW)  
        triangle = Triangle(color=RED)  

        table_data = [  
            [circle, square, triangle],  
            [square.copy().shift(RIGHT), triangle.copy().shift(LEFT), circle.copy().shift(DOWN)],  
        ]  
        
        # 创建表格  
        mobject_table = MobjectTable(  
            table_data, 
            include_outer_lines=True,
            element_to_mobject=lambda x: x  
        )  

        # 显示表格  
        self.add(mobject_table)  

 运行结果:

示例2: 

from manim import *

class MobjectTableExample(Scene):
    def construct(self):
        cross = VGroup(
            Line(UP + LEFT, DOWN + RIGHT),
            Line(UP + RIGHT, DOWN + LEFT),
        )
        a = Circle().set_color(RED).scale(0.5)
        b = cross.set_color(BLUE).scale(0.5)
        t0 = MobjectTable(
            [[a.copy(),b.copy(),a.copy()],
            [b.copy(),a.copy(),a.copy()],
            [a.copy(),b.copy(),b.copy()]]
        )
        line = Line(
            t0.get_corner(DL), t0.get_corner(UR)
        ).set_color(RED)
        self.add(t0, line)

运行结果: 

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

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

相关文章

SD-WAN在海外网络加速中的优势

随着全球化的加剧&#xff0c;企业在海外业务拓展中面临着网络延迟、数据安全和成本等一系列挑战。针对这些问题&#xff0c;SD-WAN(软件定义广域网&#xff09;成为了企业网络架构的良好选择。本文将详细介绍SD-WAN在海外加速中的应用和优势。 1.SD-WAN是什么? SD-WAN是一种网…

软件开发者申请代码签名证书流程

软件目前已经成为人们生活和工作不可或缺的一部分&#xff0c;随着互联网的普及和软件分发渠道的多样化&#xff0c;软件的安全性和可信度变得越来越重要。 为了确保软件的完整性、安全性和来源可信性&#xff0c;代码签名证书应运而生。 在软件完成了开发之后&#xff0c;开…

硬件面试经典 100 题(31~40 题)

31、多级放大电路的级间耦合方式有哪几种&#xff1f;哪种耦合方式的电路零点偏移最严重&#xff1f;哪种耦合方式可以实现阻抗变换&#xff1f; 有三种耦合方式&#xff1a;直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重&#xff0c;变压器耦合的电路可以实现…

软件测试经典面试题(答案解析+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化…

EXCEL数据清洗步骤

1.合并的单元格: 用Ctrl+g查找空值,拆分单元格,ctrl enter填充 2.空值+空行: 辅助列+counta,筛选出空值行 3.重复值: 条件格式——突出显示单元格规则——重复值 数据——数据工具——删除重复值 4.脏数据 图片,批注,空格,条件格式 5.数据提取 ctrl e智能填充…

Web自动化测试:UI自动化框架结构以及思路!

在学会使用unittest后&#xff0c;实际上UI自动化的基础骨架已经搭建起来了&#xff0c;剩下的就是利于这套框架&#xff0c;增添一些我们需要的功能&#xff0c;目前看来&#xff0c;我们已经可以使用此框架来批量运行用例&#xff0c;欠缺的是整体的思路以及一些其他功能细节…

RSA算法解析

目录 引言 网络通信的明文传输风险 HTTP的不安全性及其风险点 ​编辑HTTPS的引入 为什么需要HTTPS HTTPS与HTTP的主要区别 TLS协议概述 TLS的作用和重要性 TLS在网络层的位置 TLS握手过程 握手过程的目的和步骤 TLS握手的各个阶段 RSA算法原理 RSA算法的基本概念 …

八股文学习总结

八股文学习总结 文章目录 八股文学习总结一、总体概况二、Java基础三、集合四、JUC五、JVM六、MYSQL七、Redis八、MQ九、计网十、OS十一、附上我记的笔记 一、总体概况 八股文也看了好多天了&#xff0c;我对八股文基本上考察哪些点也都有了印象&#xff0c;主要的分为Java基础…

uni-app 开发App时调用uni-push 实现在线系统消息推送通知 保姆教程

一、引言 在开发App时避免不了需要推送系统通知&#xff0c;以提高用户的使用体验。在自己的一个工具型的小app上全流程接入了uni-push2.0的推送能力&#xff0c;做个记录&#xff0c;以防后期需要用到。在阅读本教程前最好先看看官方文档&#xff0c;结合官方文档使用&#xf…

Android自定义view

前言 在Android开发时&#xff0c;我们经常会碰见在很多地方会重复使用相同的布局&#xff0c;或者是需要显示一些非基础组件&#xff0c;这个时候我们第一反应就是去自定义布局。将很多常用的UI业务需求&#xff0c;封装成一个View来操作&#xff0c;可以有效加快我们编码和开…

笔中藏音,非凡录制 — WT2003H录音芯片方案,让每一支笔都成为你的高清录音神器

开发背景&#xff1a; 在数字化时代&#xff0c;录音笔作为记录与传播声音的重要工具&#xff0c;其性能与功能的提升直接关系到用户的使用体验。随着科技的飞速发展&#xff0c;市场对于录音笔的需求不再仅仅局限于基本的录音功能&#xff0c;而是更加注重音质、便携性、耐用…

Java中包的使用

针对在同一个类中使用不同包中的同名类时&#xff0c;这时候我们需要使用全类名。

React学习-jsx语法

jsx语法&#xff0c;浏览器不认识&#xff0c;需要经过babel编译 https://babeljs.io/ 面试题&#xff1a;jsx的作用&#xff1f; 普通回答&#xff1a;可以在js中返回dom&#xff0c;经过babel编译成js认识的代码import { jsx as _jsx, jsxs as _jsxs } from "react/j…

Maven的理解与应用

Maven使用 一、Maven的含义 Maven是一个构建项目的工具&#xff0c;也是一个管理项目的工具 二、Maven的应用 构建项目 管理依赖 做项目的热部署 基于项目做多模块&#xff08;modle&#xff09;的构建 三、Maven的安装 注意&#xff1a;maven本身不需要安装&#xff0c;下…

JVM(十)深入理解JVM类加载模型以及双亲委派模型

本文详细介绍了Java的类加载机制&#xff0c;包括加载、链接和初始化三个阶段。强调了双亲委派模型的重要性&#xff0c;这是一种避免重复加载类并维持Java核心库安全的类加载策略。文章还探讨了Java类加载器的不同类型&#xff0c;包括启动类加载器、扩展类加载器和应用类加载…

Spring Cloud Alibaba 集成分布式定时任务调度功能

作者&#xff1a;千习 背景简介 定时任务是指在约定的时间&#xff0c;或者按照固定频率周期性执行的任务。在企业应用中&#xff0c;非用户行为发起的后台业务&#xff0c;一般都是通过定时任务来实现&#xff0c;常见场景如下&#xff1a; 异步数据处理&#xff1a;比如先…

【gpt生成文本的回复的原理和代码,通俗思路清晰】

首先介绍了贪婪解码 其次为增家多样性&#xff0c;用温度系数和TopK增加采样 真实的采样步骤 1、topk备选tokens 2、用维度系数大于1让概率平衡一下&#xff0c;3.再用softmax&#xff0c;4.根据概率分布采样 1、贪婪解码 # 之前&#xff0c;我们总是使用torch.argmax采样最大…

年薪30万+,TOP大厂月薪10万+....网络安全工程师凭什么?

时代飞速发展&#xff0c;我们的工作、生活乃至整个社会的运转都越来越依赖于网络。也因此&#xff0c;网络的无处不在带来了前所未有的安全风险。 从个人隐私泄露到企业机密被盗&#xff0c;再到国家关键基础设施遭受攻击&#xff0c;网络安全问题无处不在&#xff0c;威胁着…

SQL之使用存储过程循环插入数据

1、已经创建了任务日志表 CREATE TABLE t_task_log (id bigint NOT NULL AUTO_INCREMENT,task_id bigint NOT NULL COMMENT 任务ID,read_time bigint NOT NULL COMMENT 单位秒&#xff0c;读取耗时,write_time bigint NOT NULL COMMENT 单位秒&#xff0c;写入耗时,read_size …

8月13日学习笔记 LVS

一.描述以及工作原理 1. 什么是LVS linux virtural server的简称&#xff0c;也就是linxu虚拟机服务器&#xff0c;这是一个 由章文嵩博士发起的开源项目&#xff0c;官网是 http://www.linuxvirtualserver.org,现在lvs已经是linux内核标 准的一部分&#xff0c;使用lvs可以达…