数字线¶
限定名称: manim.mobject.graphing.number\_line.NumberLine
- class NumberLine(x_range=None, length=None, unit_size=1, include_ticks=True, tick_size=0.1, numbers_with_elongated_ticks=None, longer_tick_multiple=2, exclude_origin_tick=False, rotation=0, stroke_width=2.0, include_tip=False, tip_width=0.35, tip_height=0.35, tip_shape=None, include_numbers=False, font_size=36, label_direction=array([ 0., -1., 0.]), label_constructor=<class 'manim.mobject.text.tex_mobject.MathTex'>, scaling=<manim.mobject.graphing.scale.LinearBase object>, line_to_number_buff=0.25, decimal_number_config=None, numbers_to_exclude=None, numbers_to_include=None, **kwargs)[来源]¶
基础类:
Line创建一个带有刻度的数轴。
- Parameters:
x_range (Sequence[float] | None) – 用于创建线条的
[x_min, x_max, x_step]值。length (float | None) – 数轴的长度。
unit_size (float) – 线条每个刻度之间的距离。如果指定了
length,则会被覆盖。include_ticks (bool) – 是否在数轴上包含刻度。
tick_size (float) – 每个刻度线的长度。
numbers_with_elongated_ticks (Iterable[float] | None) – 一个包含特定值的可迭代对象,这些值带有加长的刻度。
longer_tick_multiple (int) – 影响延长刻度比常规刻度大多少倍(2 = 2倍)。
rotation (float) – 线条旋转的角度(以弧度为单位)。
stroke_width (float) – 线条的厚度。
include_tip (bool) – 是否在行尾添加提示。
tip_width (float) – 尖端的宽度。
tip_height (float) – 提示的高度。
tip_shape (类型[ArrowTip] | None) – 用于构造箭头的mobject类,或
None(默认值)表示使用默认的箭头。传递的类必须继承自ArrowTip。include_numbers (bool) – 是否在刻度标记上添加数字。小数位数由步长决定,此默认值可以通过
decimal_number_config覆盖。缩放 (_ScaleBase) –
x_range值的缩放方式,例如对数数轴使用LogBase。默认为LinearBase。font_size (float) – 标签对象的大小。默认为36。
label_direction (Sequence[float]) – 标签对象在线上添加的具体位置。
label_constructor (VMobject) – 确定将用于构建数轴标签的mobject类。
line_to_number_buff (float) – 线与标签对象之间的距离。
decimal_number_config (dict | None) – 可以传递给
DecimalNumber的参数,以影响数字对象。numbers_to_exclude (Iterable[float] | None) – 一个显式的可迭代对象,包含不应添加到数轴上的数字。
numbers_to_include (Iterable[float] | None) – 要添加到数轴上的数字的显式可迭代对象
kwargs – 传递给
Line的额外参数。exclude_origin_tick (bool)
注意
包含负值和正值的数字范围将从0点生成,并且可能不包括最小/最大值处的刻度,因为刻度的位置取决于步长。
示例
示例:NumberLineExample ¶
from manim import * class NumberLineExample(Scene): def construct(self): l0 = NumberLine( x_range=[-10, 10, 2], length=10, color=BLUE, include_numbers=True, label_direction=UP, ) l1 = NumberLine( x_range=[-10, 10, 2], unit_size=0.5, numbers_with_elongated_ticks=[-2, 4], include_numbers=True, font_size=24, ) num6 = l1.numbers[8] num6.set_color(RED) l2 = NumberLine( x_range=[-2.5, 2.5 + 0.5, 0.5], length=12, decimal_number_config={"num_decimal_places": 2}, include_numbers=True, ) l3 = NumberLine( x_range=[-5, 5 + 1, 1], length=6, include_tip=True, include_numbers=True, rotation=10 * DEGREES, ) line_group = VGroup(l0, l1, l2, l3).arrange(DOWN, buff=1) self.add(line_group)
class NumberLineExample(Scene): def construct(self): l0 = NumberLine( x_range=[-10, 10, 2], length=10, color=BLUE, include_numbers=True, label_direction=UP, ) l1 = NumberLine( x_range=[-10, 10, 2], unit_size=0.5, numbers_with_elongated_ticks=[-2, 4], include_numbers=True, font_size=24, ) num6 = l1.numbers[8] num6.set_color(RED) l2 = NumberLine( x_range=[-2.5, 2.5 + 0.5, 0.5], length=12, decimal_number_config={"num_decimal_places": 2}, include_numbers=True, ) l3 = NumberLine( x_range=[-5, 5 + 1, 1], length=6, include_tip=True, include_numbers=True, rotation=10 * DEGREES, ) line_group = VGroup(l0, l1, l2, l3).arrange(DOWN, buff=1) self.add(line_group)方法
使用
dict向NumberLine添加特定位置的标签。添加
DecimalNumber对象,表示它们在数轴每个刻度上的位置。在数轴上添加刻度。
get_labels生成一个根据
label_constructor生成的定位DecimalNumbermobject。get_number_mobjects生成一个刻度并将其沿数轴定位。
get_tick_marks根据数线的
x_range属性生成标签绘制的值范围。get_unit_sizeget_unit_vector接受数轴上的一个值,并返回相对于场景的点。
point_to_number()的缩写。接受一个相对于场景的点,并返回一个沿着数轴的浮点数。
rotate_about_numberrotate_about_zero属性
animate用于动画化
self的任何方法的应用。animation_overridescolordepthmobject的深度。
fill_color如果有多种颜色(用于渐变),则返回第一个颜色
heightmobject的高度。
n_points_per_curvesheen_factorstroke_colorwidthmobject的宽度。
- _create_label_tex(label_tex, label_constructor=None, **kwargs)[来源]¶
检查标签是否为
VMobject,否则通过将label_tex传递给label_constructor来创建标签。
- _original__init__(x_range=None, length=None, unit_size=1, include_ticks=True, tick_size=0.1, numbers_with_elongated_ticks=None, longer_tick_multiple=2, exclude_origin_tick=False, rotation=0, stroke_width=2.0, include_tip=False, tip_width=0.35, tip_height=0.35, tip_shape=None, include_numbers=False, font_size=36, label_direction=array([ 0., -1., 0.]), label_constructor=<class 'manim.mobject.text.tex_mobject.MathTex'>, scaling=<manim.mobject.graphing.scale.LinearBase object>, line_to_number_buff=0.25, decimal_number_config=None, numbers_to_exclude=None, numbers_to_include=None, **kwargs)¶
初始化自身。有关准确的签名,请参阅 help(type(self))。
- Parameters:
x_range (序列[浮点数] | 无)
长度 (浮点数 | 无)
unit_size (float)
include_ticks (bool)
tick_size (float)
numbers_with_elongated_ticks (可迭代[浮点数] | 无)
longer_tick_multiple (int)
exclude_origin_tick (bool)
rotation (float)
stroke_width (float)
include_tip (布尔值)
tip_width (float)
tip_height (float)
tip_shape (类型[ArrowTip] | 无)
include_numbers (bool)
font_size (float)
label_direction (序列[浮点数])
label_constructor (VMobject)
缩放 (_ScaleBase)
line_to_number_buff (float)
decimal_number_config (字典 | 无)
numbers_to_exclude (可迭代对象[浮点数] | 无)
numbers_to_include (可迭代对象[浮点数] | 无)
- add_labels(dict_values, direction=None, buff=None, font_size=None, label_constructor=None)[source]¶
使用
dict向NumberLine添加特定位置的标签。 创建后可以通过self.labels访问这些标签。- Parameters:
dict_values (dict[float, str | float | VMobject]) – 一个由数轴上的位置和要添加的mobject组成的字典:
{1: Tex("Monday"), 3: Tex("Tuesday")}。如果值不是mobject(str或float),将使用label_constructor来构造标签。direction (Sequence[float]) – 确定标签相对于线条的定位方向。
buff (float | None) – 标签与线条之间的距离。
font_size (float | None) – 要定位的mobject的字体大小。
label_constructor (VMobject | None) – 用于构造标签的
VMobject类。 如果未指定,则默认为数轴的label_constructor属性。
- Raises:
AttributeError – 如果标签没有
font_size属性,则会引发AttributeError。
- add_numbers(x_values=None, excluding=None, font_size=None, label_constructor=None, **kwargs)[source]¶
添加
DecimalNumbermobjects,表示它们在数轴上的每个刻度位置。创建后可以通过self.numbers访问这些数字。- Parameters:
x_values (Iterable[float] | None) – 用于定位和创建标签的值的可迭代对象。 默认为
get_tick_range()生成的输出。排除 (可迭代[浮点数] | 无) – 要从
x_values中排除的值列表。font_size (float | None) – 标签的字体大小。默认为数线的
font_size属性。label_constructor (VMobject | None) – 用于构造标签的
VMobject类。 如果未指定,则默认为数轴的label_constructor属性。
- get_number_mobject(x, direction=None, buff=None, font_size=None, label_constructor=None, **number_config)[来源]¶
生成一个根据
label_constructor生成的定位DecimalNumbermobject。- Parameters:
- Returns:
定位的mobject。
- Return type:
- get_tick(x, size=None)[source]¶
生成一个刻度并将其沿数轴定位。
- Parameters:
x (float) – 刻度的位置。
size (float | None) – 刻度缩放的比例因子。
- Returns:
一个定位的刻度。
- Return type:
- get_tick_range()[来源]¶
根据数线的
x_range属性生成标签绘制的值范围。- Returns:
一个表示数轴上值的浮点数numpy数组。
- Return type:
np.ndarray
- number_to_point(number)[来源]¶
接受数轴上的一个值并返回相对于场景的点。
- Parameters:
number (float | ndarray) – 要转换为坐标的值。或值的列表。
- Returns:
相对于场景坐标系的点。或点列表。
- Return type:
np.ndarray
示例
>>> from manim import NumberLine >>> number_line = NumberLine() >>> number_line.number_to_point(0) array([0., 0., 0.]) >>> number_line.number_to_point(1) array([1., 0., 0.]) >>> number_line.number_to_point([1,2,3]) array([[1., 0., 0.], [2., 0., 0.], [3., 0., 0.]])
- p2n(point)[来源]¶
point_to_number()的缩写。- Parameters:
点 (序列[浮点数])
- Return type:
浮点数
- point_to_number(point)[来源]¶
接受一个相对于场景的点,并返回一个沿着数轴的浮点数。
- Parameters:
点 (序列[浮点数]) – 由
(x_coord, y_coord, z_coord)组成的一系列值。- Returns:
表示数轴上某个值的浮点数。
- Return type:
浮点数
示例
>>> from manim import NumberLine >>> number_line = NumberLine() >>> number_line.point_to_number((0,0,0)) 0.0 >>> number_line.point_to_number((1,0,0)) 1.0 >>> number_line.point_to_number([[0.5,0,0],[1,0,0],[1.5,0,0]]) array([0.5, 1. , 1.5])