diff --git a/manim/mobject/geometry.py b/manim/mobject/geometry.py index 4886806523..f22d7b97d5 100644 --- a/manim/mobject/geometry.py +++ b/manim/mobject/geometry.py @@ -1569,6 +1569,7 @@ def coordinate_label( integer_labels: bool = True, n_dim: int = 2, color: str = WHITE, + show_bg_rec: bool = False, ): """Creates a label based on the coordinates of the vector. @@ -1580,11 +1581,13 @@ def coordinate_label( The number of dimensions of the vector. color The color of the label. + show_bg_rec + Display background rectangle for a number. Examples -------- - .. manim VectorCoordinateLabel + .. manim:: VectorCoordinateLabel :save_last_frame: class VectorCoordinateLabel(Scene): @@ -1593,12 +1596,13 @@ def construct(self): vect_1 = Vector([1, 2]) vect_2 = Vector([-3, -2]) - label_1 = vect1.coordinate_label() - label_2 = vect2.coordinate_label(color=YELLOW) + label_1 = vect_1.coordinate_label(show_bg_rec=True) + label_2 = vect_2.coordinate_label(color=YELLOW) self.add(plane, vect_1, vect_2, label_1, label_2) """ # avoiding circular imports + from ..mobject.shape_matchers import BackgroundRectangle from .matrix import Matrix vect = np.array(self.get_end()) @@ -1607,7 +1611,7 @@ def construct(self): vect = vect[:n_dim] vect = vect.reshape((n_dim, 1)) - label = Matrix(vect) + label = Matrix(vect, include_background_rectangle=show_bg_rec) label.scale(LARGE_BUFF - 0.2) shift_dir = np.array(self.get_end()) @@ -1616,7 +1620,10 @@ def construct(self): else: # Pointing left shift_dir -= label.get_right() + DEFAULT_MOBJECT_TO_MOBJECT_BUFFER * RIGHT label.shift(shift_dir) - label.set_color(color) + if show_bg_rec: + label[1:].set_color(color) + else: + label.set_color(color) return label diff --git a/tests/control_data/graphical_units_data/geometry/VectorCoordLabel.npz b/tests/control_data/graphical_units_data/geometry/VectorCoordLabel.npz new file mode 100644 index 0000000000..db6243f761 Binary files /dev/null and b/tests/control_data/graphical_units_data/geometry/VectorCoordLabel.npz differ diff --git a/tests/test_graphical_units/test_geometry.py b/tests/test_graphical_units/test_geometry.py index b3d2c4b719..d7305a841c 100644 --- a/tests/test_graphical_units/test_geometry.py +++ b/tests/test_graphical_units/test_geometry.py @@ -118,6 +118,12 @@ def test_Vector(scene): scene.add(a) +@frames_comparison +def test_VectorCoordLabel(scene): + vec = Vector([1, 2]).coordinate_label(show_bg_rec=True) + scene.add(vec) + + @frames_comparison def test_Polygon(scene): a = Polygon(*[np.array([1, 1, 0]), np.array([2, 2, 0]), np.array([2, 3, 0])])