表格的定义:按行和列排列的信息(如数字和说明)。
这是人们参加的运动的表格:
接下来绘制一些表格:
1. 创建一个包含小数数字的表格{DecimalTable
}
DecimalTable
是 Manim 中用于创建一个包含小数数字的表格的类。这个函数非常适合用来展示数据,尤其是需要以小数形式展示的数值。
DecimalTable(table, element_to_mobject=<class 'manim.mobject.text.numbers.DecimalNumber'>,
element_to_mobject_config={'num_decimal_places': 1}, **kwargs)
参数解释
-
table:
- 这是一个二维数组或列表,包含你想在表格中显示的数据。每一个子列表或数组表示表格中的一行。
-
element_to_mobject:
- 这是一个类 (默认为
DecimalNumber
) 用于指定应该如何将表格中的元素转换成 Manim Mobject。DecimalNumber
用于生成显示小数的 Mobject。
- 这是一个类 (默认为
-
element_to_mobject_config:
- 这是一个字典,用来配置
element_to_mobject
的行为。默认值为{'num_decimal_places': 1}
,即将数字格式化为小数点后有 1 位数字。你可以在这个字典中添加更多的配置选项,例如设置数字的颜色、大小等。
- 这是一个字典,用来配置
-
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)
参数解释
-
table:
- 这是一个二维数组或列表,表示你想在表格中显示的数据。每个子列表或数组构成表格中的一行。
-
element_to_mobject:
- 这是一个类,默认值为
Integer
,用于指定如何将表格中的元素转换为 Manim Mobject。Integer
是用来生成显示整数的 Mobject,适合在动画和场景中展示整数。
- 这是一个类,默认值为
-
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
专注于展示数学内容,非常适合用于数学相关的演示。
参数解释
-
table:
- 这是一个二维数组或列表,表示你想在表格中显示的数据。每个子列表或数组构成表格中的一行,内容可以是数学表达式的字符串。
-
element_to_mobject:
- 这是一个类,默认值为
MathTex
,用于指定如何将表格中的元素转换为 Manim Mobject。MathTex
用于生成可渲染的数学文本,适合展示 LaTeX 格式的数学表达式。
- 这是一个类,默认值为
-
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,以便在动画中展示更复杂的对象。
参数解释
-
table:
- 这是一个二维数组或列表,表示你想在表格中显示的 Mobject。每个子列表或数组构成表格中的一行,内容可以是已有的 Mobject。
-
element_to_mobject:
- 这是一个函数,默认值为
lambda
函数,用于将表格中的元素转换为 Mobject。你可以自定义该函数以实现不同的转换逻辑,通常情况下,一个简单的示例是直接返回输入的 Mobject,但如果你想对输入进行一定的处理(如调整大小、颜色等)可以在这里实现。
- 这是一个函数,默认值为
-
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)
运行结果: