1.Table
是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类
Table
是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类它能够帮助你在场景中清晰地展示数据或信息。
参数解释
-
table:
- 一个二维数组或列表,表示表格中的内容。每个子列表代表表格的一行。
-
row_labels:
- 可选参数,用于定义行标签的列表,标签应与
table
的行数相一致。若没有提供,表格将不显示行标签。
- 可选参数,用于定义行标签的列表,标签应与
-
col_labels:
- 可选参数,用于定义列标签的列表,标签应与
table
的列数相一致。若没有提供,表格将不显示列标签。
- 可选参数,用于定义列标签的列表,标签应与
-
top_left_entry:
- 可选参数,它指定表格的左上角单元格的内容。通常可以用作标题或说明。
-
v_buff:
- 垂直间距的设置,用于调整表格行之间的距离。默认值为 0.8。
-
h_buff:
- 水平间距的设置,用于调整表格列之间的距离。默认值为 1.3。
-
include_outer_lines:
- 布尔值,若设置为
True
,则表格将包含外部边框线。默认值为False
。
- 布尔值,若设置为
-
add_background_rectangles_to_entries:
- 布尔值,若设置为
True
,每个单元格后面将添加一个背景矩形。默认值为False
。
- 布尔值,若设置为
-
entries_background_color:
- 设置单元格背景矩形的颜色。默认为黑色。
-
include_background_rectangle:
- 布尔值,若设置为
True
,表格整体将包含一个背景矩形。默认值为False
。
- 布尔值,若设置为
-
background_rectangle_color:
- 设置表格背景矩形的颜色。默认为黑色。
-
element_to_mobject:
- 用于将表格中的每个元素转换成对应的 Mobject,默认为
Paragraph
类,用于显示文本。你可以自定义使用不同的 Mobject 类。
- 用于将表格中的每个元素转换成对应的 Mobject,默认为
-
element_to_mobject_config:
- 用于传递给
element_to_mobject
的配置字典,允许你在创建 Mobject 时进行额外的设置。
- 用于传递给
-
arrange_in_grid_config:
- 用于配置表格排列的设置,允许你控制表格的布局方式。
-
line_config:
- 用于配置与线条相关的设置,如线的颜色、宽度等。
-
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)
参数:
-
pos (default:
(1, 1)
)- 类型:
tuple
- 描述:指定要高亮的单元格的位置。通常是一个以
(row_index, col_index)
形式给出的位置,索引从 0 开始。例如,(1, 1)
表示第二行第二列的单元格。
- 类型:
-
color (default:
ManimColor('#FFFF00')
)- 类型:
ManimColor
- 描述:指定高亮显示的颜色。可以使用颜色代码(如
'#FFFF00'
表示黄色),也可以使用其他预定义的 Manim 颜色,例如RED
,BLUE
, 等等。
- 类型:
-
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_cell
、get_col_labels
、get_columns
、get_entries
、get_entries_without_labels
以及 get_highlighted_cell
等函数的详细解释,包括参数和使用示例。
函数及其参数
-
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
- 描述:额外的参数,用于指定其他获取单元的属性。
-
运行结果:
- 类型:
- pos (default:
-
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)
运行结果:
-
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)
运行结果:
-
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)
运行结果:
- 类型:
- pos (default:
-
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)
运行结果:
- 类型:
- pos (default:
-
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)
- pos (default:
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)