数字线

限定名称: 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

../_images/NumberLineExample-1.png
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)

方法

add_labels

使用dictNumberLine添加特定位置的标签。

add_numbers

添加DecimalNumber对象,表示它们在数轴每个刻度上的位置。

add_ticks

在数轴上添加刻度。

get_labels

get_number_mobject

生成一个根据label_constructor生成的定位DecimalNumber mobject。

get_number_mobjects

get_tick

生成一个刻度并将其沿数轴定位。

get_tick_marks

get_tick_range

根据数线的x_range属性生成标签绘制的值范围。

get_unit_size

get_unit_vector

n2p

number_to_point()的缩写。

number_to_point

接受数轴上的一个值,并返回相对于场景的点。

p2n

point_to_number() 的缩写。

point_to_number

接受一个相对于场景的点,并返回一个沿着数轴的浮点数。

rotate_about_number

rotate_about_zero

属性

animate

用于动画化self的任何方法的应用。

animation_overrides

color

depth

mobject的深度。

fill_color

如果有多种颜色(用于渐变),则返回第一个颜色

height

mobject的高度。

n_points_per_curve

sheen_factor

stroke_color

width

mobject的宽度。

_create_label_tex(label_tex, label_constructor=None, **kwargs)[来源]

检查标签是否为VMobject,否则通过将label_tex传递给label_constructor来创建标签。

Parameters:
  • label_tex (str | float | VMobject) – 应该为其创建mobject的标签。如果标签已经是mobject,则不会创建新的mobject。

  • label_constructor (Callable | None) – 可选的。一个类或函数,当传递label_tex作为参数时返回一个mobject。如果传递None(默认值),则使用label_constructor属性中的标签构造函数。

Returns:

标签。

Return type:

VMobject

_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]

使用dictNumberLine添加特定位置的标签。 创建后可以通过self.labels访问这些标签。

Parameters:
  • dict_values (dict[float, str | float | VMobject]) – 一个由数轴上的位置和要添加的mobject组成的字典: {1: Tex("Monday"), 3: Tex("Tuesday")}。如果值不是mobject(strfloat),将使用 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]

添加DecimalNumber mobjects,表示它们在数轴上的每个刻度位置。创建后可以通过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属性。

add_ticks()[来源]

在数轴上添加刻度。刻度可以在创建后通过self.ticks访问。

get_number_mobject(x, direction=None, buff=None, font_size=None, label_constructor=None, **number_config)[来源]

生成一个根据label_constructor生成的定位DecimalNumber mobject。

Parameters:
  • x (float) – 物体应该定位的x值。

  • direction (Sequence[float] | None) – 确定标签相对于线条的定位方向。

  • buff (float | None) – 标签与线条之间的距离。

  • font_size (float | None) – 标签对象的字体大小。

  • label_constructor (VMobject | None) – 用于构造标签的VMobject类。 如果未指定,则默认为数轴的label_constructor属性。

Returns:

定位的mobject。

Return type:

DecimalNumber

get_tick(x, size=None)[source]

生成一个刻度并将其沿数轴定位。

Parameters:
  • x (float) – 刻度的位置。

  • size (float | None) – 刻度缩放的比例因子。

Returns:

一个定位的刻度。

Return type:

Line

get_tick_range()[来源]

根据数线的x_range属性生成标签绘制的值范围。

Returns:

一个表示数轴上值的浮点数numpy数组。

Return type:

np.ndarray

n2p(number)[source]

number_to_point()的缩写。

Parameters:

数字 (浮点数 | 多维数组)

Return type:

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])