数轴¶
限定名称: 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 ¶
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
mobject,表示它们在数轴每个刻度上的位置。向数轴添加刻度线。
get_labels
根据
label_constructor
生成一个定位的DecimalNumber
mobject。get_number_mobjects
生成一个刻度并将其沿数轴定位。
get_tick_marks
根据数轴的
x_range
属性生成标签绘制的值范围。get_unit_size
get_unit_vector
number_to_point()
的缩写。接受数轴上的一个值,并返回一个相对于场景的点。等同于 NumberLine @ 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
来创建标签。
- _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]¶
使用
dict
向NumberLine
添加特定位置的标签。创建后可以通过self.labels
访问这些标签。- 参数:
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
属性。
- 抛出:
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
属性。
- get_number_mobject(x, direction=None, buff=None, font_size=None, label_constructor=None, **number_config)[source]¶
根据
label_constructor
生成一个定位的DecimalNumber
mobject。
- get_tick(x, size=None)[source]¶
生成一个刻度并将其沿数轴定位。
- 参数:
x (float) – 刻度的位置。
size (float | None) – 刻度缩放的因子。
- 返回:
一个定位的刻度。
- 返回类型:
- 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])