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

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值