数轴

限定名称: 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)[source]

基类: Line

创建带有刻度线的数轴。

参数:
  • 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 (type[ArrowTip] | None) – 用于构造尖端的mobject类,或 None(默认值)表示使用默认箭头尖端。传入的类必须继承自 ArrowTip

  • include_numbers (bool) – 是否在刻度线上添加数字。小数位数由步长决定,此默认值可以通过 decimal_number_config 覆盖。

  • scaling (_ScaleBase) – x_range 值缩放的方式,例如对数数轴的 LogBase。默认为 LinearBase

  • font_size (float) – 标签mobject的大小。默认为36。

  • label_direction (Sequence[float]) – 标签mobject添加到线条上的特定位置。

  • label_constructor (VMobject) – 确定将用于构造数轴标签的mobject类。

  • line_to_number_buff (float) – 线条与标签mobject之间的距离。

  • decimal_number_config (dict | None) – 可以传递给 DecimalNumber 以影响数字mobject的参数。

  • 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 mobject,表示它们在数轴每个刻度上的位置。

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

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

p2n

point_to_number() 的缩写。

point_to_number

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

rotate_about_number

rotate_about_zero

属性

animate (动画)

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

animation_overrides (动画覆盖)

颜色

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

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

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

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

返回:

标签。

返回类型:

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

参数:
  • x_range (Sequence[float] | None)

  • length (float | None)

  • unit_size (float)

  • include_ticks (bool)

  • tick_size (float)

  • numbers_with_elongated_ticks (Iterable[float] | None)

  • longer_tick_multiple (int)

  • exclude_origin_tick (bool)

  • rotation (float)

  • stroke_width (浮点数)

  • include_tip (bool)

  • tip_width (float)

  • tip_height (float)

  • tip_shape (type[ArrowTip] | None)

  • include_numbers (bool)

  • font_size (float)

  • label_direction (Sequence[float])

  • label_constructor (VMobject)

  • scaling (_ScaleBase)

  • line_to_number_buff (float)

  • decimal_number_config (dict | None)

  • numbers_to_exclude (Iterable[float] | None)

  • numbers_to_include (Iterable[float] | None)

add_labels(dict_values, direction=None, buff=None, font_size=None, label_constructor=None)[source]

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

参数:
  • 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 属性。

抛出:

AttributeError – 如果标签没有 font_size 属性,则会引发 AttributeError

add_numbers(x_values=None, excluding=None, font_size=None, label_constructor=None, **kwargs)[source]

添加 DecimalNumber mobject,表示它们在数轴每个刻度上的位置。创建后可以通过 self.numbers 访问这些数字。

参数:
  • x_values (Iterable[float] | None) – 用于定位和创建标签的值的可迭代对象。默认为 get_tick_range() 生成的输出。

  • excluding (Iterable[float] | None) – 从 x_values 中排除的值列表。

  • font_size (float | None) – 标签的字体大小。默认为数轴的 font_size 属性。

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

add_ticks()[source]

向数轴添加刻度线。创建后可以通过 self.ticks 访问这些刻度。

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

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

参数:
  • x (float) – mobject应定位的 x 值。

  • direction (Sequence[float] | None) – 确定标签在线条旁边定位的方向。

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

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

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

返回:

定位的mobject。

返回类型:

十进制数

get_tick(x, size=None)[source]

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

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

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

返回:

一个定位的刻度。

返回类型:

线

get_tick_range()[source]

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

返回:

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

返回类型:

np.ndarray

n2p(number)[source]

number_to_point() 的缩写。

参数:

number (float | ndarray)

返回类型:

ndarray

number_to_point(number)[source]

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

参数:

number (float | ndarray) – 要转换为坐标的值。或值的列表。

返回:

相对于场景坐标系的一个点。或点的列表。

返回类型:

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 @ 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)[source]

point_to_number() 的缩写。

参数:

point (Sequence[float])

返回类型:

浮点数

point_to_number(point)[source]

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

参数:

point (Sequence[float]) – 由 (x_coord, y_coord, z_coord) 组成的值序列。

返回:

一个表示沿数轴值的浮点数。

返回类型:

浮点数

示例

>>> from manim import NumberLine
>>> number_line = NumberLine()
>>> number_line.point_to_number((0, 0, 0))
np.float64(0.0)
>>> number_line.point_to_number((1, 0, 0))
np.float64(1.0)
>>> number_line.point_to_number([[0.5, 0, 0], [1, 0, 0], [1.5, 0, 0]])
array([0.5, 1. , 1.5])