NumberLine#
Qualified name: 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]#
Bases:
Line
Creates a number line with tick marks.
- Parameters
x_range (Sequence[float] | None) – The
[x_min, x_max, x_step]
values to create the line.length (float | None) – The length of the number line.
unit_size (float) – The distance between each tick of the line. Overwritten by
length
, if specified.include_ticks (bool) – Whether to include ticks on the number line.
tick_size (float) – The length of each tick mark.
numbers_with_elongated_ticks (Iterable[float] | None) – An iterable of specific values with elongated ticks.
longer_tick_multiple (int) – Influences how many times larger elongated ticks are than regular ticks (2 = 2x).
rotation (float) – The angle (in radians) at which the line is rotated.
stroke_width (float) – The thickness of the line.
include_tip (bool) – Whether to add a tip to the end of the line.
tip_width (float) – The width of the tip.
tip_height (float) – The height of the tip.
tip_shape (type[ArrowTip] | None) – The mobject class used to construct the tip, or
None
(the default) for the default arrow tip. Passed classes have to inherit fromArrowTip
.include_numbers (bool) – Whether to add numbers to the tick marks. The number of decimal places is determined by the step size, this default can be overridden by
decimal_number_config
.scaling (_ScaleBase) – The way the
x_range
is value is scaled, i.e.LogBase
for a logarithmic numberline. Defaults toLinearBase
.font_size (float) – The size of the label mobjects. Defaults to 36.
label_direction (Sequence[float]) – The specific position to which label mobjects are added on the line.
label_constructor (VMobject) – Determines the mobject class that will be used to construct the labels of the number line.
line_to_number_buff (float) – The distance between the line and the label mobject.
decimal_number_config (dict | None) – Arguments that can be passed to
DecimalNumber
to influence number mobjects.numbers_to_exclude (Iterable[float] | None) – An explicit iterable of numbers to not be added to the number line.
numbers_to_include (Iterable[float] | None) – An explicit iterable of numbers to add to the number line
kwargs – Additional arguments to be passed to
Line
.exclude_origin_tick (bool) –
Note
Number ranges that include both negative and positive values will be generated from the 0 point, and may not include a tick at the min / max values as the tick locations are dependent on the step size.
Examples
Example: 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)
Methods
Adds specifically positioned labels to the
NumberLine
using adict
.Adds
DecimalNumber
mobjects representing their position at each tick of the number line.Adds ticks to the number line.
get_labels
Generates a positioned
DecimalNumber
mobject generated according tolabel_constructor
.get_number_mobjects
Generates a tick and positions it along the number line.
get_tick_marks
Generates the range of values on which labels are plotted based on the
x_range
attribute of the number line.get_unit_size
get_unit_vector
Abbreviation for
number_to_point()
.Accepts a value along the number line and returns a point with respect to the scene.
Abbreviation for
point_to_number()
.Accepts a point with respect to the scene and returns a float along the number line.
rotate_about_number
rotate_about_zero
Attributes
animate
Used to animate the application of any method of
self
.animation_overrides
color
depth
The depth of the mobject.
fill_color
If there are multiple colors (for gradient) this returns the first one
height
The height of the mobject.
n_points_per_curve
sheen_factor
stroke_color
width
The width of the mobject.
- add_labels(dict_values, direction=None, buff=None, font_size=None, label_constructor=None)[source]#
Adds specifically positioned labels to the
NumberLine
using adict
. The labels can be accessed after creation viaself.labels
.- Parameters
dict_values (dict[float, str | float | VMobject]) – A dictionary consisting of the position along the number line and the mobject to be added:
{1: Tex("Monday"), 3: Tex("Tuesday")}
.label_constructor
will be used to construct the labels if the value is not a mobject (str
orfloat
).direction (Sequence[float]) – Determines the direction at which the label is positioned next to the line.
buff (float | None) – The distance of the label from the line.
font_size (float | None) – The font size of the mobject to be positioned.
label_constructor (VMobject | None) – The
VMobject
class that will be used to construct the label. Defaults to thelabel_constructor
attribute of the number line if not specified.
- Raises
AttributeError – If the label does not have a
font_size
attribute, anAttributeError
is raised.
- add_numbers(x_values=None, excluding=None, font_size=None, label_constructor=None, **kwargs)[source]#
Adds
DecimalNumber
mobjects representing their position at each tick of the number line. The numbers can be accessed after creation viaself.numbers
.- Parameters
x_values (Iterable[float] | None) – An iterable of the values used to position and create the labels. Defaults to the output produced by
get_tick_range()
excluding (Iterable[float] | None) – A list of values to exclude from
x_values
.font_size (float | None) – The font size of the labels. Defaults to the
font_size
attribute of the number line.label_constructor (VMobject | None) – The
VMobject
class that will be used to construct the label. Defaults to thelabel_constructor
attribute of the number line if not specified.
- add_ticks()[source]#
Adds ticks to the number line. Ticks can be accessed after creation via
self.ticks
.
- get_number_mobject(x, direction=None, buff=None, font_size=None, label_constructor=None, **number_config)[source]#
Generates a positioned
DecimalNumber
mobject generated according tolabel_constructor
.- Parameters
x (float) – The x-value at which the mobject should be positioned.
direction (Sequence[float] | None) – Determines the direction at which the label is positioned next to the line.
buff (float | None) – The distance of the label from the line.
font_size (float | None) – The font size of the label mobject.
label_constructor (VMobject | None) – The
VMobject
class that will be used to construct the label. Defaults to thelabel_constructor
attribute of the number line if not specified.
- Returns
The positioned mobject.
- Return type
- get_tick(x, size=None)[source]#
Generates a tick and positions it along the number line.
- Parameters
x (float) – The position of the tick.
size (float | None) – The factor by which the tick is scaled.
- Returns
A positioned tick.
- Return type
- get_tick_range()[source]#
Generates the range of values on which labels are plotted based on the
x_range
attribute of the number line.- Returns
A numpy array of floats represnting values along the number line.
- Return type
np.ndarray
- n2p(number)[source]#
Abbreviation for
number_to_point()
.- Parameters
number (float | np.ndarray) –
- Return type
np.ndarray
- number_to_point(number)[source]#
Accepts a value along the number line and returns a point with respect to the scene.
- Parameters
number (float | np.ndarray) – The value to be transformed into a coordinate. Or a list of values.
- Returns
A point with respect to the scene’s coordinate system. Or a list of points.
- Return type
np.ndarray
Examples
>>> 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)[source]#
Abbreviation for
point_to_number()
.- Parameters
point (Sequence[float]) –
- Return type
float
- point_to_number(point)[source]#
Accepts a point with respect to the scene and returns a float along the number line.
- Parameters
point (Sequence[float]) – A sequence of values consisting of
(x_coord, y_coord, z_coord)
.- Returns
A float representing a value along the number line.
- Return type
float
Examples
>>> 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])