用python的manim库实现表格格式操作【table 下】

news2024/11/13 12:11:45

1.Table 是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类

Table 是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类它能够帮助你在场景中清晰地展示数据或信息。

参数解释

  1. table:

    • 一个二维数组或列表,表示表格中的内容。每个子列表代表表格的一行。
  2. row_labels:

    • 可选参数,用于定义行标签的列表,标签应与 table 的行数相一致。若没有提供,表格将不显示行标签。
  3. col_labels:

    • 可选参数,用于定义列标签的列表,标签应与 table 的列数相一致。若没有提供,表格将不显示列标签。
  4. top_left_entry:

    • 可选参数,它指定表格的左上角单元格的内容。通常可以用作标题或说明。
  5. v_buff:

    • 垂直间距的设置,用于调整表格行之间的距离。默认值为 0.8。
  6. h_buff:

    • 水平间距的设置,用于调整表格列之间的距离。默认值为 1.3。
  7. include_outer_lines:

    • 布尔值,若设置为 True,则表格将包含外部边框线。默认值为 False
  8. add_background_rectangles_to_entries:

    • 布尔值,若设置为 True,每个单元格后面将添加一个背景矩形。默认值为 False
  9. entries_background_color:

    • 设置单元格背景矩形的颜色。默认为黑色。
  10. include_background_rectangle:

    • 布尔值,若设置为 True,表格整体将包含一个背景矩形。默认值为 False
  11. background_rectangle_color:

    • 设置表格背景矩形的颜色。默认为黑色。
  12. element_to_mobject:

    • 用于将表格中的每个元素转换成对应的 Mobject,默认为 Paragraph 类,用于显示文本。你可以自定义使用不同的 Mobject 类。
  13. element_to_mobject_config:

    • 用于传递给 element_to_mobject 的配置字典,允许你在创建 Mobject 时进行额外的设置。
  14. arrange_in_grid_config:

    • 用于配置表格排列的设置,允许你控制表格的布局方式。
  15. line_config:

    • 用于配置与线条相关的设置,如线的颜色、宽度等。
  16. kwargs:

    • 其他可选的关键字参数,用于配置表格的其他特性。

使用示例

以下是一个简单的示例,展示如何使用 Table 创建一个基本的文本表格:

from manim import *

class TableExamples(Scene):
    def construct(self):
        t0 = Table(
            [["This", "is a"],
            ["simple", "Table in \n Manim."]])
        t1 = Table(
            [["This", "is a"],
            ["simple", "Table."]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")])
        t1.add_highlighted_cell((2,2), color=YELLOW)
        t2 = Table(
            [["This", "is a"],
            ["simple", "Table."]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")],
            top_left_entry=Star().scale(0.3),
            include_outer_lines=True,
            arrange_in_grid_config={"cell_alignment": RIGHT})
        t2.add(t2.get_cell((2,2), color=RED))
        t3 = Table(
            [["This", "is a"],
            ["simple", "Table."]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")],
            top_left_entry=Star().scale(0.3),
            include_outer_lines=True,
            line_config={"stroke_width": 1, "color": YELLOW})
        t3.remove(*t3.get_vertical_lines())
        g = Group(
            t0,t1,t2,t3
        ).scale(0.7).arrange_in_grid(buff=1)
        self.add(g)
        

 运行结果:

 示例2:

from manim import *

class BackgroundRectanglesExample(Scene):
    def construct(self):
        background = Rectangle(height=6.5, width=13)
        background.set_fill(opacity=.5)
        background.set_color([TEAL, RED, YELLOW])
        self.add(background)
        t0 = Table(
            [["我", "她"],
            ["男", "女"]],
            add_background_rectangles_to_entries=True)
        t1 = Table(
            [["This", "is a"],
            ["simple", "Table."]],
            include_background_rectangle=True)
        g = Group(t0, t1).scale(0.7).arrange(buff=0.5)
        self.add(g)

 运行结果:

2.高亮指定单元格的函数【add_highlighted_cell

 add_highlighted_cell 是一个用于在 Manim 表格中高亮指定单元格的函数。以下是对这个函数及其参数的详细解释:

函数:add_highlighted_cell

add_highlighted_cell(pos=(1, 1), color=ManimColor('#FFFF00'), **kwargs)
参数:
  1. pos (default: (1, 1))

    • 类型:tuple
    • 描述:指定要高亮的单元格的位置。通常是一个以 (row_index, col_index) 形式给出的位置,索引从 0 开始。例如,(1, 1) 表示第二行第二列的单元格。
  2. color (default: ManimColor('#FFFF00'))

    • 类型:ManimColor
    • 描述:指定高亮显示的颜色。可以使用颜色代码(如 '#FFFF00' 表示黄色),也可以使用其他预定义的 Manim 颜色,例如 REDBLUE, 等等。
  3. kwargs

    • 描述:额外的参数,可以根据具体需求添加,例如设置单元格的透明度、边框等属性。这些参数将传递给底层的显示逻辑。

使用示例

如果在一个 Table 对象中调用 add_highlighted_cell

from manim import *

class AddHighlightedCellExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")])
        table.add_highlighted_cell((2,2), color=GREEN)
        self.add(table)

 运行结果:

 3.对表格元素进行操作的主要函数

下面是对 get_cellget_col_labelsget_columnsget_entriesget_entries_without_labels 以及 get_highlighted_cell 等函数的详细解释,包括参数和使用示例。

函数及其参数

  1. get_cell(pos=(1, 1), **kwargs)

    • pos (default: (1, 1))
      • 类型:tuple
      • 描述:指定要获取的单元格的位置,通常是 (row_index, col_index)
      • 示例:
        from manim import *
        
        class GetCellExample(Scene):
            def construct(self):
                table = Table(
                    [["First", "Second"],
                    ["Third","Fourth"]],
                    row_labels=[Text("R1"), Text("R2")],
                    col_labels=[Text("C1"), Text("C2")])
                cell = table.get_cell((2,3), color=RED)
                self.add(table, cell)
        
      • kwargs
        • 描述:额外的参数,用于指定其他获取单元的属性。
      • 运行结果:

  2. get_col_labels()

    • 描述:获取表格的列标签,通常返回一个包含所有列标签的列表或数组。
    • from manim import *
      
      class GetColLabelsExample(Scene):
          def construct(self):
              table = Table(
                  [["First", "Second"],
                  ["Third","Fourth"]],
                  row_labels=[Text("R1"), Text("R2")],
                  col_labels=[Text("C1"), Text("C2")])
              lab = table.get_col_labels()
              for item in lab:
                  item.set_color(random_bright_color())
              self.add(table)

      运行结果:

  3. get_columns()

    • 描述:获取表格中的所有列,返回各个列的集合。
    • class GetColumnsExample(Scene):
          def construct(self):
              table = Table(
                  [["First", "Second"],
                  ["Third","Fourth"]],
                  row_labels=[Text("R1"), Text("R2")],
                  col_labels=[Text("C1"), Text("C2")])
              table.add(SurroundingRectangle(table.get_columns()[1].set_color(RED)).set_color(GREEN))
              self.add(table)

      运行结果:

  4. get_entries(pos=None)

    • pos (default: None)
      • 类型:tuple 或 None
      • 描述:如果给定,返回指定单元格的内容;如果 None,返回所有单元格的内容。
      • 示例:
        class GetEntriesExample(Scene):
            def construct(self):
                table = Table(
                    [["First", "Second"],
                    ["Third","Fourth"]],
                    row_labels=[Text("R1"), Text("R2")],
                    col_labels=[Text("C1"), Text("C2")])
                ent = table.get_entries()
                for item in ent:
                    item.set_color(random_bright_color())
                table.get_entries((2,2)).rotate(PI/6).scale(1).set_color(RED)
                self.add(table)

        运行结果:

  5. get_entries_without_labels(pos=None)

    • pos (default: None)
      • 类型:tuple 或 None
      • 描述:如果给定,返回指定单元格的内容,但不包括标签;如果 None,返回所有单元格内容而不包括标签。
      • class GetEntriesWithoutLabelsExample(Scene):
            def construct(self):
                table = Table(
                    [["First", "Second"],
                    ["Third","Fourth"]],
                    row_labels=[Text("R1"), Text("R2")],
                    col_labels=[Text("C1"), Text("C2")])
                ent = table.get_entries_without_labels()
                colors = [BLUE, GREEN, YELLOW, RED]
                for k in range(len(colors)):
                    ent[k].set_color(colors[k])
                table.get_entries_without_labels((2,2)).rotate(PI)
                self.add(table)

        运行结果:

  6. get_highlighted_cell(pos=(1, 1), color=ManimColor('#FFFF00'), **kwargs)

    • pos (default: (1, 1))
      • 类型:tuple
      • 描述:指定要高亮的单元格的位置。
    • color (default: ManimColor('#FFFF00'))
      • 类型:ManimColor
      • 描述:指定高亮显示的颜色。
    • kwargs
      • 描述:额外的参数,可以用来影响高亮效果的其他属性。
      • 示例:
        class GetHighlightedCellExample(Scene):
            def construct(self):
                table = Table(
                    [["First", "Second"],
                    ["Third","Fourth"]],
                    row_labels=[Text("R1"), Text("R2")],
                    col_labels=[Text("C1"), Text("C2")],
                    include_outer_lines=True,)
                highlight = table.get_highlighted_cell((2,2), color=GREEN)
                table.add_to_back(highlight)
                self.add(table)

 

4.对表格格式进行操作

在 Manim 的表格模块中,get_horizontal_lines(),get_labels(),get_row_labels(),get_rows(),get_vertical_lines(),scale(scale_factor, **kwargs),set_column_colors(*colors),set_row_colors(*colors)以上函数对表格格式进行操作,以下内容是函数和它们的参数说明:

 1.对线条进行操作:

1. get_horizontal_lines():此方法返回表格中所有的水平线元件。你可以利用这个方法,来提取和操作表格中的水平线。

2. get_vertical_lines():此方法返回表格中所有的竖直线元件,可以帮助你提取和操作表格中的竖直线。

 示例代码:

class GetHorizontalLinesExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")],
            include_outer_lines=True,)
        table.get_horizontal_lines()[0].set_color(RED)
        table.get_horizontal_lines()[2].set_color(RED)
        table.get_vertical_lines()[2].set_color(RED)
        self.add(table)

 运行结果:

3. get_labels()

        该方法返回表格的所有标签(通常是列标签)作为一个列表。你可以对这些标签进行遍历或访问。

from manim import *

class GetLabelsExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")])
        lab = table.get_labels()
        colors = [BLUE, GREEN, YELLOW, RED]
        for k in range(len(colors)):
            lab[k].set_color(colors[k])
        self.add(table)

4. get_row_labels()

        此方法返回表格中所有的行标签。类似于 get_labels() ,但专注于行的标签。

from manim import *

class GetRowLabelsExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")])
        lab = table.get_row_labels()
        for item in lab:
            item.set_color(random_bright_color())
        self.add(table)

5. get_rows()

        该方法返回表格中的每一行,通常是以列表的形式返回每一行对应的条目。

from manim import *

class GetRowsExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")])
        table.add(SurroundingRectangle(table.get_rows()[1]))
        self.add(table)

6. scale(scale_factor, **kwargs)

        这是一个用于缩放表格的通用函数,scale_factor 是缩放因子,用于控制表格的大小。**kwargs 可以用于传递额外参数(如 about_point,这可以定义缩放的中心点),允许你灵活调整表格的缩放方式。

from manim import *

class MobjectScaleExample(Scene):
    def construct(self):
        f1 = Text("F")
        f2 = Text("F").scale(2)
        f3 = Text("F").scale(0.5)
        f4 = Text("F").scale(-1)

        vgroup = VGroup(f1, f2, f3, f4).arrange(6 * RIGHT)
        self.add(vgroup)

7. set_column_colors(*colors)

        该方法允许你为表格的每一列设置颜色。*colors 可以是要应用于每一列的颜色列表,顺序对应于各列的顺序。如果颜色数量少于列数,多余的列将不会有颜色。

class SetColumnColorsExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")]
        ).set_column_colors([RED,BLUE], WHITE,[YELLOW,BLUE])
        self.add(table)

8. set_row_colors(*colors)

        此方法与 set_column_colors 类似,但它用于设置表格的每一行的颜色。*colors 是一个颜色列表,顺序对应于各行的顺序。如果颜色数量少于行数,多余的行将不会有颜色。

class SetRowColorsExample(Scene):
    def construct(self):
        table = Table(
            [["First", "Second"],
            ["Third","Fourth"]],
            row_labels=[Text("R1"), Text("R2")],
            col_labels=[Text("C1"), Text("C2")]
        ).set_row_colors([RED,BLUE], WHITE,[YELLOW,BLUE])
        self.add(table)

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

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

相关文章

zigbee笔记:十一、设备网络类型展示与按键实验

一、设备网络类型展示 利用开发板上的三个LED灯来显示设备当前的网络类型(协调器、路由器、终端)。 1、添加LED灯的初始化代码 1)开发板LED原理图 2)在模板工程的...Projects\zstack\Samples\smartHomeApp\Source目录下新建两个文…

【TabBar嵌套Navigation案例-发现页面-按钮上的图片旋转 Objective-C语言】

一、接下来,我们来做这个,点击以后,让它出一个蓝色的View 1.就是我们示例程序的这种效果, 一点击,让这个按钮旋转,然后呢,再让它出来一个蓝色的View, 首先,我们要去监听它的点击事件,这是第一,我点击以后,我要做一些什么样的操作,要有点击事件, 所以呢,我要把…

Processing中库和导出PDF内容

一.库 1.使用库的方式 从菜单栏(Sketch Menu)选择导入库(import labrary),选择一个我们要添加或者成需要用到的库。 例如:当我们需要添加PDF扩展库时,需要将下面这段代码添加到草图中。 import processing.pdf.*; 除了processing里的库&…

ElasticSearch聚合操作详解

文章目录 聚合操作聚合的分类测试数据Metric AggregationBucket Aggregation获取job的分类信息限定聚合范围Range & Histogram聚合聚合嵌套 Pipeline Aggregation聚合的作用范围排序ES聚合分析不精准原因分析聚合性能优化启用 eager global ordinals 提升高基数聚合性能插入…

【Unity-本地化】简单的游戏本地化处理方案

目录 0 前言1 多语言配置2 本地化实现2.1 读取多语言文本的通用方法2.2 动态文本本地化2.3 静态文本本地化 3 方案扩展3.1 LanguageText扩展3.1.1 展示Excel里对应ID的文本3.1.2 自动填充ID3.1.3 同步prefab的修改3.1.4 完整代码 3.2 自动LanguageText挂载 4* 内嵌文本图片的本…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月14日新模型预测第56弹

好长时间没进行总结了,今天咱们做一个总结,总结一下最新模型经过50多期的测试结果: 经过近50多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率…

restful传值

GetMapping 普通的get请求 后端: restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…

Windows平台RTSP|RTMP播放器如何实时调节音量

我们在做Windows平台RTSP、RTMP播放器的时候,有这样的技术需求,特别是多路监控的时候,并不是每一路audio都需要播放出来的,所以,这时候,需要有针对音量调节的设计: /** smart_player_sdk.cs* C…

3DsMax如何给模型添加一个外壳

3DsMax如何给模型添加一个外壳 在3DsMax中添加外壳 复制一个使用缩放添加一个外壳(适用性不多) 复制一份,修改复制的模型的缩放,模型套模型作为外壳。,当模型是管道的时候就不大行。 使用壳修改器 添加之后&#…

pyqt5 爬虫开源项目

使用 PyQt5 进行网络爬虫开发通常涉及创建一个图形用户界面(GUI)来管理和展示爬虫的运行状态和结果。以下是一些结合 PyQt5 和网络爬虫技术的开源项目,可以作为学习和参考的好资源: PySpider-GUI: 简介: 一个基于 PyQt5 的网络爬虫 GUI,用于管理和运行爬虫任务。GitHub: P…

DHCP 笔记 + 配置示例

一、概念 DHCP 3 种渠道: 1、基于接口 2、基于全局 3、基于中继 DHCP正常 4 个阶段和 8 种报文: 1、Client:Discover 2、Server:Offer …

python结合csv和正则实现条件筛选数据统计分数

前景提要: 有一个项目的数值和员工统计的对不上,如果一页一页翻找自己手动算,一个就有16、7页, 功能实现 1、创建csv文件 需要将每一个模块的所有数据头提取出来,这个可以直接用爬虫或者手工复制出来,因…

SpringCloud-01

单体架构 将业务的所有功能集中在一个项目中开发,打成一个包部署 优点 架构简单 部署成本低 缺点 耦合度高 分布式架构 根据业务功能对系统进行拆分,每个业务模块作为单独项目开发,称为一个服务。 优点 降低服务耦合 有利于服务升级…

Spring Cloud Alibaba微服务组件学习笔记

文章目录 一、版本说明版本关系项目创建 二、Nacos注册中心什么是NacosNacos注册中心核心功能Nacos Server部署(windows版本)Nacos Client服务Nacos Server配置项详解:Nacos集群搭建: 三、Ribbon负载均衡主流的负载方案&#xff1…

网工必备-网络设备配置文件及日志高亮显示Sublime Text

文章目录 下载Sublime Text 4下载高亮配色文件使用方法 之前推荐了一款文本编辑工具【编写脚本及查看日志的高亮文本编辑工具——EverEdit】,可以针对网络工程师们日常的网络设备配置文件及日志的高亮显示,但是需要保存后才可以显示高亮,虽然…

AI预测体彩排3采取888=3策略+和值012路或胆码测试8月14日升级新模型预测第51弹

好长时间没进行总结了,今天咱们做一个总结,总结一下最新模型经过50多期的测试结果: 经过近50多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率…

深入探讨Linux的进程调度器

Linux操作系统作为一个开源且广泛应用的操作系统,其内核设计包含了许多核心功能,而进程调度器(Scheduler)就是其中一个至关重要的模块。进程调度器负责决定在任何给定的时刻哪个进程可以运行,以及其运行的顺序。这篇文…

如何编写一个CMakeLists.txt文件(由简到难,较详细)

在Linux系统下,经常使用CMakeLists.txt文件来链接、编译C工程,大部分人clone的代码里都是有CMakeLists.txt文件的,只需要cmake .. 和make就完事了,但在工作中,你必须要有从无到有编写CMakeLists.txt文件的能力。 一、…

一款简易大众点评项目实战——达人探店、关注、附近商圈、签到、UV统计

一款简易大众点评项目实战——达人探店、关注、附近商圈、签到、UV统计 8.达人探店8.1上传接口与发布笔记接口8.2 达人探店-查看探店笔记8.3 达人探店-点赞功能8.4 达人探店-点赞排行榜 9、好友关注9.1 好友关注-关注和取消关注9.2 好友关注-共同关注9.3 好友关注-Feed流实现方…

Visual Studio 2024安装教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)

软件下载 软件:Visual Studio版本:2022语言:简体中文大小:4.11M安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①百度网盘丨下载链接:https://pan.baid…