# Table of Contents
- [Manim Community v0.20.1](#manim-community-v0-20-1)
- [brace - Manim Community v0.20.1](#brace-manim-community-v0-20-1)
- [Sector - Manim Community v0.20.1](#sector-manim-community-v0-20-1)
- [Difference - Manim Community v0.20.1](#difference-manim-community-v0-20-1)
- [Union - Manim Community v0.20.1](#union-manim-community-v0-20-1)
- [labeled - Manim Community v0.20.1](#labeled-manim-community-v0-20-1)
- [LabeledArrow - Manim Community v0.20.1](#labeledarrow-manim-community-v0-20-1)
- [line - Manim Community v0.20.1](#line-manim-community-v0-20-1)
- [Elbow - Manim Community v0.20.1](#elbow-manim-community-v0-20-1)
- [Polygon - Manim Community v0.20.1](#polygon-manim-community-v0-20-1)
- [RegularPolygram - Manim Community v0.20.1](#regularpolygram-manim-community-v0-20-1)
- [RoundedRectangle - Manim Community v0.20.1](#roundedrectangle-manim-community-v0-20-1)
- [Triangle - Manim Community v0.20.1](#triangle-manim-community-v0-20-1)
- [Cross - Manim Community v0.20.1](#cross-manim-community-v0-20-1)
- [ArrowCircleFilledTip - Manim Community v0.20.1](#arrowcirclefilledtip-manim-community-v0-20-1)
- [ArrowCircleTip - Manim Community v0.20.1](#arrowcircletip-manim-community-v0-20-1)
- [ArrowSquareFilledTip - Manim Community v0.20.1](#arrowsquarefilledtip-manim-community-v0-20-1)
- [ArrowSquareTip - Manim Community v0.20.1](#arrowsquaretip-manim-community-v0-20-1)
- [ArrowTriangleFilledTip - Manim Community v0.20.1](#arrowtrianglefilledtip-manim-community-v0-20-1)
- [ArrowTriangleTip - Manim Community v0.20.1](#arrowtriangletip-manim-community-v0-20-1)
- [StealthTip - Manim Community v0.20.1](#stealthtip-manim-community-v0-20-1)
- [graphing - Manim Community v0.20.1](#graphing-manim-community-v0-20-1)
- [coordinate_systems - Manim Community v0.20.1](#coordinate-systems-manim-community-v0-20-1)
- [functions - Manim Community v0.20.1](#functions-manim-community-v0-20-1)
- [UnitInterval - Manim Community v0.20.1](#unitinterval-manim-community-v0-20-1)
- [scale - Manim Community v0.20.1](#scale-manim-community-v0-20-1)
- [LogBase - Manim Community v0.20.1](#logbase-manim-community-v0-20-1)
- [IntegerMatrix - Manim Community v0.20.1](#integermatrix-manim-community-v0-20-1)
- [Group - Manim Community v0.20.1](#group-manim-community-v0-20-1)
- [boolean_ops - Manim Community v0.20.1](#boolean-ops-manim-community-v0-20-1)
- [RegularPolygon - Manim Community v0.20.1](#regularpolygon-manim-community-v0-20-1)
- [Square - Manim Community v0.20.1](#square-manim-community-v0-20-1)
- [Star - Manim Community v0.20.1](#star-manim-community-v0-20-1)
- [polygram - Manim Community v0.20.1](#polygram-manim-community-v0-20-1)
- [Underline - Manim Community v0.20.1](#underline-manim-community-v0-20-1)
- [shape_matchers - Manim Community v0.20.1](#shape-matchers-manim-community-v0-20-1)
- [tips - Manim Community v0.20.1](#tips-manim-community-v0-20-1)
- [graph - Manim Community v0.20.1](#graph-manim-community-v0-20-1)
- [number_line - Manim Community v0.20.1](#number-line-manim-community-v0-20-1)
- [probability - Manim Community v0.20.1](#probability-manim-community-v0-20-1)
- [LinearBase - Manim Community v0.20.1](#linearbase-manim-community-v0-20-1)
- [BraceBetweenPoints - Manim Community v0.20.1](#bracebetweenpoints-manim-community-v0-20-1)
- [DecimalMatrix - Manim Community v0.20.1](#decimalmatrix-manim-community-v0-20-1)
- [logo - Manim Community v0.20.1](#logo-manim-community-v0-20-1)
- [svg - Manim Community v0.20.1](#svg-manim-community-v0-20-1)
- [Exclusion - Manim Community v0.20.1](#exclusion-manim-community-v0-20-1)
- [Intersection - Manim Community v0.20.1](#intersection-manim-community-v0-20-1)
- [Ellipse - Manim Community v0.20.1](#ellipse-manim-community-v0-20-1)
- [Label - Manim Community v0.20.1](#label-manim-community-v0-20-1)
- [DoubleArrow - Manim Community v0.20.1](#doublearrow-manim-community-v0-20-1)
- [DashedLine - Manim Community v0.20.1](#dashedline-manim-community-v0-20-1)
- [ConvexHull - Manim Community v0.20.1](#convexhull-manim-community-v0-20-1)
- [TangentLine - Manim Community v0.20.1](#tangentline-manim-community-v0-20-1)
- [Cutout - Manim Community v0.20.1](#cutout-manim-community-v0-20-1)
- [Rectangle - Manim Community v0.20.1](#rectangle-manim-community-v0-20-1)
- [SurroundingRectangle - Manim Community v0.20.1](#surroundingrectangle-manim-community-v0-20-1)
- [SampleSpace - Manim Community v0.20.1](#samplespace-manim-community-v0-20-1)
- [FunctionGraph - Manim Community v0.20.1](#functiongraph-manim-community-v0-20-1)
- [matrix - Manim Community v0.20.1](#matrix-manim-community-v0-20-1)
- [MobjectMatrix - Manim Community v0.20.1](#mobjectmatrix-manim-community-v0-20-1)
- [mobject - Manim Community v0.20.1](#mobject-manim-community-v0-20-1)
- [TangentialArc - Manim Community v0.20.1](#tangentialarc-manim-community-v0-20-1)
- [TipableVMobject - Manim Community v0.20.1](#tipablevmobject-manim-community-v0-20-1)
- [Polygram - Manim Community v0.20.1](#polygram-manim-community-v0-20-1)
- [NumberPlane - Manim Community v0.20.1](#numberplane-manim-community-v0-20-1)
- [Line - Manim Community v0.20.1](#line-manim-community-v0-20-1)
- [ComplexPlane - Manim Community v0.20.1](#complexplane-manim-community-v0-20-1)
- [PolarPlane - Manim Community v0.20.1](#polarplane-manim-community-v0-20-1)
- [Brace - Manim Community v0.20.1](#brace-manim-community-v0-20-1)
- [ImplicitFunction - Manim Community v0.20.1](#implicitfunction-manim-community-v0-20-1)
- [LabeledLine - Manim Community v0.20.1](#labeledline-manim-community-v0-20-1)
- [RightAngle - Manim Community v0.20.1](#rightangle-manim-community-v0-20-1)
- [Vector - Manim Community v0.20.1](#vector-manim-community-v0-20-1)
- [BackgroundRectangle - Manim Community v0.20.1](#backgroundrectangle-manim-community-v0-20-1)
- [ParametricFunction - Manim Community v0.20.1](#parametricfunction-manim-community-v0-20-1)
- [ManimBanner - Manim Community v0.20.1](#manimbanner-manim-community-v0-20-1)
- [ArcBrace - Manim Community v0.20.1](#arcbrace-manim-community-v0-20-1)
- [LabeledPolygram - Manim Community v0.20.1](#labeledpolygram-manim-community-v0-20-1)
- [Arrow - Manim Community v0.20.1](#arrow-manim-community-v0-20-1)
- [ArrowTip - Manim Community v0.20.1](#arrowtip-manim-community-v0-20-1)
- [BarChart - Manim Community v0.20.1](#barchart-manim-community-v0-20-1)
- [ThreeDAxes - Manim Community v0.20.1](#threedaxes-manim-community-v0-20-1)
- [DiGraph - Manim Community v0.20.1](#digraph-manim-community-v0-20-1)
- [LayoutFunction - Manim Community v0.20.1](#layoutfunction-manim-community-v0-20-1)
- [GenericGraph - Manim Community v0.20.1](#genericgraph-manim-community-v0-20-1)
- [Axes - Manim Community v0.20.1](#axes-manim-community-v0-20-1)
- [Angle - Manim Community v0.20.1](#angle-manim-community-v0-20-1)
- [Matrix - Manim Community v0.20.1](#matrix-manim-community-v0-20-1)
- [NumberLine - Manim Community v0.20.1](#numberline-manim-community-v0-20-1)
- [Graph - Manim Community v0.20.1](#graph-manim-community-v0-20-1)
- [CoordinateSystem - Manim Community v0.20.1](#coordinatesystem-manim-community-v0-20-1)
- [Mobject - Manim Community v0.20.1](#mobject-manim-community-v0-20-1)
- [v0.4.0 - Manim Community v0.20.1](#v0-4-0-manim-community-v0-20-1)
- [v0.6.0 - Manim Community v0.20.1](#v0-6-0-manim-community-v0-20-1)
- [Adding Admonitions - Manim Community v0.20.1](#adding-admonitions-manim-community-v0-20-1)
- [v0.7.0 - Manim Community v0.20.1](#v0-7-0-manim-community-v0-20-1)
- [v0.5.0 - Manim Community v0.20.1](#v0-5-0-manim-community-v0-20-1)
- [SetupMetadata - Manim Community v0.20.1](#setupmetadata-manim-community-v0-20-1)
- [v0.13.1 - Manim Community v0.20.1](#v0-13-1-manim-community-v0-20-1)
- [SkipManimNode - Manim Community v0.20.1](#skipmanimnode-manim-community-v0-20-1)
- [v0.20.1 - Manim Community v0.20.1](#v0-20-1-manim-community-v0-20-1)
- [v0.20.0 - Manim Community v0.20.1](#v0-20-0-manim-community-v0-20-1)
- [v0.13.0 - Manim Community v0.20.1](#v0-13-0-manim-community-v0-20-1)
- [module_parsing - Manim Community v0.20.1](#module-parsing-manim-community-v0-20-1)
- [hashing - Manim Community v0.20.1](#hashing-manim-community-v0-20-1)
- [v0.19.2 - Manim Community v0.20.1](#v0-19-2-manim-community-v0-20-1)
- [v0.19.1 - Manim Community v0.20.1](#v0-19-1-manim-community-v0-20-1)
- [images - Manim Community v0.20.1](#images-manim-community-v0-20-1)
- [ipython_magic - Manim Community v0.20.1](#ipython-magic-manim-community-v0-20-1)
- [v0.18.0 - Manim Community v0.20.1](#v0-18-0-manim-community-v0-20-1)
- [iterables - Manim Community v0.20.1](#iterables-manim-community-v0-20-1)
- [v0.17.2 - Manim Community v0.20.1](#v0-17-2-manim-community-v0-20-1)
- [RateFunction - Manim Community v0.20.1](#ratefunction-manim-community-v0-20-1)
- [v0.17.1 - Manim Community v0.20.1](#v0-17-1-manim-community-v0-20-1)
- [Comparable - Manim Community v0.20.1](#comparable-manim-community-v0-20-1)
- [v0.10.0 - Manim Community v0.20.1](#v0-10-0-manim-community-v0-20-1)
- [sounds - Manim Community v0.20.1](#sounds-manim-community-v0-20-1)
- [testing - Manim Community v0.20.1](#testing-manim-community-v0-20-1)
- [space_ops - Manim Community v0.20.1](#space-ops-manim-community-v0-20-1)
- [_frames_testers - Manim Community v0.20.1](#-frames-testers-manim-community-v0-20-1)
- [_show_diff - Manim Community v0.20.1](#-show-diff-manim-community-v0-20-1)
- [v0.18.0.post0 - Manim Community v0.20.1](#v0-18-0-post0-manim-community-v0-20-1)
- [ManimMagic - Manim Community v0.20.1](#manimmagic-manim-community-v0-20-1)
- [v0.17.3 - Manim Community v0.20.1](#v0-17-3-manim-community-v0-20-1)
- [paths - Manim Community v0.20.1](#paths-manim-community-v0-20-1)
- [rate_functions - Manim Community v0.20.1](#rate-functions-manim-community-v0-20-1)
- [simple_functions - Manim Community v0.20.1](#simple-functions-manim-community-v0-20-1)
- [v0.17.0 - Manim Community v0.20.1](#v0-17-0-manim-community-v0-20-1)
- [_test_class_makers - Manim Community v0.20.1](#-test-class-makers-manim-community-v0-20-1)
- [tex - Manim Community v0.20.1](#tex-manim-community-v0-20-1)
- [tex_templates - Manim Community v0.20.1](#tex-templates-manim-community-v0-20-1)
- [Changelog - Manim Community v0.20.1](#changelog-manim-community-v0-20-1)
- [Adding Documentation - Manim Community v0.20.1](#adding-documentation-manim-community-v0-20-1)
- [TexTemplateLibrary - Manim Community v0.20.1](#textemplatelibrary-manim-community-v0-20-1)
- [TexTemplate - Manim Community v0.20.1](#textemplate-manim-community-v0-20-1)
- [tex_file_writing - Manim Community v0.20.1](#tex-file-writing-manim-community-v0-20-1)
- [Improving performance - Manim Community v0.20.1](#improving-performance-manim-community-v0-20-1)
- [v0.14.0 - Manim Community v0.20.1](#v0-14-0-manim-community-v0-20-1)
- [v0.15.2 - Manim Community v0.20.1](#v0-15-2-manim-community-v0-20-1)
- [Choosing Type Hints - Manim Community v0.20.1](#choosing-type-hints-manim-community-v0-20-1)
- [Typing Conventions - Manim Community v0.20.1](#typing-conventions-manim-community-v0-20-1)
- [Adding References - Manim Community v0.20.1](#adding-references-manim-community-v0-20-1)
- [v0.16.0 - Manim Community v0.20.1](#v0-16-0-manim-community-v0-20-1)
- [ManimDirective - Manim Community v0.20.1](#manimdirective-manim-community-v0-20-1)
- [Plugins - Manim Community v0.20.1](#plugins-manim-community-v0-20-1)
- [Adding Tests - Manim Community v0.20.1](#adding-tests-manim-community-v0-20-1)
- [TexFontTemplates - Manim Community v0.20.1](#texfonttemplates-manim-community-v0-20-1)
- [Adding Docstrings - Manim Community v0.20.1](#adding-docstrings-manim-community-v0-20-1)
- [Adding Examples - Manim Community v0.20.1](#adding-examples-manim-community-v0-20-1)
- [typing - Manim Community v0.20.1](#typing-manim-community-v0-20-1)
- [Internationalization - Manim Community v0.20.1](#internationalization-manim-community-v0-20-1)
- [v0.15.1 - Manim Community v0.20.1](#v0-15-1-manim-community-v0-20-1)
- [v0.9.0 - Manim Community v0.20.1](#v0-9-0-manim-community-v0-20-1)
- [v0.8.0 - Manim Community v0.20.1](#v0-8-0-manim-community-v0-20-1)
- [Contributing - Manim Community v0.20.1](#contributing-manim-community-v0-20-1)
- [v0.11.0 - Manim Community v0.20.1](#v0-11-0-manim-community-v0-20-1)
- [v0.1.0 - Manim Community v0.20.1](#v0-1-0-manim-community-v0-20-1)
- [v0.1.1 - Manim Community v0.20.1](#v0-1-1-manim-community-v0-20-1)
- [debug - Manim Community v0.20.1](#debug-manim-community-v0-20-1)
- [v0.12.0 - Manim Community v0.20.1](#v0-12-0-manim-community-v0-20-1)
- [v0.2.0 - Manim Community v0.20.1](#v0-2-0-manim-community-v0-20-1)
- [Manim Development Process - Manim Community v0.20.1](#manim-development-process-manim-community-v0-20-1)
- [v0.15.0 - Manim Community v0.20.1](#v0-15-0-manim-community-v0-20-1)
- [Code of Conduct - Manim Community v0.20.1](#code-of-conduct-manim-community-v0-20-1)
- [v0.18.1 - Manim Community v0.20.1](#v0-18-1-manim-community-v0-20-1)
- [DummySceneFileWriter - Manim Community v0.20.1](#dummyscenefilewriter-manim-community-v0-20-1)
- [v0.3.0 - Manim Community v0.20.1](#v0-3-0-manim-community-v0-20-1)
- [v0.19.0 - Manim Community v0.20.1](#v0-19-0-manim-community-v0-20-1)
- [BraceLabel - Manim Community v0.20.1](#bracelabel-manim-community-v0-20-1)
- [svg_mobject - Manim Community v0.20.1](#svg-mobject-manim-community-v0-20-1)
- [BraceText - Manim Community v0.20.1](#bracetext-manim-community-v0-20-1)
- [VMobjectFromSVGPath - Manim Community v0.20.1](#vmobjectfromsvgpath-manim-community-v0-20-1)
- [SVGMobject - Manim Community v0.20.1](#svgmobject-manim-community-v0-20-1)
- [IntegerTable - Manim Community v0.20.1](#integertable-manim-community-v0-20-1)
- [DecimalTable - Manim Community v0.20.1](#decimaltable-manim-community-v0-20-1)
- [table - Manim Community v0.20.1](#table-manim-community-v0-20-1)
- [text - Manim Community v0.20.1](#text-manim-community-v0-20-1)
- [MathTable - Manim Community v0.20.1](#mathtable-manim-community-v0-20-1)
- [MobjectTable - Manim Community v0.20.1](#mobjecttable-manim-community-v0-20-1)
- [code_mobject - Manim Community v0.20.1](#code-mobject-manim-community-v0-20-1)
- [Code - Manim Community v0.20.1](#code-manim-community-v0-20-1)
- [numbers - Manim Community v0.20.1](#numbers-manim-community-v0-20-1)
- [DecimalNumber - Manim Community v0.20.1](#decimalnumber-manim-community-v0-20-1)
- [tex_mobject - Manim Community v0.20.1](#tex-mobject-manim-community-v0-20-1)
- [Integer - Manim Community v0.20.1](#integer-manim-community-v0-20-1)
- [Variable - Manim Community v0.20.1](#variable-manim-community-v0-20-1)
- [Table - Manim Community v0.20.1](#table-manim-community-v0-20-1)
- [BulletedList - Manim Community v0.20.1](#bulletedlist-manim-community-v0-20-1)
- [MathTexPart - Manim Community v0.20.1](#mathtexpart-manim-community-v0-20-1)
- [Tex - Manim Community v0.20.1](#tex-manim-community-v0-20-1)
- [Title - Manim Community v0.20.1](#title-manim-community-v0-20-1)
- [three_d - Manim Community v0.20.1](#three-d-manim-community-v0-20-1)
- [MathTex - Manim Community v0.20.1](#mathtex-manim-community-v0-20-1)
- [SingleStringMathTex - Manim Community v0.20.1](#singlestringmathtex-manim-community-v0-20-1)
- [Paragraph - Manim Community v0.20.1](#paragraph-manim-community-v0-20-1)
- [three_dimensions - Manim Community v0.20.1](#three-dimensions-manim-community-v0-20-1)
- [Octahedron - Manim Community v0.20.1](#octahedron-manim-community-v0-20-1)
- [Tetrahedron - Manim Community v0.20.1](#tetrahedron-manim-community-v0-20-1)
- [polyhedra - Manim Community v0.20.1](#polyhedra-manim-community-v0-20-1)
- [Icosahedron - Manim Community v0.20.1](#icosahedron-manim-community-v0-20-1)
- [text_mobject - Manim Community v0.20.1](#text-mobject-manim-community-v0-20-1)
- [Dodecahedron - Manim Community v0.20.1](#dodecahedron-manim-community-v0-20-1)
- [Polyhedron - Manim Community v0.20.1](#polyhedron-manim-community-v0-20-1)
- [ConvexHull3D - Manim Community v0.20.1](#convexhull3d-manim-community-v0-20-1)
- [three_d_utils - Manim Community v0.20.1](#three-d-utils-manim-community-v0-20-1)
- [Dot3D - Manim Community v0.20.1](#dot3d-manim-community-v0-20-1)
- [Arrow3D - Manim Community v0.20.1](#arrow3d-manim-community-v0-20-1)
- [ThreeDVMobject - Manim Community v0.20.1](#threedvmobject-manim-community-v0-20-1)
- [Cube - Manim Community v0.20.1](#cube-manim-community-v0-20-1)
- [Prism - Manim Community v0.20.1](#prism-manim-community-v0-20-1)
- [Cylinder - Manim Community v0.20.1](#cylinder-manim-community-v0-20-1)
- [ImageMobjectFromCamera - Manim Community v0.20.1](#imagemobjectfromcamera-manim-community-v0-20-1)
- [Cone - Manim Community v0.20.1](#cone-manim-community-v0-20-1)
- [point_cloud_mobject - Manim Community v0.20.1](#point-cloud-mobject-manim-community-v0-20-1)
- [image_mobject - Manim Community v0.20.1](#image-mobject-manim-community-v0-20-1)
- [types - Manim Community v0.20.1](#types-manim-community-v0-20-1)
- [Torus - Manim Community v0.20.1](#torus-manim-community-v0-20-1)
- [Sphere - Manim Community v0.20.1](#sphere-manim-community-v0-20-1)
- [Line3D - Manim Community v0.20.1](#line3d-manim-community-v0-20-1)
- [Mobject1D - Manim Community v0.20.1](#mobject1d-manim-community-v0-20-1)
- [PGroup - Manim Community v0.20.1](#pgroup-manim-community-v0-20-1)
- [Mobject2D - Manim Community v0.20.1](#mobject2d-manim-community-v0-20-1)
- [AbstractImageMobject - Manim Community v0.20.1](#abstractimagemobject-manim-community-v0-20-1)
- [vectorized_mobject - Manim Community v0.20.1](#vectorized-mobject-manim-community-v0-20-1)
- [Point - Manim Community v0.20.1](#point-manim-community-v0-20-1)
- [Text - Manim Community v0.20.1](#text-manim-community-v0-20-1)
- [ImageMobject - Manim Community v0.20.1](#imagemobject-manim-community-v0-20-1)
- [PointCloudDot - Manim Community v0.20.1](#pointclouddot-manim-community-v0-20-1)
- [Surface - Manim Community v0.20.1](#surface-manim-community-v0-20-1)
- [utils - Manim Community v0.20.1](#utils-manim-community-v0-20-1)
- [value_tracker - Manim Community v0.20.1](#value-tracker-manim-community-v0-20-1)
- [DashedVMobject - Manim Community v0.20.1](#dashedvmobject-manim-community-v0-20-1)
- [CurvesAsSubmobjects - Manim Community v0.20.1](#curvesassubmobjects-manim-community-v0-20-1)
- [VectorizedPoint - Manim Community v0.20.1](#vectorizedpoint-manim-community-v0-20-1)
- [PMobject - Manim Community v0.20.1](#pmobject-manim-community-v0-20-1)
- [VGroup - Manim Community v0.20.1](#vgroup-manim-community-v0-20-1)
- [vector_field - Manim Community v0.20.1](#vector-field-manim-community-v0-20-1)
---
# Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/index.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/index.rst "Edit this page")
Manim Community Edition[¶](https://docs.manim.community/en/stable/#manim-community-edition "Link to this heading")
===================================================================================================================
Animating technical concepts is traditionally pretty tedious since it can be difficult to make the animations precise enough to convey them accurately. Manim relies on Python’s simplicity to generate animations programmatically, making it convenient to specify exactly how each one should run. Take a look at the [Example Gallery](https://docs.manim.community/en/stable/examples.html)
for some inspiration on how to create beautiful images and videos with Manim.
First Steps[¶](https://docs.manim.community/en/stable/#first-steps "Link to this heading")
-------------------------------------------------------------------------------------------
Are you new to Manim and are looking for where to get started? Then you are in the right place!
Note
Please be aware that there are different, incompatible versions of Manim available. This version, the Community Edition of Manim ([ManimCE](https://github.com/ManimCommunity/manim)
), is a separate project maintained by the community, but it was forked from [3b1b/manim](https://github.com/3b1b/manim)
, the original Manim created and open-sourced by Grant Sanderson, creator of [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw)
educational math videos. Check our [installation FAQ](https://docs.manim.community/en/stable/faq/installation.html#different-versions)
to learn more!
* The [Installation](https://docs.manim.community/en/stable/installation.html)
section has the latest and up-to-date installation instructions for Windows, macOS, and Linux. You can also find information on Manim’s docker images and (online) notebook environments there.
* Want to try the library before installing it? Take a look at our interactive online playground at [https://try.manim.community](https://try.manim.community/)
in the form of a Jupyter notebook.
* In our [Tutorials](https://docs.manim.community/en/stable/tutorials/index.html)
section you will find a collection of resources that will teach you how to use Manim. In particular, the [Quickstart](https://docs.manim.community/en/stable/tutorials/quickstart.html)
tutorial teaches you Manim’s basics, and in [Manim’s building blocks](https://docs.manim.community/en/stable/tutorials/building_blocks.html)
the classes used to compose your animations are described in more detail.
Finding Help[¶](https://docs.manim.community/en/stable/#finding-help "Link to this heading")
---------------------------------------------------------------------------------------------
Are you struggling with installing or using Manim? Don’t worry, we’ve all been there. Here are some good resources to help you out:
* Perhaps your problem is one that occurs frequently, then chances are it is addressed in our [collection of FAQs](https://docs.manim.community/en/stable/faq/index.html)
.
* If you are looking for information on some specific class, look for it in the [reference manual](https://docs.manim.community/en/stable/reference.html)
and/or use the search feature of the documentation.
* Still no luck? Then you are welcome to ask the community for help, together we usually manage to find a solution for your problem! Consult the [FAQ page on getting help](https://docs.manim.community/en/stable/faq/help.html)
for instructions.
Navigating the Documentation[¶](https://docs.manim.community/en/stable/#navigating-the-documentation "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
Here are some short summaries for all of the sections in this documentation:
* The [Example Gallery](https://docs.manim.community/en/stable/examples.html)
is a collection of examples (rendered videos and images together with the code they were generated from) that show a few different, simple things that you can do with Manim.
* The [Installation](https://docs.manim.community/en/stable/installation.html)
section has information on installing Manim.
* In [Tutorials & Guides](https://docs.manim.community/en/stable/tutorials_guides.html)
you can find learning resources: proper tutorials that guide you through the process of creating a video are in the [Tutorial](https://docs.manim.community/en/stable/tutorials/index.html)
section; guides on specific topics are in the [Guides](https://docs.manim.community/en/stable/guides/index.html)
section, and the answers to frequently asked questions can be found in the [FAQ](https://docs.manim.community/en/stable/faq/index.html)
section.
* The [Reference Manual](https://docs.manim.community/en/stable/reference.html)
contains a comprehensive list of all of Manim’s (documented) modules, classes, and functions. If you are somewhat familiar with Manim’s module structure, feel free to browse the manual directly. If you are searching for something specific, feel free to use the documentation’s search feature in the sidebar. Many classes and methods come with their own illustrated examples too!
* The [Plugins](https://docs.manim.community/en/stable/plugins.html)
page documents how to install, write, and distribute plugins (that is, separate Python packages that extend the feature set of the core library).
* Changes between versions are documented in our [Changelog](https://docs.manim.community/en/stable/changelog.html)
.
* If you are looking into contributing to the development of Manim, you can find information on how to get involved in our [Contributing](https://docs.manim.community/en/stable/contributing.html)
section.
* And finally, the [Code of Conduct](https://docs.manim.community/en/stable/conduct.html)
page has a formal description of the rules you should abide by when interacting within our community.
Sharing Your Work[¶](https://docs.manim.community/en/stable/#sharing-your-work "Link to this heading")
-------------------------------------------------------------------------------------------------------
We’d love to hear from you and see your manimations [on Twitter](https://twitter.com/manim_community)
, [Reddit](https://www.reddit.com/r/manim/)
, or [Discord](https://www.manim.community/discord/)
. If you’re using Manim in a scientific context, instructions on how to cite a particular release can be found [in our README](https://github.com/ManimCommunity/manim/blob/main/README.md)
.
License Information[¶](https://docs.manim.community/en/stable/#license-information "Link to this heading")
-----------------------------------------------------------------------------------------------------------
Manim is an open-source library licensed under the **MIT License**, which applies to both the original and the community editions of the software. This means you are free to use, modify, and distribute the code in accordance with the MIT License terms. However, there are some additional points to be aware of:
* **Copyrighted Assets:** Specific assets, such as the “Pi creatures” in Grant Sanderson’s (3Blue1Brown) videos, are copyrighted and protected. Please avoid using these characters in any derivative works.
* **Content Creation and Sharing:** Videos and animations created with Manim can be freely shared, and no attribution to Manim is required—although it is much appreciated! You are encouraged to showcase your work online and share it with the Manim community.
Index[¶](https://docs.manim.community/en/stable/#index "Link to this heading")
-------------------------------------------------------------------------------
* [Example Gallery](https://docs.manim.community/en/stable/examples.html)
* [Basic Concepts](https://docs.manim.community/en/stable/examples.html#basic-concepts)
* [Animations](https://docs.manim.community/en/stable/examples.html#animations)
* [Plotting with Manim](https://docs.manim.community/en/stable/examples.html#plotting-with-manim)
* [Special Camera Settings](https://docs.manim.community/en/stable/examples.html#special-camera-settings)
* [Advanced Projects](https://docs.manim.community/en/stable/examples.html#advanced-projects)
* [Installation](https://docs.manim.community/en/stable/installation.html)
* [Installing Manim locally via pip](https://docs.manim.community/en/stable/installation.html#installing-manim-locally-via-pip)
* [Installing Manim via Conda and related environment managers](https://docs.manim.community/en/stable/installation.html#installing-manim-via-conda-and-related-environment-managers)
* [Using Manim via Docker](https://docs.manim.community/en/stable/installation.html#using-manim-via-docker)
* [Interactive Jupyter notebooks for your browser](https://docs.manim.community/en/stable/installation.html#interactive-jupyter-notebooks-for-your-browser)
* [Editors](https://docs.manim.community/en/stable/installation.html#editors)
* [Installation for developers](https://docs.manim.community/en/stable/installation.html#installation-for-developers)
* [Tutorials & Guides](https://docs.manim.community/en/stable/tutorials_guides.html)
* [Tutorials](https://docs.manim.community/en/stable/tutorials/index.html)
* [Thematic Guides](https://docs.manim.community/en/stable/guides/index.html)
* [Frequently Asked Questions](https://docs.manim.community/en/stable/faq/index.html)
* [Reference Manual](https://docs.manim.community/en/stable/reference.html)
* [Inheritance Graphs](https://docs.manim.community/en/stable/reference.html#inheritance-graphs)
* [Module Index](https://docs.manim.community/en/stable/reference.html#module-index)
* [Plugins](https://docs.manim.community/en/stable/plugins.html)
* [Installing Plugins](https://docs.manim.community/en/stable/plugins.html#installing-plugins)
* [Using Plugins in Projects](https://docs.manim.community/en/stable/plugins.html#using-plugins-in-projects)
* [Creating Plugins](https://docs.manim.community/en/stable/plugins.html#creating-plugins)
* [Changelog](https://docs.manim.community/en/stable/changelog.html)
* [v0.20.1](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html)
* [v0.20.0](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html)
* [v0.19.2](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html)
* [v0.19.1](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html)
* [v0.19.0](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html)
* [v0.18.1](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html)
* [v0.18.0.post0](https://docs.manim.community/en/stable/changelog/0.18.0.post0-changelog.html)
* [v0.18.0](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html)
* [v0.17.3](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html)
* [v0.17.2](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html)
* [v0.17.1](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html)
* [v0.17.0](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html)
* [v0.16.0](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html)
* [v0.15.2](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html)
* [v0.15.1](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html)
* [v0.15.0](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html)
* [v0.14.0](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html)
* [v0.13.1](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html)
* [v0.13.0](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html)
* [v0.12.0](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html)
* [v0.11.0](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html)
* [v0.10.0](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html)
* [v0.9.0](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html)
* [v0.8.0](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html)
* [v0.7.0](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html)
* [v0.6.0](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html)
* [v0.5.0](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html)
* [v0.4.0](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html)
* [v0.3.0](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html)
* [v0.2.0](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html)
* [v0.1.1](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html)
* [v0.1.0](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html)
* [Contributing](https://docs.manim.community/en/stable/contributing.html)
* [Manim Development Process](https://docs.manim.community/en/stable/contributing/development.html)
* [Adding Documentation](https://docs.manim.community/en/stable/contributing/docs.html)
* [Adding Tests](https://docs.manim.community/en/stable/contributing/testing.html)
* [Improving performance](https://docs.manim.community/en/stable/contributing/performance.html)
* [Internationalization](https://docs.manim.community/en/stable/contributing/internationalization.html)
* [Code of Conduct](https://docs.manim.community/en/stable/conduct.html)
* [Purpose](https://docs.manim.community/en/stable/conduct.html#purpose)
* [Our Community](https://docs.manim.community/en/stable/conduct.html#our-community)
* [Our Standards](https://docs.manim.community/en/stable/conduct.html#our-standards)
* [Inappropriate Behavior](https://docs.manim.community/en/stable/conduct.html#inappropriate-behavior)
* [Manim Community Online Spaces](https://docs.manim.community/en/stable/conduct.html#manim-community-online-spaces)
* [Consequences](https://docs.manim.community/en/stable/conduct.html#consequences)
* [Contact Information](https://docs.manim.community/en/stable/conduct.html#contact-information)
* [Enforcement Procedures](https://docs.manim.community/en/stable/conduct.html#enforcement-procedures)
* [License](https://docs.manim.community/en/stable/conduct.html#license)
* [Attributions](https://docs.manim.community/en/stable/conduct.html#attributions)
[](https://translate.manim.community/)
[**Boost your mobile app security.** Research shows testing and protection must work together. **Learn more.**](https://server.ethicalads.io/proxy/click/10421/019ed5d0-bb40-7200-a213-58374e83869f/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/topics/data-science/?ref=ea-text)
Close Ad

---
# brace - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.rst "Edit this page")
brace[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.html#module-manim.mobject.svg.brace "Link to this heading")
==============================================================================================================================================
Mobject representing curly braces.
Classes
| | |
| --- | --- |
| [`ArcBrace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "manim.mobject.svg.brace.ArcBrace") | Creates a [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
that wraps around an [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
. |
| [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace") | Takes a mobject and draws a brace adjacent to it. |
| [`BraceBetweenPoints`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#manim.mobject.svg.brace.BraceBetweenPoints "manim.mobject.svg.brace.BraceBetweenPoints") | Similar to Brace, but instead of taking a mobject it uses 2 points to place the brace. |
| [`BraceLabel`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel "manim.mobject.svg.brace.BraceLabel") | Create a brace with a label attached. |
| [`BraceText`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#manim.mobject.svg.brace.BraceText "manim.mobject.svg.brace.BraceText") | Create a brace with a text label attached. |
---
# Sector - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.arc.Sector.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.arc.Sector.rst "Edit this page")
Sector[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#sector "Link to this heading")
=================================================================================================================================
Qualified name: `manim.mobject.geometry.arc.Sector`
class Sector(_radius\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#Sector)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#manim.mobject.geometry.arc.Sector "Link to this definition")
Bases: [`AnnularSector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.AnnularSector.html#manim.mobject.geometry.arc.AnnularSector "manim.mobject.geometry.arc.AnnularSector")
A sector of a circle.
Examples
Example: ExampleSector [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#examplesector)

from manim import \*
class ExampleSector(Scene):
def construct(self):
sector \= Sector(radius\=2)
sector2 \= Sector(radius\=2.5, angle\=60\*DEGREES).move\_to(\[\-3, 0, 0\])
sector.set\_color(RED)
sector2.set\_color(PINK)
self.add(sector, sector2)
class ExampleSector(Scene):
def construct(self):
sector = Sector(radius=2)
sector2 = Sector(radius=2.5, angle=60\*DEGREES).move\_to(\[-3, 0, 0\])
sector.set\_color(RED)
sector2.set\_color(PINK)
self.add(sector, sector2)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **radius** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_radius\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#manim.mobject.geometry.arc.Sector._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **radius** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# Difference - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Difference.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Difference.rst "Edit this page")
Difference[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#difference "Link to this heading")
=====================================================================================================================================================
Qualified name: `manim.mobject.geometry.boolean\_ops.Difference`
class Difference(_subject_, _clip_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/boolean_ops.html#Difference)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#manim.mobject.geometry.boolean_ops.Difference "Link to this definition")
Bases: `_BooleanOps`
Subtracts one [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
from another one.
Parameters:
* **subject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The 1st [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
* **clip** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The 2nd [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
* **kwargs** (_Any_)
Example
Example: DifferenceExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#differenceexample)

from manim import \*
class DifferenceExample(Scene):
def construct(self):
sq \= Square(color\=RED, fill\_opacity\=1)
sq.move\_to(\[\-2, 0, 0\])
cr \= Circle(color\=BLUE, fill\_opacity\=1)
cr.move\_to(\[\-1.3, 0.7, 0\])
un \= Difference(sq, cr, color\=GREEN, fill\_opacity\=1)
un.move\_to(\[1.5, 0, 0\])
self.add(sq, cr, un)
class DifferenceExample(Scene):
def construct(self):
sq = Square(color=RED, fill\_opacity=1)
sq.move\_to(\[-2, 0, 0\])
cr = Circle(color=BLUE, fill\_opacity=1)
cr.move\_to(\[-1.3, 0.7, 0\])
un = Difference(sq, cr, color=GREEN, fill\_opacity=1)
un.move\_to(\[1.5, 0, 0\])
self.add(sq, cr, un)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_subject_, _clip_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#manim.mobject.geometry.boolean_ops.Difference._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **subject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **clip** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **kwargs** (_Any_)
Return type:
None
---
# Union - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Union.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Union.rst "Edit this page")
Union[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#union "Link to this heading")
======================================================================================================================================
Qualified name: `manim.mobject.geometry.boolean\_ops.Union`
class Union(_\*vmobjects_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/boolean_ops.html#Union)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "Link to this definition")
Bases: `_BooleanOps`
Union of two or more [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s. This returns the common region of the `VMobject` s.
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s to find the union of.
* **kwargs** (_Any_)
Raises:
**ValueError** – If less than 2 [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s are passed.
Example
Example: UnionExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#unionexample)

from manim import \*
class UnionExample(Scene):
def construct(self):
sq \= Square(color\=RED, fill\_opacity\=1)
sq.move\_to(\[\-2, 0, 0\])
cr \= Circle(color\=BLUE, fill\_opacity\=1)
cr.move\_to(\[\-1.3, 0.7, 0\])
un \= Union(sq, cr, color\=GREEN, fill\_opacity\=1)
un.move\_to(\[1.5, 0.3, 0\])
self.add(sq, cr, un)
class UnionExample(Scene):
def construct(self):
sq = Square(color=RED, fill\_opacity=1)
sq.move\_to(\[-2, 0, 0\])
cr = Circle(color=BLUE, fill\_opacity=1)
cr.move\_to(\[-1.3, 0.7, 0\])
un = Union(sq, cr, color=GREEN, fill\_opacity=1)
un.move\_to(\[1.5, 0.3, 0\])
self.add(sq, cr, un)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*vmobjects_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **kwargs** (_Any_)
Return type:
None
---
# labeled - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.labeled.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.labeled.rst "Edit this page")
labeled[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.html#module-manim.mobject.geometry.labeled "Link to this heading")
==============================================================================================================================================================
Mobjects that inherit from lines and contain a label along the length.
Classes
| | |
| --- | --- |
| [`Label`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#manim.mobject.geometry.labeled.Label "manim.mobject.geometry.labeled.Label") | A Label consisting of text surrounded by a frame. |
| [`LabeledArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#manim.mobject.geometry.labeled.LabeledArrow "manim.mobject.geometry.labeled.LabeledArrow") | Constructs an arrow containing a label box somewhere along its length. |
| [`LabeledLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine "manim.mobject.geometry.labeled.LabeledLine") | Constructs a line containing a label box somewhere along its length. |
| [`LabeledPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#manim.mobject.geometry.labeled.LabeledPolygram "manim.mobject.geometry.labeled.LabeledPolygram") | Constructs a polygram containing a label box at its pole of inaccessibility. |
---
# LabeledArrow - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledArrow.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledArrow.rst "Edit this page")
LabeledArrow[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#labeledarrow "Link to this heading")
=======================================================================================================================================================
Qualified name: `manim.mobject.geometry.labeled.LabeledArrow`
class LabeledArrow(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/labeled.html#LabeledArrow)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#manim.mobject.geometry.labeled.LabeledArrow "Link to this definition")
Bases: [`LabeledLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine "manim.mobject.geometry.labeled.LabeledLine")
, [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
Constructs an arrow containing a label box somewhere along its length. This class inherits its label properties from LabeledLine, so the main parameters controlling it are the same.
Parameters:
* **label** – Label that will be displayed on the Arrow.
* **label\_position** – A ratio in the range \[0-1\] to indicate the position of the label with respect to the length of the line. Default value is 0.5.
* **label\_config** – A dictionary containing the configuration for the label. This is only applied if `label` is of type `str`.
* **box\_config** – A dictionary containing the configuration for the background box.
* **frame\_config** –
A dictionary containing the configuration for the frame.
See also
[`LabeledLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine "manim.mobject.geometry.labeled.LabeledLine")
* **args** (_Any_)
* **kwargs** (_Any_)
Examples
Example: LabeledArrowExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#labeledarrowexample)

from manim import \*
class LabeledArrowExample(Scene):
def construct(self):
l\_arrow \= LabeledArrow("0.5", start\=LEFT\*3, end\=RIGHT\*3 + UP\*2, label\_position\=0.5)
self.add(l\_arrow)
class LabeledArrowExample(Scene):
def construct(self):
l\_arrow = LabeledArrow("0.5", start=LEFT\*3, end=RIGHT\*3 + UP\*2, label\_position=0.5)
self.add(l\_arrow)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*args_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#manim.mobject.geometry.labeled.LabeledArrow._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **args** (_Any_)
* **kwargs** (_Any_)
Return type:
None
---
# line - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.rst "Edit this page")
line[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#module-manim.mobject.geometry.line "Link to this heading")
=====================================================================================================================================================
Mobjects that are lines or variations of them.
Type Aliases
class AngleQuadrant[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#manim.mobject.geometry.line.AngleQuadrant "Link to this definition")
tuple\[Literal\[\-1, 1\], Literal\[\-1, 1\]\]
Classes
| | |
| --- | --- |
| [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle") | A circular arc or elbow-type mobject representing an angle of two lines. |
| [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow") | An arrow. |
| [`DashedLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "manim.mobject.geometry.line.DashedLine") | A dashed [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
. |
| [`DoubleArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#manim.mobject.geometry.line.DoubleArrow "manim.mobject.geometry.line.DoubleArrow") | An arrow with tips on both ends. |
| [`Elbow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#manim.mobject.geometry.line.Elbow "manim.mobject.geometry.line.Elbow") | Two lines that create a right angle about each other: L-shape. |
| [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line") | A straight or curved line segment between two points or mobjects. |
| [`RightAngle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "manim.mobject.geometry.line.RightAngle") | An elbow-type mobject representing a right angle between two lines. |
| [`TangentLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#manim.mobject.geometry.line.TangentLine "manim.mobject.geometry.line.TangentLine") | Constructs a line tangent to a [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
at a specific point. |
| [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector") | A vector specialized for use in graphs. |
---
# Elbow - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.Elbow.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.Elbow.rst "Edit this page")
Elbow[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#elbow "Link to this heading")
===============================================================================================================================
Qualified name: `manim.mobject.geometry.line.Elbow`
class Elbow(_width\=0.2_, _angle\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Elbow)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#manim.mobject.geometry.line.Elbow "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Two lines that create a right angle about each other: L-shape.
Parameters:
* **width** (_float_) – The length of the elbow’s sides.
* **angle** (_float_) – The rotation of the elbow.
* **kwargs** (_Any_) – Additional arguments to be passed to [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
* **seealso::** (_.._) – [`RightAngle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "manim.mobject.geometry.line.RightAngle")
Examples
Example: ElbowExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#elbowexample)

from manim import \*
class ElbowExample(Scene):
def construct(self):
elbow\_1 \= Elbow()
elbow\_2 \= Elbow(width\=2.0)
elbow\_3 \= Elbow(width\=2.0, angle\=5\*PI/4)
elbow\_group \= Group(elbow\_1, elbow\_2, elbow\_3).arrange(buff\=1)
self.add(elbow\_group)
class ElbowExample(Scene):
def construct(self):
elbow\_1 = Elbow()
elbow\_2 = Elbow(width=2.0)
elbow\_3 = Elbow(width=2.0, angle=5\*PI/4)
elbow\_group = Group(elbow\_1, elbow\_2, elbow\_3).arrange(buff=1)
self.add(elbow\_group)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_width\=0.2_, _angle\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#manim.mobject.geometry.line.Elbow._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **width** (_float_)
* **angle** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# Polygon - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Polygon.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Polygon.rst "Edit this page")
Polygon[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#polygon "Link to this heading")
=========================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Polygon`
class Polygon(_\*vertices_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Polygon)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "Link to this definition")
Bases: [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
A shape consisting of one closed loop of vertices.
Parameters:
* **vertices** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The vertices of the [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: PolygonExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#polygonexample)

from manim import \*
class PolygonExample(Scene):
def construct(self):
isosceles \= Polygon(\[\-5, 1.5, 0\], \[\-2, 1.5, 0\], \[\-3.5, \-2, 0\])
position\_list \= \[\
\[4, 1, 0\], \# middle right\
\[4, \-2.5, 0\], \# bottom right\
\[0, \-2.5, 0\], \# bottom left\
\[0, 3, 0\], \# top left\
\[2, 1, 0\], \# middle\
\[4, 3, 0\], \# top right\
\]
square\_and\_triangles \= Polygon(\*position\_list, color\=PURPLE\_B)
self.add(isosceles, square\_and\_triangles)
class PolygonExample(Scene):
def construct(self):
isosceles = Polygon(\[-5, 1.5, 0\], \[-2, 1.5, 0\], \[-3.5, -2, 0\])
position\_list = \[\
\[4, 1, 0\], # middle right\
\[4, -2.5, 0\], # bottom right\
\[0, -2.5, 0\], # bottom left\
\[0, 3, 0\], # top left\
\[2, 1, 0\], # middle\
\[4, 3, 0\], # top right\
\]
square\_and\_triangles = Polygon(\*position\_list, color=PURPLE\_B)
self.add(isosceles, square\_and\_triangles)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*vertices_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertices** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **kwargs** (_Any_)
Return type:
None
---
# RegularPolygram - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.RegularPolygram.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.RegularPolygram.rst "Edit this page")
RegularPolygram[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#regularpolygram "Link to this heading")
=================================================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.RegularPolygram`
class RegularPolygram(_num\_vertices_, _\*_, _density\=2_, _radius\=1_, _start\_angle\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#RegularPolygram)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "Link to this definition")
Bases: [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
A [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
with regularly spaced vertices.
Parameters:
* **num\_vertices** (_int_) – The number of vertices.
* **density** (_int_) –
The density of the [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
.
Can be thought of as how many vertices to hop to draw a line between them. Every `density`\-th vertex is connected.
* **radius** (_float_) – The radius of the circle that the vertices are placed on.
* **start\_angle** (_float_ _|_ _None_) – The angle the vertices start at; the rotation of the [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: RegularPolygramExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#regularpolygramexample)

from manim import \*
class RegularPolygramExample(Scene):
def construct(self):
pentagram \= RegularPolygram(5, radius\=2)
self.add(pentagram)
class RegularPolygramExample(Scene):
def construct(self):
pentagram = RegularPolygram(5, radius=2)
self.add(pentagram)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_num\_vertices_, _\*_, _density\=2_, _radius\=1_, _start\_angle\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **num\_vertices** (_int_)
* **density** (_int_)
* **radius** (_float_)
* **start\_angle** (_float_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# RoundedRectangle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.RoundedRectangle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.RoundedRectangle.rst "Edit this page")
RoundedRectangle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#roundedrectangle "Link to this heading")
====================================================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.RoundedRectangle`
class RoundedRectangle(_corner\_radius\=0.5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#RoundedRectangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#manim.mobject.geometry.polygram.RoundedRectangle "Link to this definition")
Bases: [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
A rectangle with rounded corners.
Parameters:
* **corner\_radius** (_float_ _|_ _list__\[__float__\]_) – The curvature of the corners of the rectangle.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
Examples
Example: RoundedRectangleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#roundedrectangleexample)

from manim import \*
class RoundedRectangleExample(Scene):
def construct(self):
rect\_1 \= RoundedRectangle(corner\_radius\=0.5)
rect\_2 \= RoundedRectangle(corner\_radius\=1.5, height\=4.0, width\=4.0)
rect\_group \= Group(rect\_1, rect\_2).arrange(buff\=1)
self.add(rect\_group)
class RoundedRectangleExample(Scene):
def construct(self):
rect\_1 = RoundedRectangle(corner\_radius=0.5)
rect\_2 = RoundedRectangle(corner\_radius=1.5, height=4.0, width=4.0)
rect\_group = Group(rect\_1, rect\_2).arrange(buff=1)
self.add(rect\_group)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_corner\_radius\=0.5_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#manim.mobject.geometry.polygram.RoundedRectangle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **corner\_radius** (_float_ _|_ _list__\[__float__\]_)
* **kwargs** (_Any_)
---
# Triangle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Triangle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Triangle.rst "Edit this page")
Triangle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#triangle "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Triangle`
class Triangle(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Triangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#manim.mobject.geometry.polygram.Triangle "Link to this definition")
Bases: [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon")
An equilateral triangle.
Parameters:
**kwargs** (_Any_) – Additional arguments to be passed to [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon")
Examples
Example: TriangleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#triangleexample)

from manim import \*
class TriangleExample(Scene):
def construct(self):
triangle\_1 \= Triangle()
triangle\_2 \= Triangle().scale(2).rotate(60\*DEGREES)
tri\_group \= Group(triangle\_1, triangle\_2).arrange(buff\=1)
self.add(tri\_group)
class TriangleExample(Scene):
def construct(self):
triangle\_1 = Triangle()
triangle\_2 = Triangle().scale(2).rotate(60\*DEGREES)
tri\_group = Group(triangle\_1, triangle\_2).arrange(buff=1)
self.add(tri\_group)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#manim.mobject.geometry.polygram.Triangle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
**kwargs** (_Any_)
Return type:
None
---
# Cross - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.shape_matchers.Cross.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.shape_matchers.Cross.rst "Edit this page")
Cross[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#cross "Link to this heading")
=========================================================================================================================================
Qualified name: `manim.mobject.geometry.shape\_matchers.Cross`
class Cross(_mobject\=None_, _stroke\_color\=ManimColor('#FC6255')_, _stroke\_width\=6.0_, _scale\_factor\=1.0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/shape_matchers.html#Cross)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#manim.mobject.geometry.shape_matchers.Cross "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Creates a cross.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _None_) – The mobject linked to this instance. It fits the mobject when specified. Defaults to None.
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – Specifies the color of the cross lines. Defaults to RED.
* **stroke\_width** (_float_) – Specifies the width of the cross lines. Defaults to 6.
* **scale\_factor** (_float_) – Scales the cross to the provided units. Defaults to 1.
* **kwargs** (_Any_)
Examples
Example: ExampleCross [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#examplecross)

from manim import \*
class ExampleCross(Scene):
def construct(self):
cross \= Cross()
self.add(cross)
class ExampleCross(Scene):
def construct(self):
cross = Cross()
self.add(cross)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_mobject\=None_, _stroke\_color\=ManimColor('#FC6255')_, _stroke\_width\=6.0_, _scale\_factor\=1.0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#manim.mobject.geometry.shape_matchers.Cross._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _None_)
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **stroke\_width** (_float_)
* **scale\_factor** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowCircleFilledTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.rst "Edit this page")
ArrowCircleFilledTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#arrowcirclefilledtip "Link to this heading")
============================================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowCircleFilledTip`
class ArrowCircleFilledTip(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowCircleFilledTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#manim.mobject.geometry.tips.ArrowCircleFilledTip "Link to this definition")
Bases: [`ArrowCircleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#manim.mobject.geometry.tips.ArrowCircleTip "manim.mobject.geometry.tips.ArrowCircleTip")
Circular arrow tip with filled tip.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#manim.mobject.geometry.tips.ArrowCircleFilledTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowCircleTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowCircleTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowCircleTip.rst "Edit this page")
ArrowCircleTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#arrowcircletip "Link to this heading")
==========================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowCircleTip`
class ArrowCircleTip(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowCircleTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#manim.mobject.geometry.tips.ArrowCircleTip "Link to this definition")
Bases: [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
, [`Circle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle "manim.mobject.geometry.arc.Circle")
Circular arrow tip.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#manim.mobject.geometry.tips.ArrowCircleTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowSquareFilledTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.rst "Edit this page")
ArrowSquareFilledTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#arrowsquarefilledtip "Link to this heading")
============================================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowSquareFilledTip`
class ArrowSquareFilledTip(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowSquareFilledTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#manim.mobject.geometry.tips.ArrowSquareFilledTip "Link to this definition")
Bases: [`ArrowSquareTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#manim.mobject.geometry.tips.ArrowSquareTip "manim.mobject.geometry.tips.ArrowSquareTip")
Square arrow tip with filled tip.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `side_length` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#manim.mobject.geometry.tips.ArrowSquareFilledTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowSquareTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowSquareTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowSquareTip.rst "Edit this page")
ArrowSquareTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#arrowsquaretip "Link to this heading")
==========================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowSquareTip`
class ArrowSquareTip(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowSquareTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#manim.mobject.geometry.tips.ArrowSquareTip "Link to this definition")
Bases: [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
, [`Square`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square "manim.mobject.geometry.polygram.Square")
Square arrow tip.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `side_length` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#manim.mobject.geometry.tips.ArrowSquareTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowTriangleFilledTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.rst "Edit this page")
ArrowTriangleFilledTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#arrowtrianglefilledtip "Link to this heading")
==================================================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowTriangleFilledTip`
class ArrowTriangleFilledTip(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowTriangleFilledTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip "Link to this definition")
Bases: [`ArrowTriangleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip "manim.mobject.geometry.tips.ArrowTriangleTip")
Triangular arrow tip with filled tip.
This is the default arrow tip shape.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=1_, _stroke\_width\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# ArrowTriangleTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTriangleTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTriangleTip.rst "Edit this page")
ArrowTriangleTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#arrowtriangletip "Link to this heading")
================================================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowTriangleTip`
class ArrowTriangleTip(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _width\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowTriangleTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip "Link to this definition")
Bases: [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
, [`Triangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#manim.mobject.geometry.polygram.Triangle "manim.mobject.geometry.polygram.Triangle")
Triangular arrow tip.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| `length` | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **width** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=0_, _stroke\_width\=3_, _length\=0.35_, _width\=0.35_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **width** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# StealthTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.StealthTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.StealthTip.rst "Edit this page")
StealthTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#stealthtip "Link to this heading")
==============================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.StealthTip`
class StealthTip(_fill\_opacity\=1_, _stroke\_width\=3_, _length\=0.175_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#StealthTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip "Link to this definition")
Bases: [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
‘Stealth’ fighter / kite arrow shape.
Naming is inspired by the corresponding [TikZ arrow shape](https://tikz.dev/tikz-arrows#sec-16.3)
.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `base` | The base point of the arrow tip. |
| `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. |
| [`length`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip.length "manim.mobject.geometry.tips.StealthTip.length") | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `tip_angle` | The angle of the arrow tip. |
| `tip_point` | The tip point of the arrow tip. |
| `vector` | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_opacity\=1_, _stroke\_width\=3_, _length\=0.175_, _start\_angle\=3.141592653589793_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **length** (_float_)
* **start\_angle** (_float_)
* **kwargs** (_Any_)
property length: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip.length "Link to this definition")
The length of the arrow tip.
In this case, the length is computed as the height of the triangle encompassing the stealth tip (otherwise, the tip is scaled too large).
---
# graphing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.rst "Edit this page")
graphing[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.html#module-manim.mobject.graphing "Link to this heading")
===============================================================================================================================================
Coordinate systems and function graphing related mobjects.
Modules[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.html#modules "Link to this heading")
------------------------------------------------------------------------------------------------------------------------
| | |
| --- | --- |
| [`coordinate_systems`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#module-manim.mobject.graphing.coordinate_systems "manim.mobject.graphing.coordinate_systems") | Mobjects that represent coordinate systems. |
| [`functions`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.html#module-manim.mobject.graphing.functions "manim.mobject.graphing.functions") | Mobjects representing function graphs. |
| [`number_line`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.html#module-manim.mobject.graphing.number_line "manim.mobject.graphing.number_line") | Mobject representing a number line. |
| [`probability`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.html#module-manim.mobject.graphing.probability "manim.mobject.graphing.probability") | Mobjects representing objects from probability theory and statistics. |
| [`scale`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.html#module-manim.mobject.graphing.scale "manim.mobject.graphing.scale") | |
---
# coordinate_systems - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.rst "Edit this page")
coordinate\_systems[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#module-manim.mobject.graphing.coordinate_systems "Link to this heading")
================================================================================================================================================================================================
Mobjects that represent coordinate systems.
TypeVar’s
class LineType[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#manim.mobject.graphing.coordinate_systems.LineType "Link to this definition")
TypeVar('LineType', bound\=Line)
Classes
| | |
| --- | --- |
| [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes") | Creates a set of axes. |
| [`ComplexPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane "manim.mobject.graphing.coordinate_systems.ComplexPlane") | A [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
specialized for use with complex numbers. |
| [`CoordinateSystem`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "manim.mobject.graphing.coordinate_systems.CoordinateSystem") | Abstract base class for Axes and NumberPlane. |
| [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane") | Creates a cartesian plane with background lines. |
| [`PolarPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "manim.mobject.graphing.coordinate_systems.PolarPlane") | Creates a polar plane with background lines. |
| [`ThreeDAxes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes") | A 3-dimensional set of axes. |
---
# functions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.functions.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.functions.rst "Edit this page")
functions[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.html#module-manim.mobject.graphing.functions "Link to this heading")
====================================================================================================================================================================
Mobjects representing function graphs.
Classes
| | |
| --- | --- |
| [`FunctionGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#manim.mobject.graphing.functions.FunctionGraph "manim.mobject.graphing.functions.FunctionGraph") | A [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
that spans the length of the scene by default. |
| [`ImplicitFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction "manim.mobject.graphing.functions.ImplicitFunction") | An implicit function. |
| [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction") | A parametric curve. |
---
# UnitInterval - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.number_line.UnitInterval.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.number_line.UnitInterval.rst "Edit this page")
UnitInterval[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#unitinterval "Link to this heading")
===========================================================================================================================================================
Qualified name: `manim.mobject.graphing.number\_line.UnitInterval`
class UnitInterval(_unit\_size\=10_, _numbers\_with\_elongated\_ticks\=None_, _decimal\_number\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#UnitInterval)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#manim.mobject.graphing.number_line.UnitInterval "Link to this definition")
Bases: [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **unit\_size** (_float_)
* **numbers\_with\_elongated\_ticks** (_list__\[__float__\]_ _|_ _None_)
* **decimal\_number\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_unit\_size\=10_, _numbers\_with\_elongated\_ticks\=None_, _decimal\_number\_config\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#manim.mobject.graphing.number_line.UnitInterval._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **unit\_size** (_float_)
* **numbers\_with\_elongated\_ticks** (_list__\[__float__\]_ _|_ _None_)
* **decimal\_number\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
---
# scale - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.scale.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.scale.rst "Edit this page")
scale[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.html#module-manim.mobject.graphing.scale "Link to this heading")
========================================================================================================================================================
Classes
| | |
| --- | --- |
| [`LinearBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase "manim.mobject.graphing.scale.LinearBase") | The default scaling class. |
| [`LogBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase "manim.mobject.graphing.scale.LogBase") | Scale for logarithmic graphs/functions. |
---
# LogBase - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.scale.LogBase.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.scale.LogBase.rst "Edit this page")
LogBase[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#logbase "Link to this heading")
======================================================================================================================================
Qualified name: `manim.mobject.graphing.scale.LogBase`
class LogBase(_base\=10_, _custom\_labels\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LogBase)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase "Link to this definition")
Bases: `_ScaleBase`
Scale for logarithmic graphs/functions.
Parameters:
* **base** (_float_) – The base of the log, by default 10.
* **custom\_labels** (_bool_) – For use with [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
: Whether or not to include `LaTeX` axis labels, by default True.
Examples
func \= ParametricFunction(lambda x: x, scaling\=LogBase(base\=2))
Methods
| | |
| --- | --- |
| [`function`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.function "manim.mobject.graphing.scale.LogBase.function") | Scales the value to fit it to a logarithmic scale.\`\`self.function(5)==10\*\*5\`\` |
| [`get_custom_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.get_custom_labels "manim.mobject.graphing.scale.LogBase.get_custom_labels") | Produces custom [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
labels in the form of `10^2`. |
| [`inverse_function`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.inverse_function "manim.mobject.graphing.scale.LogBase.inverse_function") | Inverse of `function`. |
function(_value_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LogBase.function)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.function "Link to this definition")
Scales the value to fit it to a logarithmic scale.\`\`self.function(5)==10\*\*5\`\`
Parameters:
**value** (_float_)
Return type:
float
get\_custom\_labels(_val\_range_, _unit\_decimal\_places\=0_, _\*\*base\_config_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LogBase.get_custom_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.get_custom_labels "Link to this definition")
Produces custom [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
labels in the form of `10^2`.
Parameters:
* **val\_range** (_Iterable__\[__float__\]_) – The iterable of values used to create the labels. Determines the exponent.
* **unit\_decimal\_places** (_int_) – The number of decimal places to include in the exponent
* **base\_config** (_Any_) – Additional arguments to be passed to [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
Return type:
list\[[_Integer_](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")\
\]
inverse\_function(_value_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LogBase.inverse_function)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase.inverse_function "Link to this definition")
Inverse of `function`. The value must be greater than 0
Parameters:
**value** (_float_)
Return type:
float
---
# IntegerMatrix - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.matrix.IntegerMatrix.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.matrix.IntegerMatrix.rst "Edit this page")
IntegerMatrix[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#integermatrix "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.matrix.IntegerMatrix`
class IntegerMatrix(_matrix_, _element\_to\_mobject\=_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#IntegerMatrix)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#manim.mobject.matrix.IntegerMatrix "Link to this definition")
Bases: [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
A mobject that displays a matrix with integer entries on the screen.
Examples
Example: IntegerMatrixExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#integermatrixexample)

from manim import \*
class IntegerMatrixExample(Scene):
def construct(self):
m0 \= IntegerMatrix(
\[\[3.7, 2\], \[42.2, 12\]\],
left\_bracket\="(",
right\_bracket\=")")
self.add(m0)
class IntegerMatrixExample(Scene):
def construct(self):
m0 = IntegerMatrix(
\[\[3.7, 2\], \[42.2, 12\]\],
left\_bracket="(",
right\_bracket=")")
self.add(m0)
Will round if there are decimal entries in the matrix.
Parameters:
* **matrix** (_Iterable_) – A numpy 2d array or list of lists
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – Mobject to use, by default Integer
* **kwargs** (_Any_)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_matrix_, _element\_to\_mobject\=_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#manim.mobject.matrix.IntegerMatrix._original__init__ "Link to this definition")
Will round if there are decimal entries in the matrix.
Parameters:
* **matrix** (_Iterable_) – A numpy 2d array or list of lists
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – Mobject to use, by default Integer
* **kwargs** (_Any_)
---
# Group - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.mobject.Group.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.mobject.Group.rst "Edit this page")
Group[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#group "Link to this heading")
=========================================================================================================================
Qualified name: `manim.mobject.mobject.Group`
class Group(_\*mobjects_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Group)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "Link to this definition")
Bases: [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Groups together multiple [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Notes
When adding the same mobject more than once, repetitions are ignored. Use [`Mobject.copy()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.copy "manim.mobject.mobject.Mobject.copy")
to create a separate copy which can then be added to the group.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
\_original\_\_init\_\_(_\*mobjects_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Return type:
None
---
# boolean_ops - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.boolean_ops.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.boolean_ops.rst "Edit this page")
boolean\_ops[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.html#module-manim.mobject.geometry.boolean_ops "Link to this heading")
===========================================================================================================================================================================
Boolean operations for two-dimensional mobjects.
Classes
| | |
| --- | --- |
| [`Difference`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#manim.mobject.geometry.boolean_ops.Difference "manim.mobject.geometry.boolean_ops.Difference") | Subtracts one [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
from another one. |
| [`Exclusion`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#manim.mobject.geometry.boolean_ops.Exclusion "manim.mobject.geometry.boolean_ops.Exclusion") | Find the XOR between two [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
. |
| [`Intersection`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#manim.mobject.geometry.boolean_ops.Intersection "manim.mobject.geometry.boolean_ops.Intersection") | Find the intersection of two [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s. |
| [`Union`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "manim.mobject.geometry.boolean_ops.Union") | Union of two or more [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s. |
---
# RegularPolygon - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.RegularPolygon.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.RegularPolygon.rst "Edit this page")
RegularPolygon[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#regularpolygon "Link to this heading")
==============================================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.RegularPolygon`
class RegularPolygon(_n\=6_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#RegularPolygon)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "Link to this definition")
Bases: [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
An n-sided regular [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
.
Parameters:
* **n** (_int_) – The number of sides of the [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon")
.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: RegularPolygonExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#regularpolygonexample)

from manim import \*
class RegularPolygonExample(Scene):
def construct(self):
poly\_1 \= RegularPolygon(n\=6)
poly\_2 \= RegularPolygon(n\=6, start\_angle\=30\*DEGREES, color\=GREEN)
poly\_3 \= RegularPolygon(n\=10, color\=RED)
poly\_group \= Group(poly\_1, poly\_2, poly\_3).scale(1.5).arrange(buff\=1)
self.add(poly\_group)
class RegularPolygonExample(Scene):
def construct(self):
poly\_1 = RegularPolygon(n=6)
poly\_2 = RegularPolygon(n=6, start\_angle=30\*DEGREES, color=GREEN)
poly\_3 = RegularPolygon(n=10, color=RED)
poly\_group = Group(poly\_1, poly\_2, poly\_3).scale(1.5).arrange(buff=1)
self.add(poly\_group)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_n\=6_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **n** (_int_)
* **kwargs** (_Any_)
Return type:
None
---
# Square - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Square.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Square.rst "Edit this page")
Square[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#square "Link to this heading")
======================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Square`
class Square(_side\_length\=2.0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Square)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square "Link to this definition")
Bases: [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
A rectangle with equal side lengths.
Parameters:
* **side\_length** (_float_) – The length of the sides of the square.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
.
Examples
Example: SquareExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#squareexample)

from manim import \*
class SquareExample(Scene):
def construct(self):
square\_1 \= Square(side\_length\=2.0).shift(DOWN)
square\_2 \= Square(side\_length\=1.0).next\_to(square\_1, direction\=UP)
square\_3 \= Square(side\_length\=0.5).next\_to(square\_2, direction\=UP)
self.add(square\_1, square\_2, square\_3)
class SquareExample(Scene):
def construct(self):
square\_1 = Square(side\_length=2.0).shift(DOWN)
square\_2 = Square(side\_length=1.0).next\_to(square\_1, direction=UP)
square\_3 = Square(side\_length=0.5).next\_to(square\_2, direction=UP)
self.add(square\_1, square\_2, square\_3)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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` | |
| `side_length` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
\_original\_\_init\_\_(_side\_length\=2.0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **side\_length** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# Star - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Star.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Star.rst "Edit this page")
Star[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#star "Link to this heading")
================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Star`
class Star(_n\=5_, _\*_, _outer\_radius\=1_, _inner\_radius\=None_, _density\=2_, _start\_angle\=1.5707963267948966_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Star)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "Link to this definition")
Bases: [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
A regular polygram without the intersecting lines.
Parameters:
* **n** (_int_) – How many points on the [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
.
* **outer\_radius** (_float_) – The radius of the circle that the outer vertices are placed on.
* **inner\_radius** (_float_ _|_ _None_) –
The radius of the circle that the inner vertices are placed on.
If unspecified, the inner radius will be calculated such that the edges of the [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
perfectly follow the edges of its [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
counterpart.
* **density** (_int_) –
The density of the [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
. Only used if `inner_radius` is unspecified.
See [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
for more information.
* **start\_angle** (_float_ _|_ _None_) – The angle the vertices start at; the rotation of the [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
.
* **kwargs** (_Any_) – Forwardeds to the parent constructor.
Raises:
**ValueError** – If `inner_radius` is unspecified and `density` is not in the range `[1, n/2)`.\
\
Examples\
\
Example: StarExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#starexample)\
\
from manim import \*\
\
class StarExample(Scene):\
def construct(self):\
pentagram \= RegularPolygram(5, radius\=2)\
star \= Star(outer\_radius\=2, color\=RED)\
\
self.add(pentagram)\
self.play(Create(star), run\_time\=3)\
self.play(FadeOut(star), run\_time\=2)\
\
class StarExample(Scene):\
def construct(self):\
pentagram = RegularPolygram(5, radius=2)\
star = Star(outer\_radius=2, color=RED)\
\
self.add(pentagram)\
self.play(Create(star), run\_time=3)\
self.play(FadeOut(star), run\_time=2)\
\
Example: DifferentDensitiesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#differentdensitiesexample)\
\
\
\
from manim import \*\
\
class DifferentDensitiesExample(Scene):\
def construct(self):\
density\_2 \= Star(7, outer\_radius\=2, density\=2, color\=RED)\
density\_3 \= Star(7, outer\_radius\=2, density\=3, color\=PURPLE)\
\
self.add(VGroup(density\_2, density\_3).arrange(RIGHT))\
\
class DifferentDensitiesExample(Scene):\
def construct(self):\
density\_2 = Star(7, outer\_radius=2, density=2, color=RED)\
density\_3 = Star(7, outer\_radius=2, density=3, color=PURPLE)\
\
self.add(VGroup(density\_2, density\_3).arrange(RIGHT))\
\
Methods\
\
Attributes\
\
| | |\
| --- | --- |\
| `always` | Call a method on a mobject every frame. |\
| `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. |\
\
\_original\_\_init\_\_(_n\=5_, _\*_, _outer\_radius\=1_, _inner\_radius\=None_, _density\=2_, _start\_angle\=1.5707963267948966_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star._original__init__ "Link to this definition")\
\
Initialize self. See help(type(self)) for accurate signature.\
\
Parameters:\
\
* **n** (_int_)\
\
* **outer\_radius** (_float_)\
\
* **inner\_radius** (_float_ _|_ _None_)\
\
* **density** (_int_)\
\
* **start\_angle** (_float_ _|_ _None_)\
\
* **kwargs** (_Any_)\
\
\
Return type:\
\
None
---
# polygram - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.rst "Edit this page")
polygram[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.html#module-manim.mobject.geometry.polygram "Link to this heading")
=================================================================================================================================================================
Mobjects that are simple geometric shapes.
Classes
| | |
| --- | --- |
| [`ConvexHull`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#manim.mobject.geometry.polygram.ConvexHull "manim.mobject.geometry.polygram.ConvexHull") | Constructs a convex hull for a set of points in no particular order. |
| [`Cutout`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#manim.mobject.geometry.polygram.Cutout "manim.mobject.geometry.polygram.Cutout") | A shape with smaller cutouts. |
| [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon") | A shape consisting of one closed loop of vertices. |
| [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram") | A generalized [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
, allowing for disconnected sets of edges. |
| [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle") | A quadrilateral with two sets of parallel sides. |
| [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon") | An n-sided regular [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
. |
| [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram") | A [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
with regularly spaced vertices. |
| [`RoundedRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#manim.mobject.geometry.polygram.RoundedRectangle "manim.mobject.geometry.polygram.RoundedRectangle") | A rectangle with rounded corners. |
| [`Square`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square "manim.mobject.geometry.polygram.Square") | A rectangle with equal side lengths. |
| [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star") | A regular polygram without the intersecting lines. |
| [`Triangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#manim.mobject.geometry.polygram.Triangle "manim.mobject.geometry.polygram.Triangle") | An equilateral triangle. |
---
# Underline - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.shape_matchers.Underline.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.shape_matchers.Underline.rst "Edit this page")
Underline[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#underline "Link to this heading")
=====================================================================================================================================================
Qualified name: `manim.mobject.geometry.shape\_matchers.Underline`
class Underline(_mobject_, _buff\=0.1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/shape_matchers.html#Underline)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#manim.mobject.geometry.shape_matchers.Underline "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
Creates an underline.
Examples
Example: UnderLine [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#underline)

from manim import \*
class UnderLine(Scene):
def construct(self):
man \= Tex("Manim") \# Full Word
ul \= Underline(man) \# Underlining the word
self.add(man, ul)
class UnderLine(Scene):
def construct(self):
man = Tex("Manim") # Full Word
ul = Underline(man) # Underlining the word
self.add(man, ul)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **buff** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_mobject_, _buff\=0.1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#manim.mobject.geometry.shape_matchers.Underline._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **buff** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# shape_matchers - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.shape_matchers.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.shape_matchers.rst "Edit this page")
shape\_matchers[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.html#module-manim.mobject.geometry.shape_matchers "Link to this heading")
====================================================================================================================================================================================
Mobjects used to mark and annotate other mobjects.
Classes
| | |
| --- | --- |
| [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle") | A background rectangle. |
| [`Cross`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#manim.mobject.geometry.shape_matchers.Cross "manim.mobject.geometry.shape_matchers.Cross") | Creates a cross. |
| [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle") | A rectangle surrounding a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`Underline`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#manim.mobject.geometry.shape_matchers.Underline "manim.mobject.geometry.shape_matchers.Underline") | Creates an underline. |
---
# tips - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.rst "Edit this page")
tips[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.html#module-manim.mobject.geometry.tips "Link to this heading")
=====================================================================================================================================================
A collection of tip mobjects for use with [`TipableVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject "manim.mobject.geometry.arc.TipableVMobject")
.
Classes
| | |
| --- | --- |
| [`ArrowCircleFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#manim.mobject.geometry.tips.ArrowCircleFilledTip "manim.mobject.geometry.tips.ArrowCircleFilledTip") | Circular arrow tip with filled tip. |
| [`ArrowCircleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#manim.mobject.geometry.tips.ArrowCircleTip "manim.mobject.geometry.tips.ArrowCircleTip") | Circular arrow tip. |
| [`ArrowSquareFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#manim.mobject.geometry.tips.ArrowSquareFilledTip "manim.mobject.geometry.tips.ArrowSquareFilledTip") | Square arrow tip with filled tip. |
| [`ArrowSquareTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#manim.mobject.geometry.tips.ArrowSquareTip "manim.mobject.geometry.tips.ArrowSquareTip") | Square arrow tip. |
| [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip") | Base class for arrow tips. |
| [`ArrowTriangleFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip "manim.mobject.geometry.tips.ArrowTriangleFilledTip") | Triangular arrow tip with filled tip. |
| [`ArrowTriangleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip "manim.mobject.geometry.tips.ArrowTriangleTip") | Triangular arrow tip. |
| [`StealthTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip "manim.mobject.geometry.tips.StealthTip") | 'Stealth' fighter / kite arrow shape. |
---
# graph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graph.rst "Edit this page")
graph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.html#module-manim.mobject.graph "Link to this heading")
======================================================================================================================================
Mobjects used to represent mathematical graphs (think graph theory, not plotting).
Type Aliases
class NxGraph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.html#manim.mobject.graph.NxGraph "Link to this definition")
nx.classes.graph.Graph | nx.classes.digraph.DiGraph
Classes
| | |
| --- | --- |
| [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph") | A directed graph. |
| [`GenericGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "manim.mobject.graph.GenericGraph") | Abstract base class for graphs (that is, a collection of vertices connected with edges). |
| [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph") | An undirected graph (vertices connected with edges). |
| [`LayoutFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction") | A protocol for automatic layout functions that compute a layout for a graph to be used in `change_layout()`. |
---
# number_line - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.number_line.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.number_line.rst "Edit this page")
number\_line[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.html#module-manim.mobject.graphing.number_line "Link to this heading")
===========================================================================================================================================================================
Mobject representing a number line.
Classes
| | |
| --- | --- |
| [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine") | Creates a number line with tick marks. |
| [`UnitInterval`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.UnitInterval.html#manim.mobject.graphing.number_line.UnitInterval "manim.mobject.graphing.number_line.UnitInterval") | |
---
# probability - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.probability.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.probability.rst "Edit this page")
probability[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.html#module-manim.mobject.graphing.probability "Link to this heading")
==========================================================================================================================================================================
Mobjects representing objects from probability theory and statistics.
Classes
| | |
| --- | --- |
| [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart") | Creates a bar chart. |
| [`SampleSpace`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#manim.mobject.graphing.probability.SampleSpace "manim.mobject.graphing.probability.SampleSpace") | A mobject representing a twodimensional rectangular sampling space. |
---
# LinearBase - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.scale.LinearBase.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.scale.LinearBase.rst "Edit this page")
LinearBase[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#linearbase "Link to this heading")
===============================================================================================================================================
Qualified name: `manim.mobject.graphing.scale.LinearBase`
class LinearBase(_scale\_factor\=1.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LinearBase)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase "Link to this definition")
Bases: `_ScaleBase`
The default scaling class.
Parameters:
**scale\_factor** (_float_) – The slope of the linear function, by default 1.0
Methods
| | |
| --- | --- |
| [`function`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase.function "manim.mobject.graphing.scale.LinearBase.function") | Multiplies the value by the scale factor. |
| [`inverse_function`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase.inverse_function "manim.mobject.graphing.scale.LinearBase.inverse_function") | Inverse of function. |
function(_value_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LinearBase.function)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase.function "Link to this definition")
Multiplies the value by the scale factor.
Parameters:
**value** (_float_) – Value to be multiplied by the scale factor.
Return type:
float
inverse\_function(_value_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/scale.html#LinearBase.inverse_function)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase.inverse_function "Link to this definition")
Inverse of function. Divides the value by the scale factor.
Parameters:
**value** (_float_) – value to be divided by the scale factor.
Return type:
float
---
# BraceBetweenPoints - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.BraceBetweenPoints.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.BraceBetweenPoints.rst "Edit this page")
BraceBetweenPoints[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#bracebetweenpoints "Link to this heading")
==================================================================================================================================================================
Qualified name: `manim.mobject.svg.brace.BraceBetweenPoints`
class BraceBetweenPoints(_point\_1_, _point\_2_, _direction\=array(\[0., 0., 0.\])_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#BraceBetweenPoints)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#manim.mobject.svg.brace.BraceBetweenPoints "Link to this definition")
Bases: [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
Similar to Brace, but instead of taking a mobject it uses 2 points to place the brace.
A fitting direction for the brace is computed, but it still can be manually overridden. If the points go from left to right, the brace is drawn from below. Swapping the points places the brace on the opposite side.
Parameters:
* **point\_1** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The first point.
* **point\_2** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The second point.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction from which the brace faces towards the points.
* **kwargs** (_Any_)
Examples
Example: BraceBPExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#bracebpexample)
from manim import \*
class BraceBPExample(Scene):
def construct(self):
p1 \= \[0,0,0\]
p2 \= \[1,2,0\]
brace \= BraceBetweenPoints(p1,p2)
self.play(Create(NumberPlane()))
self.play(Create(brace))
self.wait(2)
class BraceBPExample(Scene):
def construct(self):
p1 = \[0,0,0\]
p2 = \[1,2,0\]
brace = BraceBetweenPoints(p1,p2)
self.play(Create(NumberPlane()))
self.play(Create(brace))
self.wait(2)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_point\_1_, _point\_2_, _direction\=array(\[0., 0., 0.\])_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#manim.mobject.svg.brace.BraceBetweenPoints._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **point\_1** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **point\_2** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **kwargs** (_Any_)
---
# DecimalMatrix - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.matrix.DecimalMatrix.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.matrix.DecimalMatrix.rst "Edit this page")
DecimalMatrix[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#decimalmatrix "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.matrix.DecimalMatrix`
class DecimalMatrix(_matrix_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={'num\_decimal\_places': 1}_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#DecimalMatrix)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#manim.mobject.matrix.DecimalMatrix "Link to this definition")
Bases: [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
A mobject that displays a matrix with decimal entries on the screen.
Examples
Example: DecimalMatrixExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#decimalmatrixexample)

from manim import \*
class DecimalMatrixExample(Scene):
def construct(self):
m0 \= DecimalMatrix(
\[\[3.456, 2.122\], \[33.2244, 12\]\],
element\_to\_mobject\_config\={"num\_decimal\_places": 2},
left\_bracket\="\\\\{",
right\_bracket\="\\\\}")
self.add(m0)
class DecimalMatrixExample(Scene):
def construct(self):
m0 = DecimalMatrix(
\[\[3.456, 2.122\], \[33.2244, 12\]\],
element\_to\_mobject\_config={"num\_decimal\_places": 2},
left\_bracket="\\\\{",
right\_bracket="\\\\}")
self.add(m0)
Will round/truncate the decimal places as per the provided config.
Parameters:
* **matrix** (_Iterable_) – A numpy 2d array or list of lists
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – Mobject to use, by default DecimalNumber
* **element\_to\_mobject\_config** (_dict__\[__str__,_ _Any__\]_) – Config for the desired mobject, by default {“num\_decimal\_places”: 1}
* **kwargs** (_Any_)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_matrix_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={'num\_decimal\_places': 1}_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#manim.mobject.matrix.DecimalMatrix._original__init__ "Link to this definition")
Will round/truncate the decimal places as per the provided config.
Parameters:
* **matrix** (_Iterable_) – A numpy 2d array or list of lists
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – Mobject to use, by default DecimalNumber
* **element\_to\_mobject\_config** (_dict__\[__str__,_ _Any__\]_) – Config for the desired mobject, by default {“num\_decimal\_places”: 1}
* **kwargs** (_Any_)
---
# logo - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.logo.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.logo.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.logo.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.logo.rst "Edit this page")
logo[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.html#module-manim.mobject.logo "Link to this heading")
===================================================================================================================================
Utilities for Manim’s logo and banner.
Classes
| | |
| --- | --- |
| [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner") | Convenience class representing Manim's banner. |
---
# svg - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.rst "Edit this page")
svg[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.html#module-manim.mobject.svg "Link to this heading")
================================================================================================================================
Mobjects related to SVG images.
Modules[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.html#modules "Link to this heading")
-------------------------------------------------------------------------------------------------------------------
| | |
| --- | --- |
| [`brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.html#module-manim.mobject.svg.brace "manim.mobject.svg.brace") | Mobject representing curly braces. |
| [`svg_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.html#module-manim.mobject.svg.svg_mobject "manim.mobject.svg.svg_mobject") | Mobjects generated from an SVG file. |
---
# Exclusion - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Exclusion.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Exclusion.rst "Edit this page")
Exclusion[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#exclusion "Link to this heading")
==================================================================================================================================================
Qualified name: `manim.mobject.geometry.boolean\_ops.Exclusion`
class Exclusion(_subject_, _clip_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/boolean_ops.html#Exclusion)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#manim.mobject.geometry.boolean_ops.Exclusion "Link to this definition")
Bases: `_BooleanOps`
Find the XOR between two [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
. This creates a new [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
consisting of the region covered by exactly one of them.
Parameters:
* **subject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The 1st [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
* **clip** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The 2nd [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
* **kwargs** (_Any_)
Example
Example: IntersectionExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#intersectionexample)

from manim import \*
class IntersectionExample(Scene):
def construct(self):
sq \= Square(color\=RED, fill\_opacity\=1)
sq.move\_to(\[\-2, 0, 0\])
cr \= Circle(color\=BLUE, fill\_opacity\=1)
cr.move\_to(\[\-1.3, 0.7, 0\])
un \= Exclusion(sq, cr, color\=GREEN, fill\_opacity\=1)
un.move\_to(\[1.5, 0.4, 0\])
self.add(sq, cr, un)
class IntersectionExample(Scene):
def construct(self):
sq = Square(color=RED, fill\_opacity=1)
sq.move\_to(\[-2, 0, 0\])
cr = Circle(color=BLUE, fill\_opacity=1)
cr.move\_to(\[-1.3, 0.7, 0\])
un = Exclusion(sq, cr, color=GREEN, fill\_opacity=1)
un.move\_to(\[1.5, 0.4, 0\])
self.add(sq, cr, un)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_subject_, _clip_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#manim.mobject.geometry.boolean_ops.Exclusion._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **subject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **clip** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **kwargs** (_Any_)
Return type:
None
---
# Intersection - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Intersection.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.boolean_ops.Intersection.rst "Edit this page")
Intersection[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#intersection "Link to this heading")
===========================================================================================================================================================
Qualified name: `manim.mobject.geometry.boolean\_ops.Intersection`
class Intersection(_\*vmobjects_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/boolean_ops.html#Intersection)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#manim.mobject.geometry.boolean_ops.Intersection "Link to this definition")
Bases: `_BooleanOps`
Find the intersection of two [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s. This keeps the parts covered by both [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
s.
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
to find the intersection.
* **kwargs** (_Any_)
Raises:
**ValueError** – If less the 2 [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
are passed.
Example
Example: IntersectionExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#intersectionexample)

from manim import \*
class IntersectionExample(Scene):
def construct(self):
sq \= Square(color\=RED, fill\_opacity\=1)
sq.move\_to(\[\-2, 0, 0\])
cr \= Circle(color\=BLUE, fill\_opacity\=1)
cr.move\_to(\[\-1.3, 0.7, 0\])
un \= Intersection(sq, cr, color\=GREEN, fill\_opacity\=1)
un.move\_to(\[1.5, 0, 0\])
self.add(sq, cr, un)
class IntersectionExample(Scene):
def construct(self):
sq = Square(color=RED, fill\_opacity=1)
sq.move\_to(\[-2, 0, 0\])
cr = Circle(color=BLUE, fill\_opacity=1)
cr.move\_to(\[-1.3, 0.7, 0\])
un = Intersection(sq, cr, color=GREEN, fill\_opacity=1)
un.move\_to(\[1.5, 0, 0\])
self.add(sq, cr, un)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*vmobjects_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#manim.mobject.geometry.boolean_ops.Intersection._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **kwargs** (_Any_)
Return type:
None
---
# Ellipse - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.arc.Ellipse.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.arc.Ellipse.rst "Edit this page")
Ellipse[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#ellipse "Link to this heading")
====================================================================================================================================
Qualified name: `manim.mobject.geometry.arc.Ellipse`
class Ellipse(_width\=2_, _height\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#Ellipse)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#manim.mobject.geometry.arc.Ellipse "Link to this definition")
Bases: [`Circle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle "manim.mobject.geometry.arc.Circle")
A circular shape; oval, circle.
Parameters:
* **width** (_float_) – The horizontal width of the ellipse.
* **height** (_float_) – The vertical height of the ellipse.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Circle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle "manim.mobject.geometry.arc.Circle")
.
Examples
Example: EllipseExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#ellipseexample)

from manim import \*
class EllipseExample(Scene):
def construct(self):
ellipse\_1 \= Ellipse(width\=2.0, height\=4.0, color\=BLUE\_B)
ellipse\_2 \= Ellipse(width\=4.0, height\=1.0, color\=BLUE\_D)
ellipse\_group \= Group(ellipse\_1,ellipse\_2).arrange(buff\=1)
self.add(ellipse\_group)
class EllipseExample(Scene):
def construct(self):
ellipse\_1 = Ellipse(width=2.0, height=4.0, color=BLUE\_B)
ellipse\_2 = Ellipse(width=4.0, height=1.0, color=BLUE\_D)
ellipse\_group = Group(ellipse\_1,ellipse\_2).arrange(buff=1)
self.add(ellipse\_group)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_width\=2_, _height\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#manim.mobject.geometry.arc.Ellipse._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **width** (_float_)
* **height** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# Label - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.labeled.Label.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.labeled.Label.rst "Edit this page")
Label[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#label "Link to this heading")
==================================================================================================================================
Qualified name: `manim.mobject.geometry.labeled.Label`
class Label(_label_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/labeled.html#Label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#manim.mobject.geometry.labeled.Label "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
A Label consisting of text surrounded by a frame.
Parameters:
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
) – Label that will be displayed.
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the label. This is only applied if `label` is of type `str`.
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the background box.
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the frame.
* **kwargs** (_Any_)
Examples
Example: LabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#labelexample)

from manim import \*
class LabelExample(Scene):
def construct(self):
label \= Label(
label\=Text('Label Text', font\='sans-serif'),
box\_config \= {
"color" : BLUE,
"fill\_opacity" : 0.75
}
)
label.scale(3)
self.add(label)
class LabelExample(Scene):
def construct(self):
label = Label(
label=Text('Label Text', font='sans-serif'),
box\_config = {
"color" : BLUE,
"fill\_opacity" : 0.75
}
)
label.scale(3)
self.add(label)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_label_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#manim.mobject.geometry.labeled.Label._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
)
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# DoubleArrow - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.DoubleArrow.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.DoubleArrow.rst "Edit this page")
DoubleArrow[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#doublearrow "Link to this heading")
=================================================================================================================================================
Qualified name: `manim.mobject.geometry.line.DoubleArrow`
class DoubleArrow(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DoubleArrow)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#manim.mobject.geometry.line.DoubleArrow "Link to this definition")
Bases: [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
An arrow with tips on both ends.
Parameters:
* **args** (_Any_) – Arguments to be passed to [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
* **kwargs** (_Any_) – Additional arguments to be passed to [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
See also
`ArrowTip` `CurvedDoubleArrow`
Examples
Example: DoubleArrowExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#doublearrowexample)

from manim import \*
from manim.mobject.geometry.tips import ArrowCircleFilledTip
class DoubleArrowExample(Scene):
def construct(self):
circle \= Circle(radius\=2.0)
d\_arrow \= DoubleArrow(start\=circle.get\_left(), end\=circle.get\_right())
d\_arrow\_2 \= DoubleArrow(tip\_shape\_end\=ArrowCircleFilledTip, tip\_shape\_start\=ArrowCircleFilledTip)
group \= Group(Group(circle, d\_arrow), d\_arrow\_2).arrange(UP, buff\=1)
self.add(group)
from manim.mobject.geometry.tips import ArrowCircleFilledTip
class DoubleArrowExample(Scene):
def construct(self):
circle = Circle(radius=2.0)
d\_arrow = DoubleArrow(start=circle.get\_left(), end=circle.get\_right())
d\_arrow\_2 = DoubleArrow(tip\_shape\_end=ArrowCircleFilledTip, tip\_shape\_start=ArrowCircleFilledTip)
group = Group(Group(circle, d\_arrow), d\_arrow\_2).arrange(UP, buff=1)
self.add(group)
Example: DoubleArrowExample2 [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#doublearrowexample2)

from manim import \*
class DoubleArrowExample2(Scene):
def construct(self):
box \= Square()
p1 \= box.get\_left()
p2 \= box.get\_right()
d1 \= DoubleArrow(p1, p2, buff\=0)
d2 \= DoubleArrow(p1, p2, buff\=0, tip\_length\=0.2, color\=YELLOW)
d3 \= DoubleArrow(p1, p2, buff\=0, tip\_length\=0.4, color\=BLUE)
Group(d1, d2, d3).arrange(DOWN)
self.add(box, d1, d2, d3)
class DoubleArrowExample2(Scene):
def construct(self):
box = Square()
p1 = box.get\_left()
p2 = box.get\_right()
d1 = DoubleArrow(p1, p2, buff=0)
d2 = DoubleArrow(p1, p2, buff=0, tip\_length=0.2, color=YELLOW)
d3 = DoubleArrow(p1, p2, buff=0, tip\_length=0.4, color=BLUE)
Group(d1, d2, d3).arrange(DOWN)
self.add(box, d1, d2, d3)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*args_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#manim.mobject.geometry.line.DoubleArrow._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **args** (_Any_)
* **kwargs** (_Any_)
Return type:
None
---
# DashedLine - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.DashedLine.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.DashedLine.rst "Edit this page")
DashedLine[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#dashedline "Link to this heading")
==============================================================================================================================================
Qualified name: `manim.mobject.geometry.line.DashedLine`
class DashedLine(_\*args_, _dash\_length\=0.05_, _dashed\_ratio\=0.5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
A dashed [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
.
Parameters:
* **args** (_Any_) – Arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
* **dash\_length** (_float_) – The length of each individual dash of the line.
* **dashed\_ratio** (_float_) – The ratio of dash space to empty space. Range of 0-1.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
See also
[`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
Examples
Example: DashedLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#dashedlineexample)

from manim import \*
class DashedLineExample(Scene):
def construct(self):
\# dash\_length increased
dashed\_1 \= DashedLine(config.left\_side, config.right\_side, dash\_length\=2.0).shift(UP\*2)
\# normal
dashed\_2 \= DashedLine(config.left\_side, config.right\_side)
\# dashed\_ratio decreased
dashed\_3 \= DashedLine(config.left\_side, config.right\_side, dashed\_ratio\=0.1).shift(DOWN\*2)
self.add(dashed\_1, dashed\_2, dashed\_3)
class DashedLineExample(Scene):
def construct(self):
# dash\_length increased
dashed\_1 = DashedLine(config.left\_side, config.right\_side, dash\_length=2.0).shift(UP\*2)
# normal
dashed\_2 = DashedLine(config.left\_side, config.right\_side)
# dashed\_ratio decreased
dashed\_3 = DashedLine(config.left\_side, config.right\_side, dashed\_ratio=0.1).shift(DOWN\*2)
self.add(dashed\_1, dashed\_2, dashed\_3)
Methods
| | |
| --- | --- |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_end "manim.mobject.geometry.line.DashedLine.get_end") | Returns the end point of the line. |
| [`get_first_handle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_first_handle "manim.mobject.geometry.line.DashedLine.get_first_handle") | Returns the point of the first handle. |
| [`get_last_handle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_last_handle "manim.mobject.geometry.line.DashedLine.get_last_handle") | Returns the point of the last handle. |
| [`get_start`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_start "manim.mobject.geometry.line.DashedLine.get_start") | Returns the start point of the line. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_calculate\_num\_dashes()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine._calculate_num_dashes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine._calculate_num_dashes "Link to this definition")
Returns the number of dashes in the dashed line.
Examples
\>>> DashedLine().\_calculate\_num\_dashes()
20
Return type:
int
\_original\_\_init\_\_(_\*args_, _dash\_length\=0.05_, _dashed\_ratio\=0.5_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **args** (_Any_)
* **dash\_length** (_float_)
* **dashed\_ratio** (_float_)
* **kwargs** (_Any_)
Return type:
None
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_end "Link to this definition")
Returns the end point of the line.
Examples
\>>> DashedLine().get\_end()
array(\[1., 0., 0.\])
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_first\_handle()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine.get_first_handle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_first_handle "Link to this definition")
Returns the point of the first handle.
Examples
\>>> DashedLine().get\_first\_handle()
array(\[-0.98333333, 0. , 0. \])
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_last\_handle()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine.get_last_handle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_last_handle "Link to this definition")
Returns the point of the last handle.
Examples
\>>> DashedLine().get\_last\_handle()
array(\[0.98333333, 0. , 0. \])
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_start()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#DashedLine.get_start)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine.get_start "Link to this definition")
Returns the start point of the line.
Examples
\>>> DashedLine().get\_start()
array(\[-1., 0., 0.\])
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
---
# ConvexHull - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.ConvexHull.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.ConvexHull.rst "Edit this page")
ConvexHull[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#convexhull "Link to this heading")
==================================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.ConvexHull`
class ConvexHull(_\*points_, _tolerance\=1e-05_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#ConvexHull)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#manim.mobject.geometry.polygram.ConvexHull "Link to this definition")
Bases: [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
Constructs a convex hull for a set of points in no particular order.
Parameters:
* **points** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The points to consider.
* **tolerance** (_float_) – The tolerance used by quickhull.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: ConvexHullExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#convexhullexample)

from manim import \*
class ConvexHullExample(Scene):
def construct(self):
points \= \[\
\[\-2.35, \-2.25, 0\],\
\[1.65, \-2.25, 0\],\
\[2.65, \-0.25, 0\],\
\[1.65, 1.75, 0\],\
\[\-0.35, 2.75, 0\],\
\[\-2.35, 0.75, 0\],\
\[\-0.35, \-1.25, 0\],\
\[0.65, \-0.25, 0\],\
\[\-1.35, 0.25, 0\],\
\[0.15, 0.75, 0\]\
\]
hull \= ConvexHull(\*points, color\=BLUE)
dots \= VGroup(\*\[Dot(point) for point in points\])
self.add(hull)
self.add(dots)
class ConvexHullExample(Scene):
def construct(self):
points = \[\
\[-2.35, -2.25, 0\],\
\[1.65, -2.25, 0\],\
\[2.65, -0.25, 0\],\
\[1.65, 1.75, 0\],\
\[-0.35, 2.75, 0\],\
\[-2.35, 0.75, 0\],\
\[-0.35, -1.25, 0\],\
\[0.65, -0.25, 0\],\
\[-1.35, 0.25, 0\],\
\[0.15, 0.75, 0\]\
\]
hull = ConvexHull(\*points, color=BLUE)
dots = VGroup(\*\[Dot(point) for point in points\])
self.add(hull)
self.add(dots)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*points_, _tolerance\=1e-05_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#manim.mobject.geometry.polygram.ConvexHull._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **points** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **tolerance** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# TangentLine - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.TangentLine.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.TangentLine.rst "Edit this page")
TangentLine[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#tangentline "Link to this heading")
=================================================================================================================================================
Qualified name: `manim.mobject.geometry.line.TangentLine`
class TangentLine(_vmob_, _alpha_, _length\=1_, _d\_alpha\=1e-06_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#TangentLine)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#manim.mobject.geometry.line.TangentLine "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
Constructs a line tangent to a [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
at a specific point.
Parameters:
* **vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The VMobject on which the tangent line is drawn.
* **alpha** (_float_) – How far along the shape that the line will be constructed. range: 0-1.
* **length** (_float_) – Length of the tangent line.
* **d\_alpha** (_float_) – The `dx` value
* **kwargs** (_Any_) – Additional arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
See also
[`point_from_proportion()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion "manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion")
Examples
Example: TangentLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#tangentlineexample)

from manim import \*
class TangentLineExample(Scene):
def construct(self):
circle \= Circle(radius\=2)
line\_1 \= TangentLine(circle, alpha\=0.0, length\=4, color\=BLUE\_D) \# right
line\_2 \= TangentLine(circle, alpha\=0.4, length\=4, color\=GREEN) \# top left
self.add(circle, line\_1, line\_2)
class TangentLineExample(Scene):
def construct(self):
circle = Circle(radius=2)
line\_1 = TangentLine(circle, alpha=0.0, length=4, color=BLUE\_D) # right
line\_2 = TangentLine(circle, alpha=0.4, length=4, color=GREEN) # top left
self.add(circle, line\_1, line\_2)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_vmob_, _alpha_, _length\=1_, _d\_alpha\=1e-06_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#manim.mobject.geometry.line.TangentLine._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **alpha** (_float_)
* **length** (_float_)
* **d\_alpha** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# Cutout - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Cutout.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Cutout.rst "Edit this page")
Cutout[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#cutout "Link to this heading")
======================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Cutout`
class Cutout(_main\_shape_, _\*mobjects_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Cutout)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#manim.mobject.geometry.polygram.Cutout "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A shape with smaller cutouts.
Parameters:
* **main\_shape** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The primary shape from which cutouts are made.
* **mobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The smaller shapes which are to be cut out of the `main_shape`.
* **kwargs** (_Any_) – Further keyword arguments that are passed to the constructor of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Warning
Technically, this class behaves similar to a symmetric difference: if parts of the `mobjects` are not located within the `main_shape`, these parts will be added to the resulting [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Examples
Example: CutoutExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#cutoutexample)
from manim import \*
class CutoutExample(Scene):
def construct(self):
s1 \= Square().scale(2.5)
s2 \= Triangle().shift(DOWN + RIGHT).scale(0.5)
s3 \= Square().shift(UP + RIGHT).scale(0.5)
s4 \= RegularPolygon(5).shift(DOWN + LEFT).scale(0.5)
s5 \= RegularPolygon(6).shift(UP + LEFT).scale(0.5)
c \= Cutout(s1, s2, s3, s4, s5, fill\_opacity\=1, color\=BLUE, stroke\_color\=RED)
self.play(Write(c), run\_time\=4)
self.wait()
class CutoutExample(Scene):
def construct(self):
s1 = Square().scale(2.5)
s2 = Triangle().shift(DOWN + RIGHT).scale(0.5)
s3 = Square().shift(UP + RIGHT).scale(0.5)
s4 = RegularPolygon(5).shift(DOWN + LEFT).scale(0.5)
s5 = RegularPolygon(6).shift(UP + LEFT).scale(0.5)
c = Cutout(s1, s2, s3, s4, s5, fill\_opacity=1, color=BLUE, stroke\_color=RED)
self.play(Write(c), run\_time=4)
self.wait()
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_main\_shape_, _\*mobjects_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Cutout.html#manim.mobject.geometry.polygram.Cutout._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **main\_shape** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **mobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **kwargs** (_Any_)
Return type:
None
---
# Rectangle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Rectangle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Rectangle.rst "Edit this page")
Rectangle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#rectangle "Link to this heading")
===============================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Rectangle`
class Rectangle(_color\=ManimColor('#FFFFFF')_, _height\=2.0_, _width\=4.0_, _grid\_xstep\=None_, _grid\_ystep\=None_, _mark\_paths\_closed\=True_, _close\_new\_points\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Rectangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "Link to this definition")
Bases: [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
A quadrilateral with two sets of parallel sides.
Parameters:
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color of the rectangle.
* **height** (_float_) – The vertical height of the rectangle.
* **width** (_float_) – The horizontal width of the rectangle.
* **grid\_xstep** (_float_ _|_ _None_) – Space between vertical grid lines.
* **grid\_ystep** (_float_ _|_ _None_) – Space between horizontal grid lines.
* **mark\_paths\_closed** (_bool_) – No purpose.
* **close\_new\_points** (_bool_) – No purpose.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
Examples
Example: RectangleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#rectangleexample)

from manim import \*
class RectangleExample(Scene):
def construct(self):
rect1 \= Rectangle(width\=4.0, height\=2.0, grid\_xstep\=1.0, grid\_ystep\=0.5)
rect2 \= Rectangle(width\=1.0, height\=4.0)
rect3 \= Rectangle(width\=2.0, height\=2.0, grid\_xstep\=1.0, grid\_ystep\=1.0)
rect3.grid\_lines.set\_stroke(width\=1)
rects \= Group(rect1, rect2, rect3).arrange(buff\=1)
self.add(rects)
class RectangleExample(Scene):
def construct(self):
rect1 = Rectangle(width=4.0, height=2.0, grid\_xstep=1.0, grid\_ystep=0.5)
rect2 = Rectangle(width=1.0, height=4.0)
rect3 = Rectangle(width=2.0, height=2.0, grid\_xstep=1.0, grid\_ystep=1.0)
rect3.grid\_lines.set\_stroke(width=1)
rects = Group(rect1, rect2, rect3).arrange(buff=1)
self.add(rects)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_color\=ManimColor('#FFFFFF')_, _height\=2.0_, _width\=4.0_, _grid\_xstep\=None_, _grid\_ystep\=None_, _mark\_paths\_closed\=True_, _close\_new\_points\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **height** (_float_)
* **width** (_float_)
* **grid\_xstep** (_float_ _|_ _None_)
* **grid\_ystep** (_float_ _|_ _None_)
* **mark\_paths\_closed** (_bool_)
* **close\_new\_points** (_bool_)
* **kwargs** (_Any_)
---
# SurroundingRectangle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.rst "Edit this page")
SurroundingRectangle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#surroundingrectangle "Link to this heading")
======================================================================================================================================================================================
Qualified name: `manim.mobject.geometry.shape\_matchers.SurroundingRectangle`
class SurroundingRectangle(_\*mobjects_, _color\=ManimColor('#FFFF00')_, _buff\=0.1_, _corner\_radius\=0.0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/shape_matchers.html#SurroundingRectangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "Link to this definition")
Bases: [`RoundedRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#manim.mobject.geometry.polygram.RoundedRectangle "manim.mobject.geometry.polygram.RoundedRectangle")
A rectangle surrounding a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: SurroundingRectExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#surroundingrectexample)

from manim import \*
class SurroundingRectExample(Scene):
def construct(self):
title \= Title("A Quote from Newton")
quote \= Text(
"If I have seen further than others, \\n"
"it is by standing upon the shoulders of giants.",
color\=BLUE,
).scale(0.75)
box \= SurroundingRectangle(quote, color\=YELLOW, buff\=MED\_LARGE\_BUFF)
t2 \= Tex(r"Hello World").scale(1.5)
box2 \= SurroundingRectangle(t2, corner\_radius\=0.2)
mobjects \= VGroup(VGroup(box, quote), VGroup(t2, box2)).arrange(DOWN)
self.add(title, mobjects)
class SurroundingRectExample(Scene):
def construct(self):
title = Title("A Quote from Newton")
quote = Text(
"If I have seen further than others, \\n"
"it is by standing upon the shoulders of giants.",
color=BLUE,
).scale(0.75)
box = SurroundingRectangle(quote, color=YELLOW, buff=MED\_LARGE\_BUFF)
t2 = Tex(r"Hello World").scale(1.5)
box2 = SurroundingRectangle(t2, corner\_radius=0.2)
mobjects = VGroup(VGroup(box, quote), VGroup(t2, box2)).arrange(DOWN)
self.add(title, mobjects)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **buff** (_float_ _|_ _tuple__\[__float__,_ _float__\]_)
* **corner\_radius** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*mobjects_, _color\=ManimColor('#FFFF00')_, _buff\=0.1_, _corner\_radius\=0.0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **buff** (_float_ _|_ _tuple__\[__float__,_ _float__\]_)
* **corner\_radius** (_float_)
* **kwargs** (_Any_)
Return type:
None
---
# SampleSpace - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.probability.SampleSpace.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.probability.SampleSpace.rst "Edit this page")
SampleSpace[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#samplespace "Link to this heading")
========================================================================================================================================================
Qualified name: `manim.mobject.graphing.probability.SampleSpace`
class SampleSpace(_height\=3_, _width\=3_, _fill\_color\=ManimColor('#444444')_, _fill\_opacity\=1_, _stroke\_width\=0.5_, _stroke\_color\=ManimColor('#BBBBBB')_, _default\_label\_scale\_val\=1_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#SampleSpace)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#manim.mobject.graphing.probability.SampleSpace "Link to this definition")
Bases: [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
A mobject representing a twodimensional rectangular sampling space.
Examples
Example: ExampleSampleSpace [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#examplesamplespace)

from manim import \*
class ExampleSampleSpace(Scene):
def construct(self):
poly1 \= SampleSpace(stroke\_width\=15, fill\_opacity\=1)
poly2 \= SampleSpace(width\=5, height\=3, stroke\_width\=5, fill\_opacity\=0.5)
poly3 \= SampleSpace(width\=2, height\=2, stroke\_width\=5, fill\_opacity\=0.1)
poly3.divide\_vertically(p\_list\=np.array(\[0.37, 0.13, 0.5\]), colors\=\[BLACK, WHITE, GRAY\], vect\=RIGHT)
poly\_group \= VGroup(poly1, poly2, poly3).arrange()
self.add(poly\_group)
class ExampleSampleSpace(Scene):
def construct(self):
poly1 = SampleSpace(stroke\_width=15, fill\_opacity=1)
poly2 = SampleSpace(width=5, height=3, stroke\_width=5, fill\_opacity=0.5)
poly3 = SampleSpace(width=2, height=2, stroke\_width=5, fill\_opacity=0.1)
poly3.divide\_vertically(p\_list=np.array(\[0.37, 0.13, 0.5\]), colors=\[BLACK, WHITE, GRAY\], vect=RIGHT)
poly\_group = VGroup(poly1, poly2, poly3).arrange()
self.add(poly\_group)
Methods
| | |
| --- | --- |
| `add_braces_and_labels` | |
| `add_label` | |
| `add_title` | |
| `complete_p_list` | |
| `divide_horizontally` | |
| `divide_vertically` | |
| `get_bottom_braces_and_labels` | |
| `get_division_along_dimension` | |
| `get_horizontal_division` | |
| `get_side_braces_and_labels` | |
| `get_subdivision_braces_and_labels` | |
| `get_top_braces_and_labels` | |
| `get_vertical_division` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **height** (_float_)
* **width** (_float_)
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **default\_label\_scale\_val** (_float_)
\_original\_\_init\_\_(_height\=3_, _width\=3_, _fill\_color\=ManimColor('#444444')_, _fill\_opacity\=1_, _stroke\_width\=0.5_, _stroke\_color\=ManimColor('#BBBBBB')_, _default\_label\_scale\_val\=1_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#manim.mobject.graphing.probability.SampleSpace._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **height** (_float_)
* **width** (_float_)
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **default\_label\_scale\_val** (_float_)
---
# FunctionGraph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.functions.FunctionGraph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.functions.FunctionGraph.rst "Edit this page")
FunctionGraph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#functiongraph "Link to this heading")
============================================================================================================================================================
Qualified name: `manim.mobject.graphing.functions.FunctionGraph`
class FunctionGraph(_function_, _x\_range\=None_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/functions.html#FunctionGraph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#manim.mobject.graphing.functions.FunctionGraph "Link to this definition")
Bases: [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
A [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
that spans the length of the scene by default.
Examples
Example: ExampleFunctionGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#examplefunctiongraph)

from manim import \*
class ExampleFunctionGraph(Scene):
def construct(self):
cos\_func \= FunctionGraph(
lambda t: np.cos(t) + 0.5 \* np.cos(7 \* t) + (1 / 7) \* np.cos(14 \* t),
color\=RED,
)
sin\_func\_1 \= FunctionGraph(
lambda t: np.sin(t) + 0.5 \* np.sin(7 \* t) + (1 / 7) \* np.sin(14 \* t),
color\=BLUE,
)
sin\_func\_2 \= FunctionGraph(
lambda t: np.sin(t) + 0.5 \* np.sin(7 \* t) + (1 / 7) \* np.sin(14 \* t),
x\_range\=\[\-4, 4\],
color\=GREEN,
).move\_to(\[0, 1, 0\])
self.add(cos\_func, sin\_func\_1, sin\_func\_2)
class ExampleFunctionGraph(Scene):
def construct(self):
cos\_func = FunctionGraph(
lambda t: np.cos(t) + 0.5 \* np.cos(7 \* t) + (1 / 7) \* np.cos(14 \* t),
color=RED,
)
sin\_func\_1 = FunctionGraph(
lambda t: np.sin(t) + 0.5 \* np.sin(7 \* t) + (1 / 7) \* np.sin(14 \* t),
color=BLUE,
)
sin\_func\_2 = FunctionGraph(
lambda t: np.sin(t) + 0.5 \* np.sin(7 \* t) + (1 / 7) \* np.sin(14 \* t),
x\_range=\[-4, 4\],
color=GREEN,
).move\_to(\[0, 1, 0\])
self.add(cos\_func, sin\_func\_1, sin\_func\_2)
Methods
| | |
| --- | --- |
| `get_function` | |
| `get_point_from_function` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _Any__\]_)
* **x\_range** (_tuple__\[__float__,_ _float__\]_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_ _|_ _None_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_function_, _x\_range\=None_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#manim.mobject.graphing.functions.FunctionGraph._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _Any__\]_)
* **x\_range** (_tuple__\[__float__,_ _float__\]_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_ _|_ _None_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **kwargs** (_Any_)
Return type:
None
---
# matrix - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.matrix.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.matrix.rst "Edit this page")
matrix[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#module-manim.mobject.matrix "Link to this heading")
=========================================================================================================================================
Mobjects representing matrices.
Examples
Example: MatrixExamples [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#matrixexamples)

from manim import \*
class MatrixExamples(Scene):
def construct(self):
m0 \= Matrix(\[\["\\\\pi", 0\], \[\-1, 1\]\])
m1 \= IntegerMatrix(\[\[1.5, 0.\], \[12, \-1.3\]\],
left\_bracket\="(",
right\_bracket\=")")
m2 \= DecimalMatrix(
\[\[3.456, 2.122\], \[33.2244, 12.33\]\],
element\_to\_mobject\_config\={"num\_decimal\_places": 2},
left\_bracket\=r"\\{",
right\_bracket\=r"\\}")
m3 \= MobjectMatrix(
\[\[Circle().scale(0.3), Square().scale(0.3)\],\
\[MathTex("\\\\pi").scale(2), Star().scale(0.3)\]\],
left\_bracket\="\\\\langle",
right\_bracket\="\\\\rangle")
g \= Group(m0, m1, m2, m3).arrange\_in\_grid(buff\=2)
self.add(g)
class MatrixExamples(Scene):
def construct(self):
m0 = Matrix(\[\["\\\\pi", 0\], \[-1, 1\]\])
m1 = IntegerMatrix(\[\[1.5, 0.\], \[12, -1.3\]\],
left\_bracket="(",
right\_bracket=")")
m2 = DecimalMatrix(
\[\[3.456, 2.122\], \[33.2244, 12.33\]\],
element\_to\_mobject\_config={"num\_decimal\_places": 2},
left\_bracket=r"\\{",
right\_bracket=r"\\}")
m3 = MobjectMatrix(
\[\[Circle().scale(0.3), Square().scale(0.3)\],\
\[MathTex("\\\\pi").scale(2), Star().scale(0.3)\]\],
left\_bracket="\\\\langle",
right\_bracket="\\\\rangle")
g = Group(m0, m1, m2, m3).arrange\_in\_grid(buff=2)
self.add(g)
Classes
| | |
| --- | --- |
| [`DecimalMatrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.DecimalMatrix.html#manim.mobject.matrix.DecimalMatrix "manim.mobject.matrix.DecimalMatrix") | A mobject that displays a matrix with decimal entries on the screen. |
| [`IntegerMatrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.IntegerMatrix.html#manim.mobject.matrix.IntegerMatrix "manim.mobject.matrix.IntegerMatrix") | A mobject that displays a matrix with integer entries on the screen. |
| [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix") | A mobject that displays a matrix on the screen. |
| [`MobjectMatrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#manim.mobject.matrix.MobjectMatrix "manim.mobject.matrix.MobjectMatrix") | A mobject that displays a matrix of mobject entries on the screen. |
Functions
get\_det\_text(_matrix_, _determinant\=None_, _background\_rect\=False_, _initial\_scale\_factor\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#get_det_text)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#manim.mobject.matrix.get_det_text "Link to this definition")
Helper function to create determinant.
Parameters:
* **matrix** ([_Matrix_](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
) – The matrix whose determinant is to be created
* **determinant** (_int_ _|_ _str_ _|_ _None_) – The value of the determinant of the matrix
* **background\_rect** (_bool_) – The background rectangle
* **initial\_scale\_factor** (_float_) – The scale of the text det w.r.t the matrix
Returns:
A VGroup containing the determinant
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: DeterminantOfAMatrix [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#determinantofamatrix)

from manim import \*
class DeterminantOfAMatrix(Scene):
def construct(self):
matrix \= Matrix(\[\
\[2, 0\],\
\[\-1, 1\]\
\])
\# scaling down the \`det\` string
det \= get\_det\_text(matrix,
determinant\=3,
initial\_scale\_factor\=1)
\# must add the matrix
self.add(matrix)
self.add(det)
class DeterminantOfAMatrix(Scene):
def construct(self):
matrix = Matrix(\[\
\[2, 0\],\
\[-1, 1\]\
\])
# scaling down the \`det\` string
det = get\_det\_text(matrix,
determinant=3,
initial\_scale\_factor=1)
# must add the matrix
self.add(matrix)
self.add(det)
matrix\_to\_mobject(_matrix_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#matrix_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#manim.mobject.matrix.matrix_to_mobject "Link to this definition")
Parameters:
**matrix** (_ndarray_)
Return type:
[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
matrix\_to\_tex\_string(_matrix_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#matrix_to_tex_string)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#manim.mobject.matrix.matrix_to_tex_string "Link to this definition")
Parameters:
**matrix** (_ndarray_)
Return type:
str
---
# MobjectMatrix - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.matrix.MobjectMatrix.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.matrix.MobjectMatrix.rst "Edit this page")
MobjectMatrix[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#mobjectmatrix "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.matrix.MobjectMatrix`
class MobjectMatrix(_matrix_, _element\_to\_mobject\=>_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#MobjectMatrix)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#manim.mobject.matrix.MobjectMatrix "Link to this definition")
Bases: [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
A mobject that displays a matrix of mobject entries on the screen.
Examples
Example: MobjectMatrixExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#mobjectmatrixexample)

from manim import \*
class MobjectMatrixExample(Scene):
def construct(self):
a \= Circle().scale(0.3)
b \= Square().scale(0.3)
c \= MathTex("\\\\pi").scale(2)
d \= Star().scale(0.3)
m0 \= MobjectMatrix(\[\[a, b\], \[c, d\]\])
self.add(m0)
class MobjectMatrixExample(Scene):
def construct(self):
a = Circle().scale(0.3)
b = Square().scale(0.3)
c = MathTex("\\\\pi").scale(2)
d = Star().scale(0.3)
m0 = MobjectMatrix(\[\[a, b\], \[c, d\]\])
self.add(m0)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **matrix** (_Iterable_)
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_ _|_ _Callable__\[__...__,_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_matrix_, _element\_to\_mobject\=>_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.MobjectMatrix.html#manim.mobject.matrix.MobjectMatrix._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **matrix** (_Iterable_)
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_ _|_ _Callable__\[__\[__...__\]__,_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **kwargs** (_Any_)
---
# mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.mobject.rst "Edit this page")
mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#module-manim.mobject.mobject "Link to this heading")
============================================================================================================================================
Base classes for objects that can be displayed.
Type Aliases
class TimeBasedUpdater[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.TimeBasedUpdater "Link to this definition")
Callable\[\['Mobject', float\], object\]
class NonTimeBasedUpdater[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.NonTimeBasedUpdater "Link to this definition")
Callable\[\['Mobject'\], object\]
class Updater[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.Updater "Link to this definition")
[`NonTimeBasedUpdater`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.NonTimeBasedUpdater "manim.mobject.mobject.NonTimeBasedUpdater")
| [`TimeBasedUpdater`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.TimeBasedUpdater "manim.mobject.mobject.TimeBasedUpdater")
Classes
| | |
| --- | --- |
| [`Group`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group") | Groups together multiple [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") | Mathematical Object: base class for objects that can be displayed on screen. |
Functions
override\_animate(_method_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#override_animate)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.override_animate "Link to this definition")
Decorator for overriding method animations.
This allows to specify a method (returning an [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
) which is called when the decorated method is used with the `.animate` syntax for animating the application of a method.
See also
[`animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
Note
Overridden methods cannot be combined with normal or other overridden methods using method chaining with the `.animate` syntax.
Examples
Example: AnimationOverrideExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#animationoverrideexample)
from manim import \*
class CircleWithContent(VGroup):
def \_\_init\_\_(self, content):
super().\_\_init\_\_()
self.circle \= Circle()
self.content \= content
self.add(self.circle, content)
content.move\_to(self.circle.get\_center())
def clear\_content(self):
self.remove(self.content)
self.content \= None
@override\_animate(clear\_content)
def \_clear\_content\_animation(self, anim\_args\=None):
if anim\_args is None:
anim\_args \= {}
anim \= Uncreate(self.content, \*\*anim\_args)
self.clear\_content()
return anim
class AnimationOverrideExample(Scene):
def construct(self):
t \= Text("hello!")
my\_mobject \= CircleWithContent(t)
self.play(Create(my\_mobject))
self.play(my\_mobject.animate.clear\_content())
self.wait()
class CircleWithContent(VGroup):
def \_\_init\_\_(self, content):
super().\_\_init\_\_()
self.circle = Circle()
self.content = content
self.add(self.circle, content)
content.move\_to(self.circle.get\_center())
def clear\_content(self):
self.remove(self.content)
self.content = None
@override\_animate(clear\_content)
def \_clear\_content\_animation(self, anim\_args=None):
if anim\_args is None:
anim\_args = {}
anim = Uncreate(self.content, \*\*anim\_args)
self.clear\_content()
return anim
class AnimationOverrideExample(Scene):
def construct(self):
t = Text("hello!")
my\_mobject = CircleWithContent(t)
self.play(Create(my\_mobject))
self.play(my\_mobject.animate.clear\_content())
self.wait()
Return type:
_LambdaType_
---
# TangentialArc - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.arc.TangentialArc.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.arc.TangentialArc.rst "Edit this page")
TangentialArc[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#tangentialarc "Link to this heading")
======================================================================================================================================================
Qualified name: `manim.mobject.geometry.arc.TangentialArc`
class TangentialArc(_line1_, _line2_, _radius_, _corner\=(1, 1)_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TangentialArc)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#manim.mobject.geometry.arc.TangentialArc "Link to this definition")
Bases: [`ArcBetweenPoints`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.ArcBetweenPoints.html#manim.mobject.geometry.arc.ArcBetweenPoints "manim.mobject.geometry.arc.ArcBetweenPoints")
Construct an arc that is tangent to two intersecting lines. You can choose any of the 4 possible corner arcs via the corner tuple. corner = (s1, s2) where each si is ±1 to control direction along each line.
Examples
Example: TangentialArcExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#tangentialarcexample)

from manim import \*
class TangentialArcExample(Scene):
def construct(self):
line1 \= DashedLine(start\=3 \* LEFT, end\=3 \* RIGHT)
line1.rotate(angle\=31 \* DEGREES, about\_point\=ORIGIN)
line2 \= DashedLine(start\=3 \* UP, end\=3 \* DOWN)
line2.rotate(angle\=12 \* DEGREES, about\_point\=ORIGIN)
arc \= TangentialArc(line1, line2, radius\=2.25, corner\=(1, 1), color\=TEAL)
self.add(arc, line1, line2)
class TangentialArcExample(Scene):
def construct(self):
line1 = DashedLine(start=3 \* LEFT, end=3 \* RIGHT)
line1.rotate(angle=31 \* DEGREES, about\_point=ORIGIN)
line2 = DashedLine(start=3 \* UP, end=3 \* DOWN)
line2.rotate(angle=12 \* DEGREES, about\_point=ORIGIN)
arc = TangentialArc(line1, line2, radius=2.25, corner=(1, 1), color=TEAL)
self.add(arc, line1, line2)
The following example shows all four possible corner configurations:
Example: TangentialArcCorners [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#tangentialarccorners)

from manim import \*
class TangentialArcCorners(Scene):
def construct(self):
\# Create two intersecting lines
line1 \= DashedLine(start\=3 \* LEFT, end\=3 \* RIGHT, color\=GREY)
line2 \= DashedLine(start\=3 \* UP, end\=3 \* DOWN, color\=GREY)
\# All four corner configurations with different colors
arc\_pp \= TangentialArc(line1, line2, radius\=1.5, corner\=(1, 1), color\=RED)
arc\_pn \= TangentialArc(line1, line2, radius\=1.5, corner\=(1, \-1), color\=GREEN)
arc\_np \= TangentialArc(line1, line2, radius\=1.5, corner\=(\-1, 1), color\=BLUE)
arc\_nn \= TangentialArc(line1, line2, radius\=1.5, corner\=(\-1, \-1), color\=YELLOW)
\# Labels for each arc
label\_pp \= Text("(1,1)", font\_size\=24, color\=RED).next\_to(arc\_pp, UR, buff\=0.1)
label\_pn \= Text("(1,-1)", font\_size\=24, color\=GREEN).next\_to(arc\_pn, DR, buff\=0.1)
label\_np \= Text("(-1,1)", font\_size\=24, color\=BLUE).next\_to(arc\_np, UL, buff\=0.1)
label\_nn \= Text("(-1,-1)", font\_size\=24, color\=YELLOW).next\_to(arc\_nn, DL, buff\=0.1)
self.add(line1, line2, arc\_pp, arc\_pn, arc\_np, arc\_nn)
self.add(label\_pp, label\_pn, label\_np, label\_nn)
class TangentialArcCorners(Scene):
def construct(self):
# Create two intersecting lines
line1 = DashedLine(start=3 \* LEFT, end=3 \* RIGHT, color=GREY)
line2 = DashedLine(start=3 \* UP, end=3 \* DOWN, color=GREY)
# All four corner configurations with different colors
arc\_pp = TangentialArc(line1, line2, radius=1.5, corner=(1, 1), color=RED)
arc\_pn = TangentialArc(line1, line2, radius=1.5, corner=(1, -1), color=GREEN)
arc\_np = TangentialArc(line1, line2, radius=1.5, corner=(-1, 1), color=BLUE)
arc\_nn = TangentialArc(line1, line2, radius=1.5, corner=(-1, -1), color=YELLOW)
# Labels for each arc
label\_pp = Text("(1,1)", font\_size=24, color=RED).next\_to(arc\_pp, UR, buff=0.1)
label\_pn = Text("(1,-1)", font\_size=24, color=GREEN).next\_to(arc\_pn, DR, buff=0.1)
label\_np = Text("(-1,1)", font\_size=24, color=BLUE).next\_to(arc\_np, UL, buff=0.1)
label\_nn = Text("(-1,-1)", font\_size=24, color=YELLOW).next\_to(arc\_nn, DL, buff=0.1)
self.add(line1, line2, arc\_pp, arc\_pn, arc\_np, arc\_nn)
self.add(label\_pp, label\_pn, label\_np, label\_nn)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **radius** (_float_)
* **corner** (_Any_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_line1_, _line2_, _radius_, _corner\=(1, 1)_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TangentialArc.html#manim.mobject.geometry.arc.TangentialArc._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **radius** (_float_)
* **corner** (_Any_)
* **kwargs** (_Any_)
---
# TipableVMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.arc.TipableVMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.arc.TipableVMobject.rst "Edit this page")
TipableVMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#tipablevmobject "Link to this heading")
============================================================================================================================================================
Qualified name: `manim.mobject.geometry.arc.TipableVMobject`
class TipableVMobject(_tip\_length\=0.35_, _normal\_vector\=array(\[0., 0., 1.\])_, _tip\_style\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Meant for shared functionality between Arc and Line. Functionality can be classified broadly into these groups:
> * Adding, Creating, Modifying tips
>
> * add\_tip calls create\_tip, before pushing the new tip
>
> into the TipableVMobject’s list of submobjects
>
> * stylistic and positional configuration
>
>
> * Checking for tips
>
> * Boolean checks for whether the TipableVMobject has a tip
>
> and a starting tip
>
>
> * Getters
>
> * Straightforward accessors, returning information pertaining
>
> to the TipableVMobject instance’s tip(s), its length etc
>
>
Methods
| | |
| --- | --- |
| [`add_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.add_tip "manim.mobject.geometry.arc.TipableVMobject.add_tip") | Adds a tip to the TipableVMobject instance, recognising that the endpoints might need to be switched if it's a 'starting tip' or not. |
| `assign_tip_attr` | |
| [`create_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.create_tip "manim.mobject.geometry.arc.TipableVMobject.create_tip") | Stylises the tip, positions it spatially, and returns the newly instantiated tip to the caller. |
| `get_default_tip_length` | |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_end "manim.mobject.geometry.arc.TipableVMobject.get_end") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends. |
| `get_first_handle` | |
| `get_last_handle` | |
| `get_length` | |
| [`get_start`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_start "manim.mobject.geometry.arc.TipableVMobject.get_start") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts. |
| [`get_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_tip "manim.mobject.geometry.arc.TipableVMobject.get_tip") | Returns the TipableVMobject instance's (first) tip, otherwise throws an exception. |
| [`get_tips`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_tips "manim.mobject.geometry.arc.TipableVMobject.get_tips") | Returns a VGroup (collection of VMobjects) containing the TipableVMObject instance's tips. |
| [`get_unpositioned_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_unpositioned_tip "manim.mobject.geometry.arc.TipableVMobject.get_unpositioned_tip") | Returns a tip that has been stylistically configured, but has not yet been given a position in space. |
| `has_start_tip` | |
| `has_tip` | |
| `pop_tips` | |
| `position_tip` | |
| `reset_endpoints_based_on_tip` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **tip\_length** (_float_)
* **normal\_vector** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **tip\_style** (_dict_ _|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_tip\_length\=0.35_, _normal\_vector\=array(\[0., 0., 1.\])_, _tip\_style\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **tip\_length** (_float_)
* **normal\_vector** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **tip\_style** (_dict_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
add\_tip(_tip\=None_, _tip\_shape\=None_, _tip\_length\=None_, _tip\_width\=None_, _at\_start\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.add_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.add_tip "Link to this definition")
Adds a tip to the TipableVMobject instance, recognising that the endpoints might need to be switched if it’s a ‘starting tip’ or not.
Parameters:
* **tip** ([_tips.ArrowTip_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
_|_ _None_)
* **tip\_shape** (_type__\[_[_tips.ArrowTip_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")\
_\]_ _|_ _None_)
* **tip\_length** (_float_ _|_ _None_)
* **tip\_width** (_float_ _|_ _None_)
* **at\_start** (_bool_)
Return type:
Self
create\_tip(_tip\_shape\=None_, _tip\_length\=None_, _tip\_width\=None_, _at\_start\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.create_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.create_tip "Link to this definition")
Stylises the tip, positions it spatially, and returns the newly instantiated tip to the caller.
Parameters:
* **tip\_shape** (_type__\[_[_tips.ArrowTip_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")\
_\]_ _|_ _None_)
* **tip\_length** (_float_ _|_ _None_)
* **tip\_width** (_float_ _|_ _None_)
* **at\_start** (_bool_)
Return type:
[tips.ArrowTip](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_end "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_start()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.get_start)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_start "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_tip()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.get_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_tip "Link to this definition")
Returns the TipableVMobject instance’s (first) tip, otherwise throws an exception.
Return type:
[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
get\_tips()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.get_tips)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_tips "Link to this definition")
Returns a VGroup (collection of VMobjects) containing the TipableVMObject instance’s tips.
Return type:
[_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
get\_unpositioned\_tip(_tip\_shape\=None_, _tip\_length\=None_, _tip\_width\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/arc.html#TipableVMobject.get_unpositioned_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject.get_unpositioned_tip "Link to this definition")
Returns a tip that has been stylistically configured, but has not yet been given a position in space.
Parameters:
* **tip\_shape** (_type__\[_[_tips.ArrowTip_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")\
_\]_ _|_ _None_)
* **tip\_length** (_float_ _|_ _None_)
* **tip\_width** (_float_ _|_ _None_)
Return type:
[tips.ArrowTip](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
| [tips.ArrowTriangleFilledTip](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip "manim.mobject.geometry.tips.ArrowTriangleFilledTip")
---
# Polygram - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.polygram.Polygram.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.polygram.Polygram.rst "Edit this page")
Polygram[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#polygram "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.geometry.polygram.Polygram`
class Polygram(_\*vertex\_groups_, _color\=ManimColor('#58C4DD')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Polygram)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A generalized [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
, allowing for disconnected sets of edges.
Parameters:
* **vertex\_groups** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
) –
The groups of vertices making up the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
The first vertex in each group is repeated to close the shape. Each point must be 3-dimensional: `[x,y,z]`
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: PolygramExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#polygramexample)
from manim import \*
import numpy as np
class PolygramExample(Scene):
def construct(self):
hexagram \= Polygram(
\[\[0, 2, 0\], \[\-np.sqrt(3), \-1, 0\], \[np.sqrt(3), \-1, 0\]\],
\[\[\-np.sqrt(3), 1, 0\], \[0, \-2, 0\], \[np.sqrt(3), 1, 0\]\],
)
self.add(hexagram)
dot \= Dot()
self.play(MoveAlongPath(dot, hexagram), run\_time\=5, rate\_func\=linear)
self.remove(dot)
self.wait()
import numpy as np
class PolygramExample(Scene):
def construct(self):
hexagram = Polygram(
\[\[0, 2, 0\], \[-np.sqrt(3), -1, 0\], \[np.sqrt(3), -1, 0\]\],
\[\[-np.sqrt(3), 1, 0\], \[0, -2, 0\], \[np.sqrt(3), 1, 0\]\],
)
self.add(hexagram)
dot = Dot()
self.play(MoveAlongPath(dot, hexagram), run\_time=5, rate\_func=linear)
self.remove(dot)
self.wait()
Methods
| | |
| --- | --- |
| [`get_vertex_groups`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.get_vertex_groups "manim.mobject.geometry.polygram.Polygram.get_vertex_groups") | Gets the vertex groups of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
. |
| [`get_vertices`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.get_vertices "manim.mobject.geometry.polygram.Polygram.get_vertices") | Gets the vertices of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
. |
| [`round_corners`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.round_corners "manim.mobject.geometry.polygram.Polygram.round_corners") | Rounds off the corners of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*vertex\_groups_, _color\=ManimColor('#58C4DD')_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertex\_groups** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **kwargs** (_Any_)
get\_vertex\_groups()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Polygram.get_vertex_groups)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.get_vertex_groups "Link to this definition")
Gets the vertex groups of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
Returns:
The list of vertex groups of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
Return type:
list\[[Point3D\_Array](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")\
\]
Examples
\>>> poly \= Polygram(\[ORIGIN, RIGHT, UP, LEFT + UP\], \[LEFT, LEFT + UP, 2 \* LEFT\])
\>>> groups \= poly.get\_vertex\_groups()
\>>> len(groups)
2
\>>> groups\[0\]
array(\[\[ 0., 0., 0.\],\
\[ 1., 0., 0.\],\
\[ 0., 1., 0.\],\
\[-1., 1., 0.\]\])
\>>> groups\[1\]
array(\[\[-1., 0., 0.\],\
\[-1., 1., 0.\],\
\[-2., 0., 0.\]\])
get\_vertices()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Polygram.get_vertices)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.get_vertices "Link to this definition")
Gets the vertices of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
Returns:
The vertices of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
Return type:
`numpy.ndarray`
Examples
\>>> sq \= Square()
\>>> sq.get\_vertices()
array(\[\[ 1., 1., 0.\],\
\[-1., 1., 0.\],\
\[-1., -1., 0.\],\
\[ 1., -1., 0.\]\])
round\_corners(_radius\=0.5_, _evenly\_distribute\_anchors\=False_, _components\_per\_rounded\_corner\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/polygram.html#Polygram.round_corners)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.round_corners "Link to this definition")
Rounds off the corners of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
Parameters:
* **radius** (_float_ _|_ _list__\[__float__\]_) – The curvature of the corners of the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
* **evenly\_distribute\_anchors** (_bool_) – Break long line segments into proportionally-sized segments.
* **components\_per\_rounded\_corner** (_int_) – The number of points used to represent the rounded corner curve.
Return type:
Self
See also
`RoundedRectangle`
Note
If radius is supplied as a single value, then the same radius will be applied to all corners. If radius is a list, then the individual values will be applied sequentially, with the first corner receiving radius\[0\], the second corner receiving radius\[1\], etc. The radius list will be repeated as necessary.
The components\_per\_rounded\_corner value is provided so that the fidelity of the rounded corner may be fine-tuned as needed. 2 is an appropriate value for most shapes, however a larger value may be need if the rounded corner is particularly large. 2 is the minimum number allowed, representing the start and end of the curve. 3 will result in a start, middle, and end point, meaning 2 curves will be generated.
The option to evenly\_distribute\_anchors is provided so that the line segments (the part part of each line remaining after rounding off the corners) can be subdivided to a density similar to that of the average density of the rounded corners. This may be desirable in situations in which an even distribution of curves is desired for use in later transformation animations. Be aware, though, that enabling this option can result in an an object containing significantly more points than the original, especially when the rounded corner curves are small.
Examples
Example: PolygramRoundCorners [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#polygramroundcorners)

from manim import \*
class PolygramRoundCorners(Scene):
def construct(self):
star \= Star(outer\_radius\=2)
shapes \= VGroup(star)
shapes.add(star.copy().round\_corners(radius\=0.1))
shapes.add(star.copy().round\_corners(radius\=0.25))
shapes.arrange(RIGHT)
self.add(shapes)
class PolygramRoundCorners(Scene):
def construct(self):
star = Star(outer\_radius=2)
shapes = VGroup(star)
shapes.add(star.copy().round\_corners(radius=0.1))
shapes.add(star.copy().round\_corners(radius=0.25))
shapes.arrange(RIGHT)
self.add(shapes)
---
# NumberPlane - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.rst "Edit this page")
NumberPlane[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#numberplane "Link to this heading")
===============================================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.NumberPlane`
class NumberPlane(_x\_range\=(-7.111111111111111, 7.111111111111111, 1)_, _y\_range\=(-4.0, 4.0, 1)_, _x\_length\=None_, _y\_length\=None_, _background\_line\_style\=None_, _faded\_line\_style\=None_, _faded\_line\_ratio\=1_, _make\_smooth\_after\_applying\_functions\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#NumberPlane)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "Link to this definition")
Bases: [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
Creates a cartesian plane with background lines.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `[x_min, x_max, x_step]` values of the plane in the horizontal direction.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `[y_min, y_max, y_step]` values of the plane in the vertical direction.
* **x\_length** (_float_ _|_ _None_) – The width of the plane.
* **y\_length** (_float_ _|_ _None_) – The height of the plane.
* **background\_line\_style** (_dict__\[__str__,_ _Any__\]_) – Arguments that influence the construction of the background lines of the plane.
* **faded\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Similar to `background_line_style`, affects the construction of the scene’s background lines.
* **faded\_line\_ratio** (_int_) – Determines the number of boxes within the background lines: `2` = 4 boxes, `3` = 9 boxes.
* **make\_smooth\_after\_applying\_functions** (_bool_) – Currently non-functional.
* **kwargs** (_dict__\[__str__,_ _Any__\]_) – Additional arguments to be passed to [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
.
Note
If `x_length` or `y_length` are not defined, they are automatically calculated such that one unit on each axis is one Manim unit long.
Examples
Example: NumberPlaneExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#numberplaneexample)

from manim import \*
class NumberPlaneExample(Scene):
def construct(self):
number\_plane \= NumberPlane(
background\_line\_style\={
"stroke\_color": TEAL,
"stroke\_width": 4,
"stroke\_opacity": 0.6
}
)
self.add(number\_plane)
class NumberPlaneExample(Scene):
def construct(self):
number\_plane = NumberPlane(
background\_line\_style={
"stroke\_color": TEAL,
"stroke\_width": 4,
"stroke\_opacity": 0.6
}
)
self.add(number\_plane)
Example: NumberPlaneScaled [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#numberplanescaled)

from manim import \*
class NumberPlaneScaled(Scene):
def construct(self):
number\_plane \= NumberPlane(
x\_range\=(\-4, 11, 1),
y\_range\=(\-3, 3, 1),
x\_length\=5,
y\_length\=2,
).move\_to(LEFT\*3)
number\_plane\_scaled\_y \= NumberPlane(
x\_range\=(\-4, 11, 1),
x\_length\=5,
y\_length\=4,
).move\_to(RIGHT\*3)
self.add(number\_plane)
self.add(number\_plane\_scaled\_y)
class NumberPlaneScaled(Scene):
def construct(self):
number\_plane = NumberPlane(
x\_range=(-4, 11, 1),
y\_range=(-3, 3, 1),
x\_length=5,
y\_length=2,
).move\_to(LEFT\*3)
number\_plane\_scaled\_y = NumberPlane(
x\_range=(-4, 11, 1),
x\_length=5,
y\_length=4,
).move\_to(RIGHT\*3)
self.add(number\_plane)
self.add(number\_plane\_scaled\_y)
Methods
| | |
| --- | --- |
| `get_vector` | |
| `prepare_for_nonlinear_transform` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_get\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#NumberPlane._get_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane._get_lines "Link to this definition")
Generate all the lines, faded and not faded.
Two sets of lines are generated: one parallel to the X-axis, and parallel to the Y-axis.
Returns:
The first (i.e the non faded lines) and second (i.e the faded lines) sets of lines, respectively.
Return type:
Tuple\[[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
\_get\_lines\_parallel\_to\_axis(_axis\_parallel\_to_, _axis\_perpendicular\_to_, _freq_, _ratio\_faded\_lines_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#NumberPlane._get_lines_parallel_to_axis)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane._get_lines_parallel_to_axis "Link to this definition")
Generate a set of lines parallel to an axis.
Parameters:
* **axis\_parallel\_to** ([_NumberLine_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
) – The axis with which the lines will be parallel.
* **axis\_perpendicular\_to** ([_NumberLine_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
) – The axis with which the lines will be perpendicular.
* **ratio\_faded\_lines** (_int_) – The ratio between the space between faded lines and the space between non-faded lines.
* **freq** (_float_) – Frequency of non-faded lines (number of non-faded lines per graph unit).
Returns:
The first (i.e the non-faded lines parallel to axis\_parallel\_to) and second
(i.e the faded lines parallel to axis\_parallel\_to) sets of lines, respectively.
Return type:
Tuple\[[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
\_init\_background\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#NumberPlane._init_background_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane._init_background_lines "Link to this definition")
Will init all the lines of NumberPlanes (faded or not)
Return type:
None
\_original\_\_init\_\_(_x\_range\=(-7.111111111111111, 7.111111111111111, 1)_, _y\_range\=(-4.0, 4.0, 1)_, _x\_length\=None_, _y\_length\=None_, _background\_line\_style\=None_, _faded\_line\_style\=None_, _faded\_line\_ratio\=1_, _make\_smooth\_after\_applying\_functions\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **x\_length** (_float_ _|_ _None_)
* **y\_length** (_float_ _|_ _None_)
* **background\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_ratio** (_int_)
* **make\_smooth\_after\_applying\_functions** (_bool_)
* **kwargs** (_dict__\[__str__,_ _Any__\]_)
---
# Line - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.Line.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.Line.rst "Edit this page")
Line[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#line "Link to this heading")
============================================================================================================================
Qualified name: `manim.mobject.geometry.line.Line`
class Line(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _buff\=0_, _path\_arc\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "Link to this definition")
Bases: [`TipableVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.TipableVMobject.html#manim.mobject.geometry.arc.TipableVMobject "manim.mobject.geometry.arc.TipableVMobject")
A straight or curved line segment between two points or mobjects.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The starting point or Mobject of the line.
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The ending point or Mobject of the line.
* **buff** (_float_) – The distance to shorten the line from both ends.
* **path\_arc** (_float_) – If nonzero, the line will be curved into an arc with this angle (in radians).
* **kwargs** (_Any_) – Additional arguments to be passed to `TipableVMobject`
Examples
Example: LineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#lineexample)

from manim import \*
class LineExample(Scene):
def construct(self):
line1 \= Line(LEFT\*2, RIGHT\*2)
line2 \= Line(LEFT\*2, RIGHT\*2, buff\=0.5)
line3 \= Line(LEFT\*2, RIGHT\*2, path\_arc\=PI/2)
grp \= VGroup(line1,line2,line3).arrange(DOWN, buff\=2)
self.add(grp)
class LineExample(Scene):
def construct(self):
line1 = Line(LEFT\*2, RIGHT\*2)
line2 = Line(LEFT\*2, RIGHT\*2, buff=0.5)
line3 = Line(LEFT\*2, RIGHT\*2, path\_arc=PI/2)
grp = VGroup(line1,line2,line3).arrange(DOWN, buff=2)
self.add(grp)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.generate_points "manim.mobject.geometry.line.Line.generate_points") | Initializes `points` and therefore the shape. |
| `get_angle` | |
| [`get_projection`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.get_projection "manim.mobject.geometry.line.Line.get_projection") | Returns the projection of a point onto a line. |
| `get_slope` | |
| `get_unit_vector` | |
| `get_vector` | |
| `init_points` | |
| [`put_start_and_end_on`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.put_start_and_end_on "manim.mobject.geometry.line.Line.put_start_and_end_on") | Sets starts and end coordinates of a line. |
| `set_angle` | |
| `set_length` | |
| `set_path_arc` | |
| [`set_points_by_ends`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.set_points_by_ends "manim.mobject.geometry.line.Line.set_points_by_ends") | Sets the points of the line based on its start and end points. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _buff\=0_, _path\_arc\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **start** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **end** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **buff** (_float_)
* **path\_arc** (_float_)
* **kwargs** (_Any_)
Return type:
None
\_pointify(_mob\_or\_point_, _direction\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line._pointify)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line._pointify "Link to this definition")
Transforms a mobject into its corresponding point. Does nothing if a point is passed.
`direction` determines the location of the point along its bounding box in that direction.
Parameters:
* **mob\_or\_point** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_) – The mobject or point.
* **direction** (_TypeAliasForwardRef__(__'~manim.typing.Vector3DLike'__)_ _|_ _None_) – The direction.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
None
get\_projection(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line.get_projection)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.get_projection "Link to this definition")
Returns the projection of a point onto a line.
Parameters:
**point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point to which the line is projected.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
put\_start\_and\_end\_on(_start_, _end_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line.put_start_and_end_on)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.put_start_and_end_on "Link to this definition")
Sets starts and end coordinates of a line.
Examples
Example: LineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#lineexample)
from manim import \*
class LineExample(Scene):
def construct(self):
d \= VGroup()
for i in range(0,10):
d.add(Dot())
d.arrange\_in\_grid(buff\=1)
self.add(d)
l\= Line(d\[0\], d\[1\])
self.add(l)
self.wait()
l.put\_start\_and\_end\_on(d\[1\].get\_center(), d\[2\].get\_center())
self.wait()
l.put\_start\_and\_end\_on(d\[4\].get\_center(), d\[7\].get\_center())
self.wait()
class LineExample(Scene):
def construct(self):
d = VGroup()
for i in range(0,10):
d.add(Dot())
d.arrange\_in\_grid(buff=1)
self.add(d)
l= Line(d\[0\], d\[1\])
self.add(l)
self.wait()
l.put\_start\_and\_end\_on(d\[1\].get\_center(), d\[2\].get\_center())
self.wait()
l.put\_start\_and\_end\_on(d\[4\].get\_center(), d\[7\].get\_center())
self.wait()
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
Return type:
Self
set\_points\_by\_ends(_start_, _end_, _buff\=0_, _path\_arc\=0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Line.set_points_by_ends)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.set_points_by_ends "Link to this definition")
Sets the points of the line based on its start and end points. Unlike [`put_start_and_end_on()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.put_start_and_end_on "manim.mobject.geometry.line.Line.put_start_and_end_on")
, this method respects self.buff and Mobject bounding boxes.
Parameters:
* **start** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The start point or Mobject of the line.
* **end** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The end point or Mobject of the line.
* **buff** (_float_) – The empty space between the start and end of the line, by default 0.
* **path\_arc** (_float_) – The angle of a circle spanned by this arc, by default 0 which is a straight line.
Return type:
None
---
# ComplexPlane - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.rst "Edit this page")
ComplexPlane[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#complexplane "Link to this heading")
==================================================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.ComplexPlane`
class ComplexPlane(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane "Link to this definition")
Bases: [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
A [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
specialized for use with complex numbers.
Examples
Example: ComplexPlaneExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#complexplaneexample)

from manim import \*
class ComplexPlaneExample(Scene):
def construct(self):
plane \= ComplexPlane().add\_coordinates()
self.add(plane)
d1 \= Dot(plane.n2p(2 + 1j), color\=YELLOW)
d2 \= Dot(plane.n2p(\-3 \- 2j), color\=YELLOW)
label1 \= MathTex("2+i").next\_to(d1, UR, 0.1)
label2 \= MathTex("-3-2i").next\_to(d2, UR, 0.1)
self.add(
d1,
label1,
d2,
label2,
)
class ComplexPlaneExample(Scene):
def construct(self):
plane = ComplexPlane().add\_coordinates()
self.add(plane)
d1 = Dot(plane.n2p(2 + 1j), color=YELLOW)
d2 = Dot(plane.n2p(-3 - 2j), color=YELLOW)
label1 = MathTex("2+i").next\_to(d1, UR, 0.1)
label2 = MathTex("-3-2i").next\_to(d2, UR, 0.1)
self.add(
d1,
label1,
d2,
label2,
)
References: [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
[`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
Methods
| | |
| --- | --- |
| [`add_coordinates`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.add_coordinates "manim.mobject.graphing.coordinate_systems.ComplexPlane.add_coordinates") | Adds the labels produced from `get_coordinate_labels()` to the plane. |
| [`get_coordinate_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.get_coordinate_labels "manim.mobject.graphing.coordinate_systems.ComplexPlane.get_coordinate_labels") | Generates the [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobjects for the coordinates of the plane. |
| [`n2p`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.n2p "manim.mobject.graphing.coordinate_systems.ComplexPlane.n2p") | Abbreviation for [`number_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point "manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point")
. |
| [`number_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point "manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point") | Accepts a float/complex number and returns the equivalent point on the plane. |
| [`p2n`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.p2n "manim.mobject.graphing.coordinate_systems.ComplexPlane.p2n") | Abbreviation for [`point_to_number()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number "manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number")
. |
| [`point_to_number`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number "manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number") | Accepts a point and returns a complex number equivalent to that point on the plane. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
**kwargs** (_Any_)
\_get\_default\_coordinate\_values()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane._get_default_coordinate_values)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane._get_default_coordinate_values "Link to this definition")
Generate a list containing the numerical values of the plane’s labels.
Returns:
A list of floats representing the x-axis and complex numbers representing the y-axis.
Return type:
List\[float | complex\]
\_original\_\_init\_\_(_\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
**kwargs** (_Any_)
add\_coordinates(_\*numbers_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.add_coordinates)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.add_coordinates "Link to this definition")
Adds the labels produced from `get_coordinate_labels()` to the plane.
Parameters:
* **numbers** (_Iterable__\[__float_ _|_ _complex__\]_) – An iterable of floats/complex numbers. Floats are positioned along the x-axis, complex numbers along the y-axis.
* **kwargs** (_Any_) – Additional arguments to be passed to [`get_number_mobject()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_number_mobject "manim.mobject.graphing.number_line.NumberLine.get_number_mobject")
, i.e. [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
Return type:
_Self_
get\_coordinate\_labels(_\*numbers_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.get_coordinate_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.get_coordinate_labels "Link to this definition")
Generates the [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobjects for the coordinates of the plane.
Parameters:
* **numbers** (_Iterable__\[__float_ _|_ _complex__\]_) – An iterable of floats/complex numbers. Floats are positioned along the x-axis, complex numbers along the y-axis.
* **kwargs** (_Any_) – Additional arguments to be passed to [`get_number_mobject()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_number_mobject "manim.mobject.graphing.number_line.NumberLine.get_number_mobject")
, i.e. [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing the positioned label mobjects.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
n2p(_number_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.n2p)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.n2p "Link to this definition")
Abbreviation for [`number_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point "manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point")
.
Parameters:
**number** (_float_ _|_ _complex_)
Return type:
_ndarray_
number\_to\_point(_number_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.number_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.number_to_point "Link to this definition")
Accepts a float/complex number and returns the equivalent point on the plane.
Parameters:
**number** (_float_ _|_ _complex_) – The number. Can be a float or a complex number.
Returns:
The point on the plane.
Return type:
np.ndarray
p2n(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.p2n)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.p2n "Link to this definition")
Abbreviation for [`point_to_number()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number "manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number")
.
Parameters:
**point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
Return type:
complex
point\_to\_number(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ComplexPlane.point_to_number)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane.point_to_number "Link to this definition")
Accepts a point and returns a complex number equivalent to that point on the plane.
Parameters:
**point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point in manim’s coordinate-system
Returns:
A complex number consisting of real and imaginary components.
Return type:
complex
---
# PolarPlane - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.rst "Edit this page")
PolarPlane[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#polarplane "Link to this heading")
============================================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.PolarPlane`
class PolarPlane(_radius\_max\=4.0_, _size\=None_, _radius\_step\=1_, _azimuth\_step\=None_, _azimuth\_units\='PI radians'_, _azimuth\_compact\_fraction\=True_, _azimuth\_offset\=0_, _azimuth\_direction\='CCW'_, _azimuth\_label\_buff\=0.1_, _azimuth\_label\_font\_size\=24_, _radius\_config\=None_, _background\_line\_style\=None_, _faded\_line\_style\=None_, _faded\_line\_ratio\=1_, _make\_smooth\_after\_applying\_functions\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "Link to this definition")
Bases: [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
Creates a polar plane with background lines.
Parameters:
* **azimuth\_step** (_float_ _|_ _None_) –
The number of divisions in the azimuth (also known as the angular coordinate or polar angle). If `None` is specified then it will use the default specified by `azimuth_units`:
* `"PI radians"` or `"TAU radians"`: 20
* `"degrees"`: 36
* `"gradians"`: 40
* `None`: 1
A non-integer value will result in a partial division at the end of the circle.
* **size** (_float_ _|_ _None_) – The diameter of the plane.
* **radius\_step** (_float_) – The distance between faded radius lines.
* **radius\_max** (_float_) – The maximum value of the radius.
* **azimuth\_units** (_str_) –
Specifies a default labelling system for the azimuth. Choices are:
* `"PI radians"`: Fractional labels in the interval \\(\\left\[0, 2\\pi\\right\]\\) with \\(\\pi\\) as a constant.
* `"TAU radians"`: Fractional labels in the interval \\(\\left\[0, \\tau\\right\]\\) (where \\(\\tau = 2\\pi\\)) with \\(\\tau\\) as a constant.
* `"degrees"`: Decimal labels in the interval \\(\\left\[0, 360\\right\]\\) with a degree (\\(^{\\circ}\\)) symbol.
* `"gradians"`: Decimal labels in the interval \\(\\left\[0, 400\\right\]\\) with a superscript “g” (\\(^{g}\\)).
* `None`: Decimal labels in the interval \\(\\left\[0, 1\\right\]\\).
* **azimuth\_compact\_fraction** (_bool_) – If the `azimuth_units` choice has fractional labels, choose whether to combine the constant in a compact form \\(\\tfrac{xu}{y}\\) as opposed to \\(\\tfrac{x}{y}u\\), where \\(u\\) is the constant.
* **azimuth\_offset** (_float_) – The angle offset of the azimuth, expressed in radians.
* **azimuth\_direction** (_str_) –
The direction of the azimuth.
* `"CW"`: Clockwise.
* `"CCW"`: Anti-clockwise.
* **azimuth\_label\_buff** (_float_) – The buffer for the azimuth labels.
* **azimuth\_label\_font\_size** (_float_) – The font size of the azimuth labels.
* **radius\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – The axis config for the radius.
* **background\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_ratio** (_int_)
* **make\_smooth\_after\_applying\_functions** (_bool_)
* **kwargs** (_Any_)
Examples
Example: PolarPlaneExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#polarplaneexample)

from manim import \*
class PolarPlaneExample(Scene):
def construct(self):
polarplane\_pi \= PolarPlane(
azimuth\_units\="PI radians",
size\=6,
azimuth\_label\_font\_size\=33.6,
radius\_config\={"font\_size": 33.6},
).add\_coordinates()
self.add(polarplane\_pi)
class PolarPlaneExample(Scene):
def construct(self):
polarplane\_pi = PolarPlane(
azimuth\_units="PI radians",
size=6,
azimuth\_label\_font\_size=33.6,
radius\_config={"font\_size": 33.6},
).add\_coordinates()
self.add(polarplane\_pi)
References: [`PolarPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "manim.mobject.graphing.coordinate_systems.PolarPlane")
Methods
| | |
| --- | --- |
| [`add_coordinates`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.add_coordinates "manim.mobject.graphing.coordinate_systems.PolarPlane.add_coordinates") | Adds the coordinates. |
| [`get_axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.get_axes "manim.mobject.graphing.coordinate_systems.PolarPlane.get_axes") | Gets the axes. |
| [`get_coordinate_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.get_coordinate_labels "manim.mobject.graphing.coordinate_systems.PolarPlane.get_coordinate_labels") | Gets labels for the coordinates |
| `get_radian_label` | |
| `get_vector` | |
| `prepare_for_nonlinear_transform` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_get\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane._get_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane._get_lines "Link to this definition")
Generate all the lines and circles, faded and not faded.
Returns:
The first (i.e the non faded lines and circles) and second (i.e the faded lines and circles) sets of lines and circles, respectively.
Return type:
Tuple\[[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
\_init\_background\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane._init_background_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane._init_background_lines "Link to this definition")
Will init all the lines of NumberPlanes (faded or not)
Return type:
None
\_original\_\_init\_\_(_radius\_max\=4.0_, _size\=None_, _radius\_step\=1_, _azimuth\_step\=None_, _azimuth\_units\='PI radians'_, _azimuth\_compact\_fraction\=True_, _azimuth\_offset\=0_, _azimuth\_direction\='CCW'_, _azimuth\_label\_buff\=0.1_, _azimuth\_label\_font\_size\=24_, _radius\_config\=None_, _background\_line\_style\=None_, _faded\_line\_style\=None_, _faded\_line\_ratio\=1_, _make\_smooth\_after\_applying\_functions\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **radius\_max** (_float_)
* **size** (_float_ _|_ _None_)
* **radius\_step** (_float_)
* **azimuth\_step** (_float_ _|_ _None_)
* **azimuth\_units** (_str_)
* **azimuth\_compact\_fraction** (_bool_)
* **azimuth\_offset** (_float_)
* **azimuth\_direction** (_str_)
* **azimuth\_label\_buff** (_float_)
* **azimuth\_label\_font\_size** (_float_)
* **radius\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **background\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **faded\_line\_ratio** (_int_)
* **make\_smooth\_after\_applying\_functions** (_bool_)
* **kwargs** (_Any_)
add\_coordinates(_r\_values\=None_, _a\_values\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane.add_coordinates)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.add_coordinates "Link to this definition")
Adds the coordinates.
Parameters:
* **r\_values** (_Iterable__\[__float__\]_ _|_ _None_) – Iterable of values along the radius, by default None.
* **a\_values** (_Iterable__\[__float__\]_ _|_ _None_) – Iterable of values along the azimuth, by default None.
Return type:
_Self_
get\_axes()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane.get_axes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.get_axes "Link to this definition")
Gets the axes.
Returns:
A pair of axes.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
get\_coordinate\_labels(_r\_values\=None_, _a\_values\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#PolarPlane.get_coordinate_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane.get_coordinate_labels "Link to this definition")
Gets labels for the coordinates
Parameters:
* **r\_values** (_Iterable__\[__float__\]_ _|_ _None_) – Iterable of values along the radius, by default None.
* **a\_values** (_Iterable__\[__float__\]_ _|_ _None_) – Iterable of values along the azimuth, by default None.
* **kwargs** (_Any_)
Returns:
Labels for the radius and azimuth values.
Return type:
[VDict](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VDict.html#manim.mobject.types.vectorized_mobject.VDict "manim.mobject.types.vectorized_mobject.VDict")
---
# Brace - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.Brace.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.Brace.rst "Edit this page")
Brace[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#brace "Link to this heading")
===========================================================================================================================
Qualified name: `manim.mobject.svg.brace.Brace`
class Brace(_mobject_, _direction\=array(\[0., \-1., 0.\])_, _buff\=0.2_, _sharpness\=2_, _stroke\_width\=0_, _fill\_opacity\=1.0_, _background\_stroke\_width\=0_, _background\_stroke\_color\=ManimColor('#000000')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "Link to this definition")
Bases: [`VMobjectFromSVGPath`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath")
Takes a mobject and draws a brace adjacent to it.
Passing a direction vector determines the direction from which the brace is drawn. By default it is drawn from below.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject adjacent to which the brace is placed.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction from which the brace faces the mobject.
* **buff** (_float_)
* **sharpness** (_float_)
* **stroke\_width** (_float_)
* **fill\_opacity** (_float_)
* **background\_stroke\_width** (_float_)
* **background\_stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **kwargs** (_Any_)
See also
[`BraceBetweenPoints`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceBetweenPoints.html#manim.mobject.svg.brace.BraceBetweenPoints "manim.mobject.svg.brace.BraceBetweenPoints")
Examples
Example: BraceExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#braceexample)

from manim import \*
class BraceExample(Scene):
def construct(self):
s \= Square()
self.add(s)
for i in np.linspace(0.1,1.0,4):
br \= Brace(s, sharpness\=i)
t \= Text(f"sharpness= {i}").next\_to(br, RIGHT)
self.add(t)
self.add(br)
VGroup(\*self.mobjects).arrange(DOWN, buff\=0.2)
class BraceExample(Scene):
def construct(self):
s = Square()
self.add(s)
for i in np.linspace(0.1,1.0,4):
br = Brace(s, sharpness=i)
t = Text(f"sharpness= {i}").next\_to(br, RIGHT)
self.add(t)
self.add(br)
VGroup(\*self.mobjects).arrange(DOWN, buff=0.2)
Methods
| | |
| --- | --- |
| [`get_direction`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_direction "manim.mobject.svg.brace.Brace.get_direction") | Returns the direction from the center to the brace tip. |
| [`get_tex`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_tex "manim.mobject.svg.brace.Brace.get_tex") | Places the tex at the brace tip. |
| [`get_text`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_text "manim.mobject.svg.brace.Brace.get_text") | Places the text at the brace tip. |
| [`get_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_tip "manim.mobject.svg.brace.Brace.get_tip") | Returns the point at the brace tip. |
| [`put_at_tip`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.put_at_tip "manim.mobject.svg.brace.Brace.put_at_tip") | Puts the given mobject at the brace tip. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_mobject_, _direction\=array(\[0., \-1., 0.\])_, _buff\=0.2_, _sharpness\=2_, _stroke\_width\=0_, _fill\_opacity\=1.0_, _background\_stroke\_width\=0_, _background\_stroke\_color\=ManimColor('#000000')_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
* **sharpness** (_float_)
* **stroke\_width** (_float_)
* **fill\_opacity** (_float_)
* **background\_stroke\_width** (_float_)
* **background\_stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **kwargs** (_Any_)
get\_direction()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace.get_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_direction "Link to this definition")
Returns the direction from the center to the brace tip.
Return type:
[_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
get\_tex(_\*tex_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace.get_tex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_tex "Link to this definition")
Places the tex at the brace tip.
Parameters:
* **tex** (_str_) – The tex to be placed at the brace tip.
* **kwargs** (_Any_) – Any further keyword arguments are passed to [`put_at_tip()`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.put_at_tip "manim.mobject.svg.brace.Brace.put_at_tip")
which is used to position the tex at the brace tip.
Return type:
[`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
get\_text(_\*text_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace.get_text)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_text "Link to this definition")
Places the text at the brace tip.
Parameters:
* **text** (_str_) – The text to be placed at the brace tip.
* **kwargs** (_Any_) – Any additional keyword arguments are passed to [`put_at_tip()`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.put_at_tip "manim.mobject.svg.brace.Brace.put_at_tip")
which is used to position the text at the brace tip.
Return type:
[`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
get\_tip()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace.get_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.get_tip "Link to this definition")
Returns the point at the brace tip.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
put\_at\_tip(_mob_, _use\_next\_to\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#Brace.put_at_tip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace.put_at_tip "Link to this definition")
Puts the given mobject at the brace tip.
Parameters:
* **mob** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject to be placed at the tip.
* **use\_next\_to** (_bool_) – If true, then `next_to()` is used to place the mobject at the tip.
* **kwargs** (_Any_) – Any additional keyword arguments are passed to `next_to()` which is used to put the mobject next to the brace tip.
Return type:
_Self_
---
# ImplicitFunction - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.functions.ImplicitFunction.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.functions.ImplicitFunction.rst "Edit this page")
ImplicitFunction[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#implicitfunction "Link to this heading")
=====================================================================================================================================================================
Qualified name: `manim.mobject.graphing.functions.ImplicitFunction`
class ImplicitFunction(_func_, _x\_range\=None_, _y\_range\=None_, _min\_depth\=5_, _max\_quads\=1500_, _use\_smoothing\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/functions.html#ImplicitFunction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
An implicit function.
Parameters:
* **func** (_Callable__\[__\[__float__,_ _float__\]__,_ _float__\]_) – The implicit function in the form `f(x, y) = 0`.
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The x min and max of the function.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The y min and max of the function.
* **min\_depth** (_int_) – The minimum depth of the function to calculate.
* **max\_quads** (_int_) – The maximum number of quads to use.
* **use\_smoothing** (_bool_) – Whether or not to smoothen the curves.
* **kwargs** (_Any_) – Additional parameters to pass into `VMobject`
Note
A small `min_depth` \\(d\\) means that some small details might be ignored if they don’t cross an edge of one of the \\(4^d\\) uniform quads.
The value of `max_quads` strongly corresponds to the quality of the curve, but a higher number of quads may take longer to render.
Examples
Example: ImplicitFunctionExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#implicitfunctionexample)

from manim import \*
class ImplicitFunctionExample(Scene):
def construct(self):
graph \= ImplicitFunction(
lambda x, y: x \* y \*\* 2 \- x \*\* 2 \* y \- 2,
color\=YELLOW
)
self.add(NumberPlane(), graph)
class ImplicitFunctionExample(Scene):
def construct(self):
graph = ImplicitFunction(
lambda x, y: x \* y \*\* 2 - x \*\* 2 \* y - 2,
color=YELLOW
)
self.add(NumberPlane(), graph)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction.generate_points "manim.mobject.graphing.functions.ImplicitFunction.generate_points") | Initializes `points` and therefore the shape. |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_func_, _x\_range\=None_, _y\_range\=None_, _min\_depth\=5_, _max\_quads\=1500_, _use\_smoothing\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction._original__init__ "Link to this definition")
An implicit function.
Parameters:
* **func** (_Callable__\[__\[__float__,_ _float__\]__,_ _float__\]_) – The implicit function in the form `f(x, y) = 0`.
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The x min and max of the function.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The y min and max of the function.
* **min\_depth** (_int_) – The minimum depth of the function to calculate.
* **max\_quads** (_int_) – The maximum number of quads to use.
* **use\_smoothing** (_bool_) – Whether or not to smoothen the curves.
* **kwargs** (_Any_) – Additional parameters to pass into `VMobject`
Note
A small `min_depth` \\(d\\) means that some small details might be ignored if they don’t cross an edge of one of the \\(4^d\\) uniform quads.
The value of `max_quads` strongly corresponds to the quality of the curve, but a higher number of quads may take longer to render.
Examples
Example: ImplicitFunctionExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#implicitfunctionexample)

from manim import \*
class ImplicitFunctionExample(Scene):
def construct(self):
graph \= ImplicitFunction(
lambda x, y: x \* y \*\* 2 \- x \*\* 2 \* y \- 2,
color\=YELLOW
)
self.add(NumberPlane(), graph)
class ImplicitFunctionExample(Scene):
def construct(self):
graph = ImplicitFunction(
lambda x, y: x \* y \*\* 2 - x \*\* 2 \* y - 2,
color=YELLOW
)
self.add(NumberPlane(), graph)
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/functions.html#ImplicitFunction.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
Self
---
# LabeledLine - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledLine.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledLine.rst "Edit this page")
LabeledLine[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#labeledline "Link to this heading")
====================================================================================================================================================
Qualified name: `manim.mobject.geometry.labeled.LabeledLine`
class LabeledLine(_label_, _label\_position\=0.5_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/labeled.html#LabeledLine)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
Constructs a line containing a label box somewhere along its length.
Parameters:
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
) – Label that will be displayed on the line.
* **label\_position** (_float_) – A ratio in the range \[0-1\] to indicate the position of the label with respect to the length of the line. Default value is 0.5.
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the label. This is only applied if `label` is of type `str`.
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the background box.
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) –
A dictionary containing the configuration for the frame.
See also
[`LabeledArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#manim.mobject.geometry.labeled.LabeledArrow "manim.mobject.geometry.labeled.LabeledArrow")
* **args** (_Any_)
* **kwargs** (_Any_)
Examples
Example: LabeledLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#labeledlineexample)

from manim import \*
class LabeledLineExample(Scene):
def construct(self):
line \= LabeledLine(
label \= '0.5',
label\_position \= 0.8,
label\_config \= {
"font\_size" : 20
},
start\=LEFT+DOWN,
end\=RIGHT+UP)
line.set\_length(line.get\_length() \* 2)
self.add(line)
class LabeledLineExample(Scene):
def construct(self):
line = LabeledLine(
label = '0.5',
label\_position = 0.8,
label\_config = {
"font\_size" : 20
},
start=LEFT+DOWN,
end=RIGHT+UP)
line.set\_length(line.get\_length() \* 2)
self.add(line)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_label_, _label\_position\=0.5_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*args_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
)
* **label\_position** (_float_)
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **args** (_Any_)
* **kwargs** (_Any_)
Return type:
None
---
# RightAngle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.RightAngle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.RightAngle.rst "Edit this page")
RightAngle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#rightangle "Link to this heading")
==============================================================================================================================================
Qualified name: `manim.mobject.geometry.line.RightAngle`
class RightAngle(_line1_, _line2_, _length\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#RightAngle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "Link to this definition")
Bases: [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
An elbow-type mobject representing a right angle between two lines.
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
) – The first line.
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
) – The second line.
* **length** (_float_ _|_ _None_) – The length of the arms.
* **\*\*kwargs** (_Any_) – Further keyword arguments that are passed to the constructor of [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
.
Examples
Example: RightAngleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#rightangleexample)

from manim import \*
class RightAngleExample(Scene):
def construct(self):
line1 \= Line( LEFT, RIGHT )
line2 \= Line( DOWN, UP )
rightangles \= \[\
RightAngle(line1, line2),\
RightAngle(line1, line2, length\=0.4, quadrant\=(1,\-1)),\
RightAngle(line1, line2, length\=0.5, quadrant\=(\-1,1), stroke\_width\=8),\
RightAngle(line1, line2, length\=0.7, quadrant\=(\-1,\-1), color\=RED),\
\]
plots \= VGroup()
for rightangle in rightangles:
plot\=VGroup(line1.copy(),line2.copy(), rightangle)
plots.add(plot)
plots.arrange(buff\=1.5)
self.add(plots)
class RightAngleExample(Scene):
def construct(self):
line1 = Line( LEFT, RIGHT )
line2 = Line( DOWN, UP )
rightangles = \[\
RightAngle(line1, line2),\
RightAngle(line1, line2, length=0.4, quadrant=(1,-1)),\
RightAngle(line1, line2, length=0.5, quadrant=(-1,1), stroke\_width=8),\
RightAngle(line1, line2, length=0.7, quadrant=(-1,-1), color=RED),\
\]
plots = VGroup()
for rightangle in rightangles:
plot=VGroup(line1.copy(),line2.copy(), rightangle)
plots.add(plot)
plots.arrange(buff=1.5)
self.add(plots)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_line1_, _line2_, _length\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **length** (_float_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# Vector - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.Vector.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.Vector.rst "Edit this page")
Vector[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#vector "Link to this heading")
==================================================================================================================================
Qualified name: `manim.mobject.geometry.line.Vector`
class Vector(_direction\=array(\[1., 0., 0.\])_, _buff\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Vector)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "Link to this definition")
Bases: [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
A vector specialized for use in graphs.
Caution
Do not confuse with the [`Vector2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "manim.typing.Vector2D")
, [`Vector3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
or [`VectorND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND "manim.typing.VectorND")
type aliases, which are not Mobjects!
Parameters:
* **direction** ([_Vector2DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2DLike "manim.typing.Vector2DLike")
_|_ [_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the arrow.
* **buff** (_float_) – The distance of the vector from its endpoints.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
Examples
Example: VectorExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#vectorexample)

from manim import \*
class VectorExample(Scene):
def construct(self):
plane \= NumberPlane()
vector\_1 \= Vector(\[1,2\])
vector\_2 \= Vector(\[\-5,\-2\])
self.add(plane, vector\_1, vector\_2)
class VectorExample(Scene):
def construct(self):
plane = NumberPlane()
vector\_1 = Vector(\[1,2\])
vector\_2 = Vector(\[-5,-2\])
self.add(plane, vector\_1, vector\_2)
Methods
| | |
| --- | --- |
| [`coordinate_label`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector.coordinate_label "manim.mobject.geometry.line.Vector.coordinate_label") | Creates a label based on the coordinates of the vector. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_direction\=array(\[1., 0., 0.\])_, _buff\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **direction** (_TypeAliasForwardRef__(__'~manim.typing.Vector2DLike'__)_ _|_ _TypeAliasForwardRef__(__'~manim.typing.Vector3DLike'__)_)
* **buff** (_float_)
* **kwargs** (_Any_)
Return type:
None
coordinate\_label(_integer\_labels\=True_, _n\_dim\=2_, _color\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Vector.coordinate_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector.coordinate_label "Link to this definition")
Creates a label based on the coordinates of the vector.
Parameters:
* **integer\_labels** (_bool_) – Whether or not to round the coordinates to integers.
* **n\_dim** (_int_) – The number of dimensions of the vector.
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_) – Sets the color of label, optional.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
.
Returns:
The label.
Return type:
[`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
Examples
Example: VectorCoordinateLabel [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#vectorcoordinatelabel)

from manim import \*
class VectorCoordinateLabel(Scene):
def construct(self):
plane \= NumberPlane()
vec\_1 \= Vector(\[1, 2\])
vec\_2 \= Vector(\[\-3, \-2\])
label\_1 \= vec\_1.coordinate\_label()
label\_2 \= vec\_2.coordinate\_label(color\=YELLOW)
self.add(plane, vec\_1, vec\_2, label\_1, label\_2)
class VectorCoordinateLabel(Scene):
def construct(self):
plane = NumberPlane()
vec\_1 = Vector(\[1, 2\])
vec\_2 = Vector(\[-3, -2\])
label\_1 = vec\_1.coordinate\_label()
label\_2 = vec\_2.coordinate\_label(color=YELLOW)
self.add(plane, vec\_1, vec\_2, label\_1, label\_2)
---
# BackgroundRectangle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.rst "Edit this page")
BackgroundRectangle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#backgroundrectangle "Link to this heading")
===================================================================================================================================================================================
Qualified name: `manim.mobject.geometry.shape\_matchers.BackgroundRectangle`
class BackgroundRectangle(_\*mobjects_, _color\=None_, _stroke\_width\=0_, _stroke\_opacity\=0_, _fill\_opacity\=0.75_, _buff\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/shape_matchers.html#BackgroundRectangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "Link to this definition")
Bases: [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
A background rectangle. Its default color is the background color of the scene.
Examples
Example: ExampleBackgroundRectangle [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#examplebackgroundrectangle)

from manim import \*
class ExampleBackgroundRectangle(Scene):
def construct(self):
circle \= Circle().shift(LEFT)
circle.set\_stroke(color\=GREEN, width\=20)
triangle \= Triangle().shift(2 \* RIGHT)
triangle.set\_fill(PINK, opacity\=0.5)
backgroundRectangle1 \= BackgroundRectangle(circle, color\=WHITE, fill\_opacity\=0.15)
backgroundRectangle2 \= BackgroundRectangle(triangle, color\=WHITE, fill\_opacity\=0.15)
self.add(backgroundRectangle1)
self.add(backgroundRectangle2)
self.add(circle)
self.add(triangle)
self.play(Rotate(backgroundRectangle1, PI / 4))
self.play(Rotate(backgroundRectangle2, PI / 2))
class ExampleBackgroundRectangle(Scene):
def construct(self):
circle = Circle().shift(LEFT)
circle.set\_stroke(color=GREEN, width=20)
triangle = Triangle().shift(2 \* RIGHT)
triangle.set\_fill(PINK, opacity=0.5)
backgroundRectangle1 = BackgroundRectangle(circle, color=WHITE, fill\_opacity=0.15)
backgroundRectangle2 = BackgroundRectangle(triangle, color=WHITE, fill\_opacity=0.15)
self.add(backgroundRectangle1)
self.add(backgroundRectangle2)
self.add(circle)
self.add(triangle)
self.play(Rotate(backgroundRectangle1, PI / 4))
self.play(Rotate(backgroundRectangle2, PI / 2))
Methods
| | |
| --- | --- |
| [`pointwise_become_partial`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle.pointwise_become_partial "manim.mobject.geometry.shape_matchers.BackgroundRectangle.pointwise_become_partial") | Given a 2nd [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
`vmobject`, a lower bound `a` and an upper bound `b`, modify this [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
's points to match the portion of the Bézier spline described by `vmobject.points` with the parameter `t` between `a` and `b`. |
| `set_style` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **stroke\_width** (_float_)
* **stroke\_opacity** (_float_)
* **fill\_opacity** (_float_)
* **buff** (_float_ _|_ _tuple__\[__float__,_ _float__\]_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*mobjects_, _color\=None_, _stroke\_width\=0_, _stroke\_opacity\=0_, _fill\_opacity\=0.75_, _buff\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **stroke\_width** (_float_)
* **stroke\_opacity** (_float_)
* **fill\_opacity** (_float_)
* **buff** (_float_ _|_ _tuple__\[__float__,_ _float__\]_)
* **kwargs** (_Any_)
Return type:
None
pointwise\_become\_partial(_mobject_, _a_, _b_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/shape_matchers.html#BackgroundRectangle.pointwise_become_partial)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle.pointwise_become_partial "Link to this definition")
Given a 2nd [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
`vmobject`, a lower bound `a` and an upper bound `b`, modify this [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
’s points to match the portion of the Bézier spline described by `vmobject.points` with the parameter `t` between `a` and `b`.
Parameters:
* **vmobject** – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
that will serve as a model.
* **a** (_Any_) – The lower bound for `t`.
* **b** (_float_) – The upper bound for `t`
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Returns:
The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
itself, after the transformation.
Return type:
[`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Raises:
**TypeError** – If `vmobject` is not an instance of `VMobject`.
---
# ParametricFunction - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.functions.ParametricFunction.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.functions.ParametricFunction.rst "Edit this page")
ParametricFunction[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#parametricfunction "Link to this heading")
===========================================================================================================================================================================
Qualified name: `manim.mobject.graphing.functions.ParametricFunction`
class ParametricFunction(_function_, _t\_range\=(0_, _1)_, _scaling\=_, _dt\=1e-08_, _discontinuities\=None_, _use\_smoothing\=True_, _use\_vectorized\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/functions.html#ParametricFunction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A parametric curve.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]_) – The function to be plotted in the form of `(lambda t: (x(t), y(t), z(t)))`
* **t\_range** (_tuple__\[__float__,_ _float__\]_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_) – Determines the length that the function spans in the form of (t\_min, t\_max, step=0.01). By default `[0, 1]`
* **scaling** (_\_ScaleBase_) – Scaling class applied to the points of the function. Default of [`LinearBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase "manim.mobject.graphing.scale.LinearBase")
.
* **use\_smoothing** (_bool_) – Whether to interpolate between the points of the function after they have been created. (Will have odd behaviour with a low number of points)
* **use\_vectorized** (_bool_) – Whether to pass in the generated t value array to the function as `[t_0, t_1, ...]`. Only use this if your function supports it. Output should be a numpy array of shape `[[x_0, x_1, ...], [y_0, y_1, ...], [z_0, z_1, ...]]` but `z` can also be 0 if the Axes is 2D
* **discontinuities** (_Iterable__\[__float__\]_ _|_ _None_) – Values of t at which the function experiences discontinuity.
* **dt** (_float_) – The left and right tolerance for the discontinuities.
* **kwargs** (_Any_)
Examples
Example: PlotParametricFunction [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#plotparametricfunction)

from manim import \*
class PlotParametricFunction(Scene):
def func(self, t):
return (np.sin(2 \* t), np.sin(3 \* t), 0)
def construct(self):
func \= ParametricFunction(self.func, t\_range \= (0, TAU), fill\_opacity\=0).set\_color(RED)
self.add(func.scale(3))
class PlotParametricFunction(Scene):
def func(self, t):
return (np.sin(2 \* t), np.sin(3 \* t), 0)
def construct(self):
func = ParametricFunction(self.func, t\_range = (0, TAU), fill\_opacity=0).set\_color(RED)
self.add(func.scale(3))
Example: ThreeDParametricSpring [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#threedparametricspring)

from manim import \*
class ThreeDParametricSpring(ThreeDScene):
def construct(self):
curve1 \= ParametricFunction(
lambda u: (
1.2 \* np.cos(u),
1.2 \* np.sin(u),
u \* 0.05
), color\=RED, t\_range \= (\-3\*TAU, 5\*TAU, 0.01)
).set\_shade\_in\_3d(True)
axes \= ThreeDAxes()
self.add(axes, curve1)
self.set\_camera\_orientation(phi\=80 \* DEGREES, theta\=-60 \* DEGREES)
self.wait()
class ThreeDParametricSpring(ThreeDScene):
def construct(self):
curve1 = ParametricFunction(
lambda u: (
1.2 \* np.cos(u),
1.2 \* np.sin(u),
u \* 0.05
), color=RED, t\_range = (-3\*TAU, 5\*TAU, 0.01)
).set\_shade\_in\_3d(True)
axes = ThreeDAxes()
self.add(axes, curve1)
self.set\_camera\_orientation(phi=80 \* DEGREES, theta=-60 \* DEGREES)
self.wait()
Attention
If your function has discontinuities, you’ll have to specify the location of the discontinuities manually. See the following example for guidance.
Example: DiscontinuousExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#discontinuousexample)

from manim import \*
class DiscontinuousExample(Scene):
def construct(self):
ax1 \= NumberPlane((\-3, 3), (\-4, 4))
ax2 \= NumberPlane((\-3, 3), (\-4, 4))
VGroup(ax1, ax2).arrange()
discontinuous\_function \= lambda x: (x \*\* 2 \- 2) / (x \*\* 2 \- 4)
incorrect \= ax1.plot(discontinuous\_function, color\=RED)
correct \= ax2.plot(
discontinuous\_function,
discontinuities\=\[\-2, 2\], \# discontinuous points
dt\=0.1, \# left and right tolerance of discontinuity
color\=GREEN,
)
self.add(ax1, ax2, incorrect, correct)
class DiscontinuousExample(Scene):
def construct(self):
ax1 = NumberPlane((-3, 3), (-4, 4))
ax2 = NumberPlane((-3, 3), (-4, 4))
VGroup(ax1, ax2).arrange()
discontinuous\_function = lambda x: (x \*\* 2 - 2) / (x \*\* 2 - 4)
incorrect = ax1.plot(discontinuous\_function, color=RED)
correct = ax2.plot(
discontinuous\_function,
discontinuities=\[-2, 2\], # discontinuous points
dt=0.1, # left and right tolerance of discontinuity
color=GREEN,
)
self.add(ax1, ax2, incorrect, correct)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction.generate_points "manim.mobject.graphing.functions.ParametricFunction.generate_points") | Initializes `points` and therefore the shape. |
| `get_function` | |
| `get_point_from_function` | |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_function_, _t\_range\=(0_, _1)_, _scaling\=_, _dt\=1e-08_, _discontinuities\=None_, _use\_smoothing\=True_, _use\_vectorized\=False_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]_)
* **t\_range** (_tuple__\[__float__,_ _float__\]_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_)
* **scaling** (_\_ScaleBase_)
* **dt** (_float_)
* **discontinuities** (_Iterable__\[__float__\]_ _|_ _None_)
* **use\_smoothing** (_bool_)
* **use\_vectorized** (_bool_)
* **kwargs** (_Any_)
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/functions.html#ParametricFunction.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
Self
---
# ManimBanner - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.logo.ManimBanner.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.logo.ManimBanner.rst "Edit this page")
ManimBanner[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manimbanner "Link to this heading")
========================================================================================================================================
Qualified name: `manim.mobject.logo.ManimBanner`
class ManimBanner(_dark\_theme\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/logo.html#ManimBanner)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Convenience class representing Manim’s banner.
Can be animated using custom methods.
Parameters:
**dark\_theme** (_bool_) – If `True` (the default), the dark theme version of the logo (with light text font) will be rendered. Otherwise, if `False`, the light theme version (with dark text font) is used.
Examples
Example: DarkThemeBanner [¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#darkthemebanner)
from manim import \*
class DarkThemeBanner(Scene):
def construct(self):
banner \= ManimBanner()
self.play(banner.create())
self.play(banner.expand())
self.wait()
self.play(Unwrite(banner))
class DarkThemeBanner(Scene):
def construct(self):
banner = ManimBanner()
self.play(banner.create())
self.play(banner.expand())
self.wait()
self.play(Unwrite(banner))
Example: LightThemeBanner [¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#lightthemebanner)
from manim import \*
class LightThemeBanner(Scene):
def construct(self):
self.camera.background\_color \= "#ece6e2"
banner \= ManimBanner(dark\_theme\=False)
self.play(banner.create())
self.play(banner.expand())
self.wait()
self.play(Unwrite(banner))
class LightThemeBanner(Scene):
def construct(self):
self.camera.background\_color = "#ece6e2"
banner = ManimBanner(dark\_theme=False)
self.play(banner.create())
self.play(banner.expand())
self.wait()
self.play(Unwrite(banner))
Methods
| | |
| --- | --- |
| [`create`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.create "manim.mobject.logo.ManimBanner.create") | The creation animation for Manim's logo. |
| [`expand`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.expand "manim.mobject.logo.ManimBanner.expand") | An animation that expands Manim's logo into its banner. |
| [`scale`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.scale "manim.mobject.logo.ManimBanner.scale") | Scale the banner by the specified scale factor. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_dark\_theme\=True_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
**dark\_theme** (_bool_)
create(_run\_time\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/logo.html#ManimBanner.create)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.create "Link to this definition")
The creation animation for Manim’s logo.
Parameters:
**run\_time** (_float_) – The run time of the animation.
Returns:
An animation to be used in a [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
call.
Return type:
[`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
expand(_run\_time\=1.5_, _direction\='center'_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/logo.html#ManimBanner.expand)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.expand "Link to this definition")
An animation that expands Manim’s logo into its banner.
The returned animation transforms the banner from its initial state (representing Manim’s logo with just the icons) to its expanded state (showing the full name together with the icons).
See the class documentation for how to use this.
Note
Before calling this method, the text “anim” is not a submobject of the banner object. After the expansion, it is added as a submobject so subsequent animations to the banner object apply to the text “anim” as well.
Parameters:
* **run\_time** (_float_) – The run time of the animation.
* **direction** (_str_) – The direction in which the logo is expanded.
Returns:
An animation to be used in a [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
call.
Return type:
[`Succession`](https://docs.manim.community/en/stable/reference/manim.animation.composition.Succession.html#manim.animation.composition.Succession "manim.animation.composition.Succession")
Examples
Example: ExpandDirections [¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#expanddirections)
from manim import \*
class ExpandDirections(Scene):
def construct(self):
banners \= \[ManimBanner().scale(0.5).shift(UP\*x) for x in \[\-2, 0, 2\]\]
self.play(
banners\[0\].expand(direction\="right"),
banners\[1\].expand(direction\="center"),
banners\[2\].expand(direction\="left"),
)
class ExpandDirections(Scene):
def construct(self):
banners = \[ManimBanner().scale(0.5).shift(UP\*x) for x in \[-2, 0, 2\]\]
self.play(
banners\[0\].expand(direction="right"),
banners\[1\].expand(direction="center"),
banners\[2\].expand(direction="left"),
)
scale(_scale\_factor_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/logo.html#ManimBanner.scale)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner.scale "Link to this definition")
Scale the banner by the specified scale factor.
Parameters:
* **scale\_factor** (_float_) – The factor used for scaling the banner.
* **kwargs** (_Any_)
Returns:
The scaled banner.
Return type:
[`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
---
# ArcBrace - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.ArcBrace.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.ArcBrace.rst "Edit this page")
ArcBrace[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#arcbrace "Link to this heading")
====================================================================================================================================
Qualified name: `manim.mobject.svg.brace.ArcBrace`
class ArcBrace(_arc\=None_, _direction\=array(\[1., 0., 0.\])_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#ArcBrace)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "Link to this definition")
Bases: [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
Creates a [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
that wraps around an [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
.
The direction parameter allows the brace to be applied from outside or inside the arc.
Warning
The [`ArcBrace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "manim.mobject.svg.brace.ArcBrace")
is smaller for arcs with smaller radii.
Note
The [`ArcBrace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "manim.mobject.svg.brace.ArcBrace")
is initially a vertical [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
defined by the length of the [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
, but is scaled down to match the start and end angles. An exponential function is then applied after it is shifted based on the radius of the arc.
The scaling effect is not applied for arcs with radii smaller than 1 to prevent over-scaling.
Parameters:
* **arc** ([_Arc_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
_|_ _None_) – The [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
that wraps around the [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
mobject.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction from which the brace faces the arc. `LEFT` for inside the arc, and `RIGHT` for the outside.
* **kwargs** (_Any_)
Example
Example: ArcBraceExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#arcbraceexample)

from manim import \*
class ArcBraceExample(Scene):
def construct(self):
arc\_1 \= Arc(radius\=1.5,start\_angle\=0,angle\=2\*PI/3).set\_color(RED)
brace\_1 \= ArcBrace(arc\_1,LEFT)
group\_1 \= VGroup(arc\_1,brace\_1)
arc\_2 \= Arc(radius\=3,start\_angle\=0,angle\=5\*PI/6).set\_color(YELLOW)
brace\_2 \= ArcBrace(arc\_2)
group\_2 \= VGroup(arc\_2,brace\_2)
arc\_3 \= Arc(radius\=0.5,start\_angle\=-0,angle\=PI).set\_color(BLUE)
brace\_3 \= ArcBrace(arc\_3)
group\_3 \= VGroup(arc\_3,brace\_3)
arc\_4 \= Arc(radius\=0.2,start\_angle\=0,angle\=3\*PI/2).set\_color(GREEN)
brace\_4 \= ArcBrace(arc\_4)
group\_4 \= VGroup(arc\_4,brace\_4)
arc\_group \= VGroup(group\_1, group\_2, group\_3, group\_4).arrange\_in\_grid(buff\=1.5)
self.add(arc\_group.center())
class ArcBraceExample(Scene):
def construct(self):
arc\_1 = Arc(radius=1.5,start\_angle=0,angle=2\*PI/3).set\_color(RED)
brace\_1 = ArcBrace(arc\_1,LEFT)
group\_1 = VGroup(arc\_1,brace\_1)
arc\_2 = Arc(radius=3,start\_angle=0,angle=5\*PI/6).set\_color(YELLOW)
brace\_2 = ArcBrace(arc\_2)
group\_2 = VGroup(arc\_2,brace\_2)
arc\_3 = Arc(radius=0.5,start\_angle=-0,angle=PI).set\_color(BLUE)
brace\_3 = ArcBrace(arc\_3)
group\_3 = VGroup(arc\_3,brace\_3)
arc\_4 = Arc(radius=0.2,start\_angle=0,angle=3\*PI/2).set\_color(GREEN)
brace\_4 = ArcBrace(arc\_4)
group\_4 = VGroup(arc\_4,brace\_4)
arc\_group = VGroup(group\_1, group\_2, group\_3, group\_4).arrange\_in\_grid(buff=1.5)
self.add(arc\_group.center())
References: [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_arc\=None_, _direction\=array(\[1., 0., 0.\])_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **arc** ([_Arc_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
_|_ _None_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **kwargs** (_Any_)
---
# LabeledPolygram - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledPolygram.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.labeled.LabeledPolygram.rst "Edit this page")
LabeledPolygram[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#labeledpolygram "Link to this heading")
================================================================================================================================================================
Qualified name: `manim.mobject.geometry.labeled.LabeledPolygram`
class LabeledPolygram(_\*vertex\_groups_, _label_, _precision\=0.01_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/labeled.html#LabeledPolygram)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#manim.mobject.geometry.labeled.LabeledPolygram "Link to this definition")
Bases: [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
Constructs a polygram containing a label box at its pole of inaccessibility.
Parameters:
* **vertex\_groups** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
) – Vertices passed to the [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
constructor.
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
) – Label that will be displayed on the Polygram.
* **precision** (_float_) – The precision used by the PolyLabel algorithm.
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the label. This is only applied if `label` is of type `str`.
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – A dictionary containing the configuration for the background box.
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) –
A dictionary containing the configuration for the frame.
Note
The PolyLabel Algorithm expects each vertex group to form a closed ring. If the input is open, [`LabeledPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#manim.mobject.geometry.labeled.LabeledPolygram "manim.mobject.geometry.labeled.LabeledPolygram")
will attempt to close it. This may cause the polygon to intersect itself leading to unexpected results.
Tip
Make sure the precision corresponds to the scale of your inputs! For instance, if the bounding box of your polygon stretches from 0 to 10,000, a precision of 1.0 or 10.0 should be sufficient.
* **kwargs** (_Any_)
Examples
Example: LabeledPolygramExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#labeledpolygramexample)

from manim import \*
class LabeledPolygramExample(Scene):
def construct(self):
\# Define Rings
ring1 \= \[\
\[\-3.8, \-2.4, 0\], \[\-2.4, \-2.5, 0\], \[\-1.3, \-1.6, 0\], \[\-0.2, \-1.7, 0\],\
\[1.7, \-2.5, 0\], \[2.9, \-2.6, 0\], \[3.5, \-1.5, 0\], \[4.9, \-1.4, 0\],\
\[4.5, 0.2, 0\], \[4.7, 1.6, 0\], \[3.5, 2.4, 0\], \[1.1, 2.5, 0\],\
\[\-0.1, 0.9, 0\], \[\-1.2, 0.5, 0\], \[\-1.6, 0.7, 0\], \[\-1.4, 1.9, 0\],\
\[\-2.6, 2.6, 0\], \[\-4.4, 1.2, 0\], \[\-4.9, \-0.8, 0\], \[\-3.8, \-2.4, 0\]\
\]
ring2 \= \[\
\[0.2, \-1.2, 0\], \[0.9, \-1.2, 0\], \[1.4, \-2.0, 0\], \[2.1, \-1.6, 0\],\
\[2.2, \-0.5, 0\], \[1.4, 0.0, 0\], \[0.4, \-0.2, 0\], \[0.2, \-1.2, 0\]\
\]
ring3 \= \[\[\-2.7, 1.4, 0\], \[\-2.3, 1.7, 0\], \[\-2.8, 1.9, 0\], \[\-2.7, 1.4, 0\]\]
\# Create Polygons (for reference)
p1 \= Polygon(\*ring1, fill\_opacity\=0.75)
p2 \= Polygon(\*ring2, fill\_color\=BLACK, fill\_opacity\=1)
p3 \= Polygon(\*ring3, fill\_color\=BLACK, fill\_opacity\=1)
\# Create Labeled Polygram
polygram \= LabeledPolygram(
\*\[ring1, ring2, ring3\],
label\=Text('Pole', font\='sans-serif'),
precision\=0.01,
)
\# Display Circle (for reference)
circle \= Circle(radius\=polygram.radius, color\=WHITE).move\_to(polygram.pole)
self.add(p1, p2, p3)
self.add(polygram)
self.add(circle)
class LabeledPolygramExample(Scene):
def construct(self):
# Define Rings
ring1 = \[\
\[-3.8, -2.4, 0\], \[-2.4, -2.5, 0\], \[-1.3, -1.6, 0\], \[-0.2, -1.7, 0\],\
\[1.7, -2.5, 0\], \[2.9, -2.6, 0\], \[3.5, -1.5, 0\], \[4.9, -1.4, 0\],\
\[4.5, 0.2, 0\], \[4.7, 1.6, 0\], \[3.5, 2.4, 0\], \[1.1, 2.5, 0\],\
\[-0.1, 0.9, 0\], \[-1.2, 0.5, 0\], \[-1.6, 0.7, 0\], \[-1.4, 1.9, 0\],\
\[-2.6, 2.6, 0\], \[-4.4, 1.2, 0\], \[-4.9, -0.8, 0\], \[-3.8, -2.4, 0\]\
\]
ring2 = \[\
\[0.2, -1.2, 0\], \[0.9, -1.2, 0\], \[1.4, -2.0, 0\], \[2.1, -1.6, 0\],\
\[2.2, -0.5, 0\], \[1.4, 0.0, 0\], \[0.4, -0.2, 0\], \[0.2, -1.2, 0\]\
\]
ring3 = \[\[-2.7, 1.4, 0\], \[-2.3, 1.7, 0\], \[-2.8, 1.9, 0\], \[-2.7, 1.4, 0\]\]
# Create Polygons (for reference)
p1 = Polygon(\*ring1, fill\_opacity=0.75)
p2 = Polygon(\*ring2, fill\_color=BLACK, fill\_opacity=1)
p3 = Polygon(\*ring3, fill\_color=BLACK, fill\_opacity=1)
# Create Labeled Polygram
polygram = LabeledPolygram(
\*\[ring1, ring2, ring3\],
label=Text('Pole', font='sans-serif'),
precision=0.01,
)
# Display Circle (for reference)
circle = Circle(radius=polygram.radius, color=WHITE).move\_to(polygram.pole)
self.add(p1, p2, p3)
self.add(polygram)
self.add(circle)
Example: LabeledCountryExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#labeledcountryexample)

from manim import \*
import requests
import json
class LabeledCountryExample(Scene):
def construct(self):
\# Fetch JSON data and process arcs
data \= requests.get('https://cdn.jsdelivr.net/npm/us-atlas@3/nation-10m.json').json()
arcs, transform \= data\['arcs'\], data\['transform'\]
sarcs \= \[np.cumsum(arc, axis\=0) \* transform\['scale'\] + transform\['translate'\] for arc in arcs\]
ssarcs \= sorted(sarcs, key\=len, reverse\=True)\[:1\]
\# Compute Bounding Box
points \= np.concatenate(ssarcs)
mins, maxs \= np.min(points, axis\=0), np.max(points, axis\=0)
\# Build Axes
ax \= Axes(
x\_range\=\[mins\[0\], maxs\[0\], maxs\[0\] \- mins\[0\]\], x\_length\=10,
y\_range\=\[mins\[1\], maxs\[1\], maxs\[1\] \- mins\[1\]\], y\_length\=7,
tips\=False
)
\# Adjust Coordinates
array \= \[\[ax.c2p(\*point) for point in sarc\] for sarc in ssarcs\]
\# Add Polygram
polygram \= LabeledPolygram(
\*array,
label\=Text('USA', font\='sans-serif'),
precision\=0.01,
fill\_color\=BLUE,
stroke\_width\=0,
fill\_opacity\=0.75
)
\# Display Circle (for reference)
circle \= Circle(radius\=polygram.radius, color\=WHITE).move\_to(polygram.pole)
self.add(ax)
self.add(polygram)
self.add(circle)
import requests
import json
class LabeledCountryExample(Scene):
def construct(self):
# Fetch JSON data and process arcs
data = requests.get('https://cdn.jsdelivr.net/npm/us-atlas@3/nation-10m.json').json()
arcs, transform = data\['arcs'\], data\['transform'\]
sarcs = \[np.cumsum(arc, axis=0) \* transform\['scale'\] + transform\['translate'\] for arc in arcs\]
ssarcs = sorted(sarcs, key=len, reverse=True)\[:1\]
# Compute Bounding Box
points = np.concatenate(ssarcs)
mins, maxs = np.min(points, axis=0), np.max(points, axis=0)
# Build Axes
ax = Axes(
x\_range=\[mins\[0\], maxs\[0\], maxs\[0\] - mins\[0\]\], x\_length=10,
y\_range=\[mins\[1\], maxs\[1\], maxs\[1\] - mins\[1\]\], y\_length=7,
tips=False
)
# Adjust Coordinates
array = \[\[ax.c2p(\*point) for point in sarc\] for sarc in ssarcs\]
# Add Polygram
polygram = LabeledPolygram(
\*array,
label=Text('USA', font='sans-serif'),
precision=0.01,
fill\_color=BLUE,
stroke\_width=0,
fill\_opacity=0.75
)
# Display Circle (for reference)
circle = Circle(radius=polygram.radius, color=WHITE).move\_to(polygram.pole)
self.add(ax)
self.add(polygram)
self.add(circle)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*vertex\_groups_, _label_, _precision\=0.01_, _label\_config\=None_, _box\_config\=None_, _frame\_config\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#manim.mobject.geometry.labeled.LabeledPolygram._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertex\_groups** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
)
* **precision** (_float_)
* **label\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **box\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# Arrow - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.Arrow.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.Arrow.rst "Edit this page")
Arrow[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#arrow "Link to this heading")
===============================================================================================================================
Qualified name: `manim.mobject.geometry.line.Arrow`
class Arrow(_\*args_, _stroke\_width\=6_, _buff\=0.25_, _max\_tip\_length\_to\_length\_ratio\=0.25_, _max\_stroke\_width\_to\_length\_ratio\=5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
An arrow.
Parameters:
* **args** (_Any_) – Arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
.
* **stroke\_width** (_float_) – The thickness of the arrow. Influenced by `max_stroke_width_to_length_ratio`.
* **buff** (_float_) – The distance of the arrow from its start and end points.
* **max\_tip\_length\_to\_length\_ratio** (_float_) – `tip_length` scales with the length of the arrow. Increasing this ratio raises the max value of `tip_length`.
* **max\_stroke\_width\_to\_length\_ratio** (_float_) – `stroke_width` scales with the length of the arrow. Increasing this ratio ratios the max value of `stroke_width`.
* **kwargs** (_Any_) – Additional arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
.
See also
`ArrowTip` `CurvedArrow`
Examples
Example: ArrowExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#arrowexample)

from manim import \*
from manim.mobject.geometry.tips import ArrowSquareTip
class ArrowExample(Scene):
def construct(self):
arrow\_1 \= Arrow(start\=RIGHT, end\=LEFT, color\=GOLD)
arrow\_2 \= Arrow(start\=RIGHT, end\=LEFT, color\=GOLD, tip\_shape\=ArrowSquareTip).shift(DOWN)
g1 \= Group(arrow\_1, arrow\_2)
\# the effect of buff
square \= Square(color\=MAROON\_A)
arrow\_3 \= Arrow(start\=LEFT, end\=RIGHT)
arrow\_4 \= Arrow(start\=LEFT, end\=RIGHT, buff\=0).next\_to(arrow\_1, UP)
g2 \= Group(arrow\_3, arrow\_4, square)
\# a shorter arrow has a shorter tip and smaller stroke width
arrow\_5 \= Arrow(start\=ORIGIN, end\=config.top).shift(LEFT \* 4)
arrow\_6 \= Arrow(start\=config.top + DOWN, end\=config.top).shift(LEFT \* 3)
g3 \= Group(arrow\_5, arrow\_6)
self.add(Group(g1, g2, g3).arrange(buff\=2))
from manim.mobject.geometry.tips import ArrowSquareTip
class ArrowExample(Scene):
def construct(self):
arrow\_1 = Arrow(start=RIGHT, end=LEFT, color=GOLD)
arrow\_2 = Arrow(start=RIGHT, end=LEFT, color=GOLD, tip\_shape=ArrowSquareTip).shift(DOWN)
g1 = Group(arrow\_1, arrow\_2)
# the effect of buff
square = Square(color=MAROON\_A)
arrow\_3 = Arrow(start=LEFT, end=RIGHT)
arrow\_4 = Arrow(start=LEFT, end=RIGHT, buff=0).next\_to(arrow\_1, UP)
g2 = Group(arrow\_3, arrow\_4, square)
# a shorter arrow has a shorter tip and smaller stroke width
arrow\_5 = Arrow(start=ORIGIN, end=config.top).shift(LEFT \* 4)
arrow\_6 = Arrow(start=config.top + DOWN, end=config.top).shift(LEFT \* 3)
g3 = Group(arrow\_5, arrow\_6)
self.add(Group(g1, g2, g3).arrange(buff=2))
Example: ArrowExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#arrowexample)

from manim import \*
class ArrowExample(Scene):
def construct(self):
left\_group \= VGroup()
\# As buff increases, the size of the arrow decreases.
for buff in np.arange(0, 2.2, 0.45):
left\_group += Arrow(buff\=buff, start\=2 \* LEFT, end\=2 \* RIGHT)
\# Required to arrange arrows.
left\_group.arrange(DOWN)
left\_group.move\_to(4 \* LEFT)
middle\_group \= VGroup()
\# As max\_stroke\_width\_to\_length\_ratio gets bigger,
\# the width of stroke increases.
for i in np.arange(0, 5, 0.5):
middle\_group += Arrow(max\_stroke\_width\_to\_length\_ratio\=i)
middle\_group.arrange(DOWN)
UR\_group \= VGroup()
\# As max\_tip\_length\_to\_length\_ratio increases,
\# the length of the tip increases.
for i in np.arange(0, 0.3, 0.1):
UR\_group += Arrow(max\_tip\_length\_to\_length\_ratio\=i)
UR\_group.arrange(DOWN)
UR\_group.move\_to(4 \* RIGHT + 2 \* UP)
DR\_group \= VGroup()
DR\_group += Arrow(start\=LEFT, end\=RIGHT, color\=BLUE, tip\_shape\=ArrowSquareTip)
DR\_group += Arrow(start\=LEFT, end\=RIGHT, color\=BLUE, tip\_shape\=ArrowSquareFilledTip)
DR\_group += Arrow(start\=LEFT, end\=RIGHT, color\=YELLOW, tip\_shape\=ArrowCircleTip)
DR\_group += Arrow(start\=LEFT, end\=RIGHT, color\=YELLOW, tip\_shape\=ArrowCircleFilledTip)
DR\_group.arrange(DOWN)
DR\_group.move\_to(4 \* RIGHT + 2 \* DOWN)
self.add(left\_group, middle\_group, UR\_group, DR\_group)
class ArrowExample(Scene):
def construct(self):
left\_group = VGroup()
# As buff increases, the size of the arrow decreases.
for buff in np.arange(0, 2.2, 0.45):
left\_group += Arrow(buff=buff, start=2 \* LEFT, end=2 \* RIGHT)
# Required to arrange arrows.
left\_group.arrange(DOWN)
left\_group.move\_to(4 \* LEFT)
middle\_group = VGroup()
# As max\_stroke\_width\_to\_length\_ratio gets bigger,
# the width of stroke increases.
for i in np.arange(0, 5, 0.5):
middle\_group += Arrow(max\_stroke\_width\_to\_length\_ratio=i)
middle\_group.arrange(DOWN)
UR\_group = VGroup()
# As max\_tip\_length\_to\_length\_ratio increases,
# the length of the tip increases.
for i in np.arange(0, 0.3, 0.1):
UR\_group += Arrow(max\_tip\_length\_to\_length\_ratio=i)
UR\_group.arrange(DOWN)
UR\_group.move\_to(4 \* RIGHT + 2 \* UP)
DR\_group = VGroup()
DR\_group += Arrow(start=LEFT, end=RIGHT, color=BLUE, tip\_shape=ArrowSquareTip)
DR\_group += Arrow(start=LEFT, end=RIGHT, color=BLUE, tip\_shape=ArrowSquareFilledTip)
DR\_group += Arrow(start=LEFT, end=RIGHT, color=YELLOW, tip\_shape=ArrowCircleTip)
DR\_group += Arrow(start=LEFT, end=RIGHT, color=YELLOW, tip\_shape=ArrowCircleFilledTip)
DR\_group.arrange(DOWN)
DR\_group.move\_to(4 \* RIGHT + 2 \* DOWN)
self.add(left\_group, middle\_group, UR\_group, DR\_group)
Methods
| | |
| --- | --- |
| [`get_default_tip_length`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.get_default_tip_length "manim.mobject.geometry.line.Arrow.get_default_tip_length") | Returns the default tip\_length of the arrow. |
| [`get_normal_vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.get_normal_vector "manim.mobject.geometry.line.Arrow.get_normal_vector") | Returns the normal of a vector. |
| [`reset_normal_vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.reset_normal_vector "manim.mobject.geometry.line.Arrow.reset_normal_vector") | Resets the normal of a vector |
| [`scale`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.scale "manim.mobject.geometry.line.Arrow.scale") | Scale an arrow, but keep stroke width and arrow tip size fixed. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*args_, _stroke\_width\=6_, _buff\=0.25_, _max\_tip\_length\_to\_length\_ratio\=0.25_, _max\_stroke\_width\_to\_length\_ratio\=5_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **args** (_Any_)
* **stroke\_width** (_float_)
* **buff** (_float_)
* **max\_tip\_length\_to\_length\_ratio** (_float_)
* **max\_stroke\_width\_to\_length\_ratio** (_float_)
* **kwargs** (_Any_)
Return type:
None
\_set\_stroke\_width\_from\_length()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow._set_stroke_width_from_length)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow._set_stroke_width_from_length "Link to this definition")
Sets stroke width based on length.
Return type:
Self
get\_default\_tip\_length()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow.get_default_tip_length)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.get_default_tip_length "Link to this definition")
Returns the default tip\_length of the arrow.
Examples
\>>> Arrow().get\_default\_tip\_length()
0.35
Return type:
float
get\_normal\_vector()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow.get_normal_vector)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.get_normal_vector "Link to this definition")
Returns the normal of a vector.
Examples
\>>> np.round(Arrow().get\_normal\_vector()) + 0. \# add 0. to avoid negative 0 in output
array(\[ 0., 0., -1.\])
Return type:
[_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
reset\_normal\_vector()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow.reset_normal_vector)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.reset_normal_vector "Link to this definition")
Resets the normal of a vector
Return type:
Self
scale(_factor_, _scale\_tips\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Arrow.scale)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow.scale "Link to this definition")
Scale an arrow, but keep stroke width and arrow tip size fixed.
See also
[`scale()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "manim.mobject.mobject.Mobject.scale")
Examples
\>>> arrow \= Arrow(np.array(\[\-1, \-1, 0\]), np.array(\[1, 1, 0\]), buff\=0)
\>>> scaled\_arrow \= arrow.scale(2)
\>>> np.round(scaled\_arrow.get\_start\_and\_end(), 8) + 0
array(\[\[-2., -2., 0.\],\
\[ 2., 2., 0.\]\])
\>>> arrow.tip.length \== scaled\_arrow.tip.length
True
Manually scaling the object using the default method [`scale()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "manim.mobject.mobject.Mobject.scale")
does not have the same properties:
\>>> new\_arrow \= Arrow(np.array(\[\-1, \-1, 0\]), np.array(\[1, 1, 0\]), buff\=0)
\>>> another\_scaled\_arrow \= VMobject.scale(new\_arrow, 2)
\>>> another\_scaled\_arrow.tip.length \== arrow.tip.length
False
Parameters:
* **factor** (_float_)
* **scale\_tips** (_bool_)
* **kwargs** (_Any_)
Return type:
Self
---
# ArrowTip - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTip.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.tips.ArrowTip.rst "Edit this page")
ArrowTip[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#arrowtip "Link to this heading")
========================================================================================================================================
Qualified name: `manim.mobject.geometry.tips.ArrowTip`
class ArrowTip(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/tips.html#ArrowTip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Base class for arrow tips.
See also
[`ArrowTriangleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip "manim.mobject.geometry.tips.ArrowTriangleTip")
[`ArrowTriangleFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip "manim.mobject.geometry.tips.ArrowTriangleFilledTip")
[`ArrowCircleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleTip.html#manim.mobject.geometry.tips.ArrowCircleTip "manim.mobject.geometry.tips.ArrowCircleTip")
[`ArrowCircleFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowCircleFilledTip.html#manim.mobject.geometry.tips.ArrowCircleFilledTip "manim.mobject.geometry.tips.ArrowCircleFilledTip")
[`ArrowSquareTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareTip.html#manim.mobject.geometry.tips.ArrowSquareTip "manim.mobject.geometry.tips.ArrowSquareTip")
[`ArrowSquareFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowSquareFilledTip.html#manim.mobject.geometry.tips.ArrowSquareFilledTip "manim.mobject.geometry.tips.ArrowSquareFilledTip")
[`StealthTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip "manim.mobject.geometry.tips.StealthTip")
Examples
Cannot be used directly, only intended for inheritance:
\>>> tip \= ArrowTip()
Traceback (most recent call last):
...
NotImplementedError: Has to be implemented in inheriting subclasses.
Instead, use one of the pre-defined ones, or make a custom one like this:
Example: CustomTipExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#customtipexample)
from manim import \*
\>>> from manim import RegularPolygon, Arrow
\>>> class MyCustomArrowTip(ArrowTip, RegularPolygon):
... def \_\_init\_\_(self, length\=0.35, \*\*kwargs):
... RegularPolygon.\_\_init\_\_(self, n\=5, \*\*kwargs)
... self.width \= length
... self.stretch\_to\_fit\_height(length)
\>>> arr \= Arrow(
... np.array(\[\-2, \-2, 0\]), np.array(\[2, 2, 0\]), tip\_shape\=MyCustomArrowTip
... )
\>>> isinstance(arr.tip, RegularPolygon)
True
\>>> from manim import Scene, Create
\>>> class CustomTipExample(Scene):
... def construct(self):
... self.play(Create(arr))
\>>> from manim import RegularPolygon, Arrow
>>> class MyCustomArrowTip(ArrowTip, RegularPolygon):
... def \_\_init\_\_(self, length=0.35, \*\*kwargs):
... RegularPolygon.\_\_init\_\_(self, n=5, \*\*kwargs)
... self.width = length
... self.stretch\_to\_fit\_height(length)
>>> arr = Arrow(
... np.array(\[-2, -2, 0\]), np.array(\[2, 2, 0\]), tip\_shape=MyCustomArrowTip
... )
>>> isinstance(arr.tip, RegularPolygon)
True
>>> from manim import Scene, Create
>>> class CustomTipExample(Scene):
... def construct(self):
... self.play(Create(arr))
Using a class inherited from [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
to get a non-filled tip is a shorthand to manually specifying the arrow tip style as follows:
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[1, 1, 0\]),
... tip\_style\={'fill\_opacity': 0, 'stroke\_width': 3})
The following example illustrates the usage of all of the predefined arrow tips.
Example: ArrowTipsShowcase [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#arrowtipsshowcase)

from manim import \*
class ArrowTipsShowcase(Scene):
def construct(self):
tip\_names \= \[\
'Default (YELLOW)', 'ArrowTriangleTip', 'Default', 'ArrowSquareTip',\
'ArrowSquareFilledTip', 'ArrowCircleTip', 'ArrowCircleFilledTip', 'StealthTip'\
\]
big\_arrows \= \[\
Arrow(start\=\[\-4, 3.5, 0\], end\=\[2, 3.5, 0\], color\=YELLOW),\
Arrow(start\=\[\-4, 2.5, 0\], end\=\[2, 2.5, 0\], tip\_shape\=ArrowTriangleTip),\
Arrow(start\=\[\-4, 1.5, 0\], end\=\[2, 1.5, 0\]),\
Arrow(start\=\[\-4, 0.5, 0\], end\=\[2, 0.5, 0\], tip\_shape\=ArrowSquareTip),\
\
Arrow(\[\-4, \-0.5, 0\], \[2, \-0.5, 0\], tip\_shape\=ArrowSquareFilledTip),\
Arrow(\[\-4, \-1.5, 0\], \[2, \-1.5, 0\], tip\_shape\=ArrowCircleTip),\
Arrow(\[\-4, \-2.5, 0\], \[2, \-2.5, 0\], tip\_shape\=ArrowCircleFilledTip),\
Arrow(\[\-4, \-3.5, 0\], \[2, \-3.5, 0\], tip\_shape\=StealthTip)\
\]
small\_arrows \= (
arrow.copy().scale(0.5, scale\_tips\=True).next\_to(arrow, RIGHT) for arrow in big\_arrows
)
labels \= (
Text(tip\_names\[i\], font\='monospace', font\_size\=20, color\=BLUE).next\_to(big\_arrows\[i\], LEFT) for i in range(len(big\_arrows))
)
self.add(\*big\_arrows, \*small\_arrows, \*labels)
class ArrowTipsShowcase(Scene):
def construct(self):
tip\_names = \[\
'Default (YELLOW)', 'ArrowTriangleTip', 'Default', 'ArrowSquareTip',\
'ArrowSquareFilledTip', 'ArrowCircleTip', 'ArrowCircleFilledTip', 'StealthTip'\
\]
big\_arrows = \[\
Arrow(start=\[-4, 3.5, 0\], end=\[2, 3.5, 0\], color=YELLOW),\
Arrow(start=\[-4, 2.5, 0\], end=\[2, 2.5, 0\], tip\_shape=ArrowTriangleTip),\
Arrow(start=\[-4, 1.5, 0\], end=\[2, 1.5, 0\]),\
Arrow(start=\[-4, 0.5, 0\], end=\[2, 0.5, 0\], tip\_shape=ArrowSquareTip),\
\
Arrow(\[-4, -0.5, 0\], \[2, -0.5, 0\], tip\_shape=ArrowSquareFilledTip),\
Arrow(\[-4, -1.5, 0\], \[2, -1.5, 0\], tip\_shape=ArrowCircleTip),\
Arrow(\[-4, -2.5, 0\], \[2, -2.5, 0\], tip\_shape=ArrowCircleFilledTip),\
Arrow(\[-4, -3.5, 0\], \[2, -3.5, 0\], tip\_shape=StealthTip)\
\]
small\_arrows = (
arrow.copy().scale(0.5, scale\_tips=True).next\_to(arrow, RIGHT) for arrow in big\_arrows
)
labels = (
Text(tip\_names\[i\], font='monospace', font\_size=20, color=BLUE).next\_to(big\_arrows\[i\], LEFT) for i in range(len(big\_arrows))
)
self.add(\*big\_arrows, \*small\_arrows, \*labels)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| [`base`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.base "manim.mobject.geometry.tips.ArrowTip.base") | The base point of the arrow tip. |
| `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. |
| [`length`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.length "manim.mobject.geometry.tips.ArrowTip.length") | The length of the arrow tip. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| [`tip_angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.tip_angle "manim.mobject.geometry.tips.ArrowTip.tip_angle") | The angle of the arrow tip. |
| [`tip_point`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.tip_point "manim.mobject.geometry.tips.ArrowTip.tip_point") | The tip point of the arrow tip. |
| [`vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.vector "manim.mobject.geometry.tips.ArrowTip.vector") | The vector pointing from the base point to the tip point. |
| `width` | The width of the mobject. |
Parameters:
* **args** (_Any_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*args_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **args** (_Any_)
* **kwargs** (_Any_)
Return type:
None
property base: [Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.base "Link to this definition")
The base point of the arrow tip.
This is the point connecting to the arrow line.
Examples
\>>> from manim import Arrow
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[2, 0, 0\]), buff\=0)
\>>> arrow.tip.base.round(2) + 0. \# add 0. to avoid negative 0 in output
array(\[1.65, 0. , 0. \])
property length: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.length "Link to this definition")
The length of the arrow tip.
Examples
\>>> from manim import Arrow
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[1, 2, 0\]))
\>>> round(arrow.tip.length, 3)
0.35
property tip\_angle: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.tip_angle "Link to this definition")
The angle of the arrow tip.
Examples
\>>> from manim import Arrow
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[1, 1, 0\]), buff\=0)
\>>> bool(round(arrow.tip.tip\_angle, 5) \== round(PI/4, 5))
True
property tip\_point: [Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.tip_point "Link to this definition")
The tip point of the arrow tip.
Examples
\>>> from manim import Arrow
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[2, 0, 0\]), buff\=0)
\>>> arrow.tip.tip\_point.round(2) + 0.
array(\[2., 0., 0.\])
property vector: [Vector3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip.vector "Link to this definition")
The vector pointing from the base point to the tip point.
Examples
\>>> from manim import Arrow
\>>> arrow \= Arrow(np.array(\[0, 0, 0\]), np.array(\[2, 2, 0\]), buff\=0)
\>>> arrow.tip.vector.round(2) + 0.
array(\[0.25, 0.25, 0. \])
---
# BarChart - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.probability.BarChart.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.probability.BarChart.rst "Edit this page")
BarChart[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#barchart "Link to this heading")
===============================================================================================================================================
Qualified name: `manim.mobject.graphing.probability.BarChart`
class BarChart(_values_, _bar\_names\=None_, _y\_range\=None_, _x\_length\=None_, _y\_length\=None_, _bar\_colors\=\['#003f5c', '#58508d', '#bc5090', '#ff6361', '#ffa600'\]_, _bar\_width\=0.6_, _bar\_fill\_opacity\=0.7_, _bar\_stroke\_width\=3_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "Link to this definition")
Bases: [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
Creates a bar chart. Inherits from [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
, so it shares its methods and attributes. Each axis inherits from [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
, so pass in `x_axis_config`/`y_axis_config` to control their attributes.
Parameters:
* **values** (_MutableSequence__\[__float__\]_) – A sequence of values that determines the height of each bar. Accepts negative values.
* **bar\_names** (_Sequence__\[__str__\]_ _|_ _None_) – A sequence of names for each bar. Does not have to match the length of `values`.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The y\_axis range of values. If `None`, the range will be calculated based on the min/max of `values` and the step will be calculated based on `y_length`.
* **x\_length** (_float_ _|_ _None_) – The length of the x-axis. If `None`, it is automatically calculated based on the number of values and the width of the screen.
* **y\_length** (_float_ _|_ _None_) – The length of the y-axis.
* **bar\_colors** (_Iterable__\[__str__\]_) – The color for the bars. Accepts a sequence of colors (can contain just one item). If the length of\`\`bar\_colors\`\` does not match that of `values`, intermediate colors will be automatically determined.
* **bar\_width** (_float_) – The length of a bar. Must be between 0 and 1.
* **bar\_fill\_opacity** (_float_) – The fill opacity of the bars.
* **bar\_stroke\_width** (_float_) – The stroke width of the bars.
* **kwargs** (_Any_)
Examples
Example: BarChartExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#barchartexample)

from manim import \*
class BarChartExample(Scene):
def construct(self):
chart \= BarChart(
values\=\[\-5, 40, \-10, 20, \-3\],
bar\_names\=\["one", "two", "three", "four", "five"\],
y\_range\=\[\-20, 50, 10\],
y\_length\=6,
x\_length\=10,
x\_axis\_config\={"font\_size": 36},
)
c\_bar\_lbls \= chart.get\_bar\_labels(font\_size\=48)
self.add(chart, c\_bar\_lbls)
class BarChartExample(Scene):
def construct(self):
chart = BarChart(
values=\[-5, 40, -10, 20, -3\],
bar\_names=\["one", "two", "three", "four", "five"\],
y\_range=\[-20, 50, 10\],
y\_length=6,
x\_length=10,
x\_axis\_config={"font\_size": 36},
)
c\_bar\_lbls = chart.get\_bar\_labels(font\_size=48)
self.add(chart, c\_bar\_lbls)
Methods
| | |
| --- | --- |
| [`change_bar_values`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.change_bar_values "manim.mobject.graphing.probability.BarChart.change_bar_values") | Updates the height of the bars of the chart. |
| [`get_bar_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.get_bar_labels "manim.mobject.graphing.probability.BarChart.get_bar_labels") | Annotates each bar with its corresponding value. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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\_x\_axis\_labels()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart._add_x_axis_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart._add_x_axis_labels "Link to this definition")
Essentially :meth\`:~.NumberLine.add\_labels\`, but differs in that the direction of the label with respect to the x\_axis changes to UP or DOWN depending on the value.
UP for negative values and DOWN for positive values.
Return type:
None
\_create\_bar(_bar\_number_, _value_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart._create_bar)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart._create_bar "Link to this definition")
Creates a positioned bar on the chart.
Parameters:
* **bar\_number** (_int_) – Determines the x-position of the bar.
* **value** (_float_) – The value that determines the height of the bar.
Returns:
A positioned rectangle representing a bar on the chart.
Return type:
[Rectangle](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
\_original\_\_init\_\_(_values_, _bar\_names\=None_, _y\_range\=None_, _x\_length\=None_, _y\_length\=None_, _bar\_colors\=\['#003f5c', '#58508d', '#bc5090', '#ff6361', '#ffa600'\]_, _bar\_width\=0.6_, _bar\_fill\_opacity\=0.7_, _bar\_stroke\_width\=3_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **values** (_MutableSequence__\[__float__\]_)
* **bar\_names** (_Sequence__\[__str__\]_ _|_ _None_)
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **x\_length** (_float_ _|_ _None_)
* **y\_length** (_float_ _|_ _None_)
* **bar\_colors** (_Iterable__\[__str__\]_)
* **bar\_width** (_float_)
* **bar\_fill\_opacity** (_float_)
* **bar\_stroke\_width** (_float_)
* **kwargs** (_Any_)
\_update\_colors()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart._update_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart._update_colors "Link to this definition")
Initialize the colors of the bars of the chart.
Sets the color of `self.bars` via `self.bar_colors`.
Primarily used when the bars are initialized with `self._add_bars` or updated via `self.change_bar_values`.
Return type:
None
change\_bar\_values(_values_, _update\_colors\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart.change_bar_values)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.change_bar_values "Link to this definition")
Updates the height of the bars of the chart.
Parameters:
* **values** (_Iterable__\[__float__\]_) – The values that will be used to update the height of the bars. Does not have to match the number of bars.
* **update\_colors** (_bool_) – Whether to re-initalize the colors of the bars based on `self.bar_colors`.
Return type:
None
Examples
Example: ChangeBarValuesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#changebarvaluesexample)

from manim import \*
class ChangeBarValuesExample(Scene):
def construct(self):
values\=\[\-10, \-8, \-6, \-4, \-2, 0, 2, 4, 6, 8, 10\]
chart \= BarChart(
values,
y\_range\=\[\-10, 10, 2\],
y\_axis\_config\={"font\_size": 24},
)
self.add(chart)
chart.change\_bar\_values(list(reversed(values)))
self.add(chart.get\_bar\_labels(font\_size\=24))
class ChangeBarValuesExample(Scene):
def construct(self):
values=\[-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10\]
chart = BarChart(
values,
y\_range=\[-10, 10, 2\],
y\_axis\_config={"font\_size": 24},
)
self.add(chart)
chart.change\_bar\_values(list(reversed(values)))
self.add(chart.get\_bar\_labels(font\_size=24))
get\_bar\_labels(_color\=None_, _font\_size\=24_, _buff\=0.25_, _label\_constructor\=_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/probability.html#BarChart.get_bar_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.get_bar_labels "Link to this definition")
Annotates each bar with its corresponding value. Use `self.bar_labels` to access the labels after creation.
Parameters:
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_) – The color of each label. By default `None` and is based on the parent’s bar color.
* **font\_size** (_float_) – The font size of each label.
* **buff** (_float_) – The distance from each label to its bar. By default 0.4.
* **label\_constructor** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_) – The Mobject class to construct the labels, by default [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
.
Return type:
[_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetBarLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#getbarlabelsexample)

from manim import \*
class GetBarLabelsExample(Scene):
def construct(self):
chart \= BarChart(values\=\[10, 9, 8, 7, 6, 5, 4, 3, 2, 1\], y\_range\=\[0, 10, 1\])
c\_bar\_lbls \= chart.get\_bar\_labels(
color\=WHITE, label\_constructor\=MathTex, font\_size\=36
)
self.add(chart, c\_bar\_lbls)
class GetBarLabelsExample(Scene):
def construct(self):
chart = BarChart(values=\[10, 9, 8, 7, 6, 5, 4, 3, 2, 1\], y\_range=\[0, 10, 1\])
c\_bar\_lbls = chart.get\_bar\_labels(
color=WHITE, label\_constructor=MathTex, font\_size=36
)
self.add(chart, c\_bar\_lbls)
---
# ThreeDAxes - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.rst "Edit this page")
ThreeDAxes[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#threedaxes "Link to this heading")
============================================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.ThreeDAxes`
class ThreeDAxes(_x\_range\=(-6, 6, 1)_, _y\_range\=(-5, 5, 1)_, _z\_range\=(-4, 4, 1)_, _x\_length\=10.5_, _y\_length\=10.5_, _z\_length\=6.5_, _z\_axis\_config\=None_, _z\_normal\=array(\[0., \-1., 0.\])_, _num\_axis\_pieces\=20_, _light\_source\=array(\[-7., \-9., 10.\])_, _depth\=None_, _gloss\=0.5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ThreeDAxes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "Link to this definition")
Bases: [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
A 3-dimensional set of axes.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `[x_min, x_max, x_step]` values of the x-axis.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `[y_min, y_max, y_step]` values of the y-axis.
* **z\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `[z_min, z_max, z_step]` values of the z-axis.
* **x\_length** (_float_ _|_ _None_) – The length of the x-axis.
* **y\_length** (_float_ _|_ _None_) – The length of the y-axis.
* **z\_length** (_float_ _|_ _None_) – The length of the z-axis.
* **z\_axis\_config** (_dict__\[__str__,_ _Any__\]_) – Arguments to be passed to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
that influence the z-axis.
* **z\_normal** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the normal.
* **num\_axis\_pieces** (_int_) – The number of pieces used to construct the axes.
* **light\_source** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The direction of the light source.
* **depth** (_Any_) – Currently non-functional.
* **gloss** (_float_) – Currently non-functional.
* **kwargs** (_dict__\[__str__,_ _Any__\]_) – Additional arguments to be passed to [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
.
Methods
| | |
| --- | --- |
| [`get_axis_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_axis_labels "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_axis_labels") | Defines labels for the x\_axis and y\_axis of the graph. |
| [`get_y_axis_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label") | Generate a y-axis label. |
| [`get_z_axis_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label") | Generate a z-axis label. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_x\_range\=(-6, 6, 1)_, _y\_range\=(-5, 5, 1)_, _z\_range\=(-4, 4, 1)_, _x\_length\=10.5_, _y\_length\=10.5_, _z\_length\=6.5_, _z\_axis\_config\=None_, _z\_normal\=array(\[0., \-1., 0.\])_, _num\_axis\_pieces\=20_, _light\_source\=array(\[-7., \-9., 10.\])_, _depth\=None_, _gloss\=0.5_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **z\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **x\_length** (_float_ _|_ _None_)
* **y\_length** (_float_ _|_ _None_)
* **z\_length** (_float_ _|_ _None_)
* **z\_axis\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **z\_normal** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **num\_axis\_pieces** (_int_)
* **light\_source** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **depth** (_Any_)
* **gloss** (_float_)
* **kwargs** (_dict__\[__str__,_ _Any__\]_)
get\_axis\_labels(_x\_label\='x'_, _y\_label\='y'_, _z\_label\='z'_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ThreeDAxes.get_axis_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_axis_labels "Link to this definition")
Defines labels for the x\_axis and y\_axis of the graph.
For increased control over the position of the labels, use [`get_x_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label")
, [`get_y_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label")
, and [`get_z_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label")
.
Parameters:
* **x\_label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label for the x\_axis. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **y\_label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label for the y\_axis. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **z\_label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label for the z\_axis. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the labels for the x\_axis, y\_axis, and z\_axis.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
See also
[`get_x_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label")
[`get_y_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label")
[`get_z_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label")
Examples
Example: GetAxisLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#getaxislabelsexample)

from manim import \*
class GetAxisLabelsExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=2\*PI/5, theta\=PI/5)
axes \= ThreeDAxes()
labels \= axes.get\_axis\_labels(
Text("x-axis").scale(0.7), Text("y-axis").scale(0.45), Text("z-axis").scale(0.45)
)
self.add(axes, labels)
class GetAxisLabelsExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=2\*PI/5, theta=PI/5)
axes = ThreeDAxes()
labels = axes.get\_axis\_labels(
Text("x-axis").scale(0.7), Text("y-axis").scale(0.45), Text("z-axis").scale(0.45)
)
self.add(axes, labels)
get\_y\_axis\_label(_label_, _edge\=array(\[1., 1., 0.\])_, _direction\=array(\[1., 1., 0.\])_, _buff\=0.1_, _rotation\=1.5707963267948966_, _rotation\_axis\=array(\[0., 0., 1.\])_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ThreeDAxes.get_y_axis_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_y_axis_label "Link to this definition")
Generate a y-axis label.
Parameters:
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The edge of the y-axis to which the label will be added, by default `UR`.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Allows for further positioning of the label from an edge, by default `UR`.
* **buff** (_float_) – The distance of the label from the line, by default `SMALL_BUFF`.
* **rotation** (_float_) – The angle at which to rotate the label, by default `PI/2`.
* **rotation\_axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis about which to rotate the label, by default `OUT`.
* **kwargs** (_dict__\[__str__,_ _Any__\]_)
Returns:
The positioned label.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: GetYAxisLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#getyaxislabelexample)

from manim import \*
class GetYAxisLabelExample(ThreeDScene):
def construct(self):
ax \= ThreeDAxes()
lab \= ax.get\_y\_axis\_label(Tex("$y$-label"))
self.set\_camera\_orientation(phi\=2\*PI/5, theta\=PI/5)
self.add(ax, lab)
class GetYAxisLabelExample(ThreeDScene):
def construct(self):
ax = ThreeDAxes()
lab = ax.get\_y\_axis\_label(Tex("$y$-label"))
self.set\_camera\_orientation(phi=2\*PI/5, theta=PI/5)
self.add(ax, lab)
get\_z\_axis\_label(_label_, _edge\=array(\[0., 0., 1.\])_, _direction\=array(\[1., 0., 0.\])_, _buff\=0.1_, _rotation\=1.5707963267948966_, _rotation\_axis\=array(\[1., 0., 0.\])_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#ThreeDAxes.get_z_axis_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label "Link to this definition")
Generate a z-axis label.
Parameters:
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The edge of the z-axis to which the label will be added, by default `OUT`.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Allows for further positioning of the label from an edge, by default `RIGHT`.
* **buff** (_float_) – The distance of the label from the line, by default `SMALL_BUFF`.
* **rotation** (_float_) – The angle at which to rotate the label, by default `PI/2`.
* **rotation\_axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis about which to rotate the label, by default `RIGHT`.
* **kwargs** (_Any_)
Returns:
The positioned label.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: GetZAxisLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#getzaxislabelexample)

from manim import \*
class GetZAxisLabelExample(ThreeDScene):
def construct(self):
ax \= ThreeDAxes()
lab \= ax.get\_z\_axis\_label(Tex("$z$-label"))
self.set\_camera\_orientation(phi\=2\*PI/5, theta\=PI/5)
self.add(ax, lab)
class GetZAxisLabelExample(ThreeDScene):
def construct(self):
ax = ThreeDAxes()
lab = ax.get\_z\_axis\_label(Tex("$z$-label"))
self.set\_camera\_orientation(phi=2\*PI/5, theta=PI/5)
self.add(ax, lab)
---
# DiGraph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graph.DiGraph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graph.DiGraph.rst "Edit this page")
DiGraph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#digraph "Link to this heading")
=============================================================================================================================
Qualified name: `manim.mobject.graph.DiGraph`
class DiGraph(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#DiGraph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "Link to this definition")
Bases: [`GenericGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "manim.mobject.graph.GenericGraph")
A directed graph.
Note
In contrast to undirected graphs, the order in which vertices in a given edge are specified is relevant here.
See also
[`GenericGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "manim.mobject.graph.GenericGraph")
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_) – A list of vertices. Must be hashable elements.
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_) – A list of edges, specified as tuples `(u, v)` where both `u` and `v` are vertices. The edge is directed from `u` to `v`.
* **labels** (_bool_ _|_ _dict_) – Controls whether or not vertices are labeled. If `False` (the default), the vertices are not labeled; if `True` they are labeled using their names (as specified in `vertices`) via [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Alternatively, custom labels can be specified by passing a dictionary whose keys are the vertices, and whose values are the corresponding vertex labels (rendered via, e.g., [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
or [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
).
* **label\_fill\_color** (_str_) – Sets the fill color of the default labels generated when `labels` is set to `True`. Has no effect for other values of `labels`.
* **layout** (_LayoutName_ _|_ _dict__\[__Hashable__,_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]_ _|_ [_LayoutFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction")
) – Either one of `"spring"` (the default), `"circular"`, `"kamada_kawai"`, `"planar"`, `"random"`, `"shell"`, `"spectral"`, `"spiral"`, `"tree"`, and `"partite"` for automatic vertex positioning using `networkx` (see [their documentation](https://networkx.org/documentation/stable/reference/drawing.html#module-networkx.drawing.layout)
for more details), or a dictionary specifying a coordinate (value) for each vertex (key) for manual positioning.
* **layout\_config** (_dict_ _|_ _None_) – Only for automatically generated layouts. A dictionary whose entries are passed as keyword arguments to the automatic layout algorithm specified via `layout` of `networkx`. The `tree` layout also accepts a special parameter `vertex_spacing` passed as a keyword argument inside the `layout_config` dictionary. Passing a tuple `(space_x, space_y)` as this argument overrides the value of `layout_scale` and ensures that vertices are arranged in a way such that the centers of siblings in the same layer are at least `space_x` units apart horizontally, and neighboring layers are spaced `space_y` units vertically.
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_) – The scale of automatically generated layouts: the vertices will be arranged such that the coordinates are located within the interval `[-scale, scale]`. Some layouts accept a tuple `(scale_x, scale_y)` causing the first coordinate to be in the interval `[-scale_x, scale_x]`, and the second in `[-scale_y, scale_y]`. Default: 2.
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying vertices in the scene.
* **vertex\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `vertex_type`, or a dictionary whose keys are the vertices, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding vertex.
* **vertex\_mobjects** (_dict_ _|_ _None_) – A dictionary whose keys are the vertices, and whose values are mobjects to be used as vertices. Passing vertices here overrides all other configuration options for a vertex.
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying edges in the scene.
* **edge\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `edge_type`, or a dictionary whose keys are the edges, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding edge. You can further customize the tip by adding a `tip_config` dictionary for global styling, or by adding the dict to a specific `edge_config`.
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
Examples
Example: MovingDiGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#movingdigraph)
from manim import \*
class MovingDiGraph(Scene):
def construct(self):
vertices \= \[1, 2, 3, 4\]
edges \= \[(1, 2), (2, 3), (3, 4), (1, 3), (1, 4)\]
g \= DiGraph(vertices, edges)
self.add(g)
self.play(
g\[1\].animate.move\_to(\[1, 1, 1\]),
g\[2\].animate.move\_to(\[\-1, 1, 2\]),
g\[3\].animate.move\_to(\[1, \-1, \-1\]),
g\[4\].animate.move\_to(\[\-1, \-1, 0\]),
)
self.wait()
class MovingDiGraph(Scene):
def construct(self):
vertices = \[1, 2, 3, 4\]
edges = \[(1, 2), (2, 3), (3, 4), (1, 3), (1, 4)\]
g = DiGraph(vertices, edges)
self.add(g)
self.play(
g\[1\].animate.move\_to(\[1, 1, 1\]),
g\[2\].animate.move\_to(\[-1, 1, 2\]),
g\[3\].animate.move\_to(\[1, -1, -1\]),
g\[4\].animate.move\_to(\[-1, -1, 0\]),
)
self.wait()
You can customize the edges and arrow tips globally or locally.
Example: CustomDiGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#customdigraph)
from manim import \*
class CustomDiGraph(Scene):
def construct(self):
vertices \= \[i for i in range(5)\]
edges \= \[\
(0, 1),\
(1, 2),\
(3, 2),\
(3, 4),\
\]
edge\_config \= {
"stroke\_width": 2,
"tip\_config": {
"tip\_shape": ArrowSquareTip,
"tip\_length": 0.15,
},
(3, 4): {
"color": RED,
"tip\_config": {"tip\_length": 0.25, "tip\_width": 0.25}
},
}
g \= DiGraph(
vertices,
edges,
labels\=True,
layout\="circular",
edge\_config\=edge\_config,
).scale(1.4)
self.play(Create(g))
self.wait()
class CustomDiGraph(Scene):
def construct(self):
vertices = \[i for i in range(5)\]
edges = \[\
(0, 1),\
(1, 2),\
(3, 2),\
(3, 4),\
\]
edge\_config = {
"stroke\_width": 2,
"tip\_config": {
"tip\_shape": ArrowSquareTip,
"tip\_length": 0.15,
},
(3, 4): {
"color": RED,
"tip\_config": {"tip\_length": 0.25, "tip\_width": 0.25}
},
}
g = DiGraph(
vertices,
edges,
labels=True,
layout="circular",
edge\_config=edge\_config,
).scale(1.4)
self.play(Create(g))
self.wait()
Since this implementation respects the labels boundary you can also use it for an undirected moving graph with labels.
Example: UndirectedMovingDiGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#undirectedmovingdigraph)
from manim import \*
class UndirectedMovingDiGraph(Scene):
def construct(self):
vertices \= \[i for i in range(5)\]
edges \= \[\
(0, 1),\
(1, 2),\
(3, 2),\
(3, 4),\
\]
edge\_config \= {
"stroke\_width": 2,
"tip\_config": {"tip\_length": 0, "tip\_width": 0},
(3, 4): {"color": RED},
}
g \= DiGraph(
vertices,
edges,
labels\=True,
layout\="circular",
edge\_config\=edge\_config,
).scale(1.4)
self.play(Create(g))
self.wait()
self.play(
g\[1\].animate.move\_to(\[1, 1, 1\]),
g\[2\].animate.move\_to(\[\-1, 1, 2\]),
g\[3\].animate.move\_to(\[\-1.5, \-1.5, \-1\]),
g\[4\].animate.move\_to(\[1, \-2, \-1\]),
)
self.wait()
class UndirectedMovingDiGraph(Scene):
def construct(self):
vertices = \[i for i in range(5)\]
edges = \[\
(0, 1),\
(1, 2),\
(3, 2),\
(3, 4),\
\]
edge\_config = {
"stroke\_width": 2,
"tip\_config": {"tip\_length": 0, "tip\_width": 0},
(3, 4): {"color": RED},
}
g = DiGraph(
vertices,
edges,
labels=True,
layout="circular",
edge\_config=edge\_config,
).scale(1.4)
self.play(Create(g))
self.wait()
self.play(
g\[1\].animate.move\_to(\[1, 1, 1\]),
g\[2\].animate.move\_to(\[-1, 1, 2\]),
g\[3\].animate.move\_to(\[-1.5, -1.5, -1\]),
g\[4\].animate.move\_to(\[1, -2, -1\]),
)
self.wait()
Methods
| | |
| --- | --- |
| [`update_edges`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph.update_edges "manim.mobject.graph.DiGraph.update_edges") | Updates the edges to stick at their corresponding vertices. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
static \_empty\_networkx\_graph()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#DiGraph._empty_networkx_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph._empty_networkx_graph "Link to this definition")
Return an empty networkx graph for the given graph type.
Return type:
_DiGraph_
\_original\_\_init\_\_(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_)
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **labels** (_bool_ _|_ _dict_)
* **label\_fill\_color** (_str_)
* **layout** (_Literal__\[__'circular'__,_ _'kamada\_kawai'__,_ _'partite'__,_ _'planar'__,_ _'random'__,_ _'shell'__,_ _'spectral'__,_ _'spiral'__,_ _'spring'__,_ _'tree'__\]_ _|_ _dict__\[__~collections.abc.Hashable__,_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)__\]_ _|_ _~manim.mobject.graph.LayoutFunction_)
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_)
* **layout\_config** (_dict_ _|_ _None_)
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **vertex\_config** (_dict_ _|_ _None_)
* **vertex\_mobjects** (_dict_ _|_ _None_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
* **edge\_config** (_dict_ _|_ _None_)
Return type:
None
\_populate\_edge\_dict(_edges_, _edge\_type_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#DiGraph._populate_edge_dict)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph._populate_edge_dict "Link to this definition")
Helper method for populating the edges of the graph.
Parameters:
* **edges** (_list__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
update\_edges(_graph_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#DiGraph.update_edges)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph.update_edges "Link to this definition")
Updates the edges to stick at their corresponding vertices.
Arrow tips need to be repositioned since otherwise they can be deformed.
---
# LayoutFunction - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graph.LayoutFunction.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graph.LayoutFunction.rst "Edit this page")
LayoutFunction[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#layoutfunction "Link to this heading")
==================================================================================================================================================
Qualified name: `manim.mobject.graph.LayoutFunction`
class LayoutFunction(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#LayoutFunction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "Link to this definition")
Bases: `Protocol`
A protocol for automatic layout functions that compute a layout for a graph to be used in `change_layout()`.
Note
The layout function must be a pure function, i.e., it must not modify the graph passed to it.
Examples
Here is an example that arranges nodes in an n x m grid in sorted order.
Example: CustomLayoutExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#customlayoutexample)

from manim import \*
class CustomLayoutExample(Scene):
def construct(self):
import numpy as np
import networkx as nx
\# create custom layout
def custom\_layout(
graph: nx.Graph,
scale: float | tuple\[float, float, float\] \= 2,
n: int | None \= None,
\*args: Any,
\*\*kwargs: Any,
):
nodes \= sorted(list(graph))
height \= len(nodes) // n
return {
node: (scale \* np.array(\[\
(i % n) \- (n\-1)/2,\
\-(i // n) + height/2,\
0\
\])) for i, node in enumerate(graph)
}
\# draw graph
n \= 4
graph \= Graph(
\[i for i in range(4 \* 2 \- 1)\],
\[(0, 1), (0, 4), (1, 2), (1, 5), (2, 3), (2, 6), (4, 5), (5, 6)\],
labels\=True,
layout\=custom\_layout,
layout\_config\={'n': n}
)
self.add(graph)
class CustomLayoutExample(Scene):
def construct(self):
import numpy as np
import networkx as nx
# create custom layout
def custom\_layout(
graph: nx.Graph,
scale: float | tuple\[float, float, float\] = 2,
n: int | None = None,
\*args: Any,
\*\*kwargs: Any,
):
nodes = sorted(list(graph))
height = len(nodes) // n
return {
node: (scale \* np.array(\[\
(i % n) - (n-1)/2,\
-(i // n) + height/2,\
0\
\])) for i, node in enumerate(graph)
}
# draw graph
n = 4
graph = Graph(
\[i for i in range(4 \* 2 - 1)\],
\[(0, 1), (0, 4), (1, 2), (1, 5), (2, 3), (2, 6), (4, 5), (5, 6)\],
labels=True,
layout=custom\_layout,
layout\_config={'n': n}
)
self.add(graph)
Several automatic layouts are provided by manim, and can be used by passing their name as the `layout` parameter to `change_layout()`. Alternatively, a custom layout function can be passed to `change_layout()` as the `layout` parameter. Such a function must adhere to the [`LayoutFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction")
protocol.
The [`LayoutFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction")
s provided by manim are illustrated below:
* Circular Layout: places the vertices on a circle
Example: CircularLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#circularlayout)

from manim import \*
class CircularLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="circular",
labels\=True
)
self.add(graph)
class CircularLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="circular",
labels=True
)
self.add(graph)
* Kamada Kawai Layout: tries to place the vertices such that the given distances between them are respected
Example: KamadaKawaiLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#kamadakawailayout)

from manim import \*
class KamadaKawaiLayout(Scene):
def construct(self):
from collections import defaultdict
distances: dict\[int, dict\[int, float\]\] \= defaultdict(dict)
\# set desired distances
distances\[1\]\[2\] \= 1 \# distance between vertices 1 and 2 is 1
distances\[2\]\[3\] \= 1 \# distance between vertices 2 and 3 is 1
distances\[3\]\[4\] \= 2 \# etc
distances\[4\]\[5\] \= 3
distances\[5\]\[6\] \= 5
distances\[6\]\[1\] \= 8
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1)\],
layout\="kamada\_kawai",
layout\_config\={"dist": distances},
layout\_scale\=4,
labels\=True
)
self.add(graph)
class KamadaKawaiLayout(Scene):
def construct(self):
from collections import defaultdict
distances: dict\[int, dict\[int, float\]\] = defaultdict(dict)
# set desired distances
distances\[1\]\[2\] = 1 # distance between vertices 1 and 2 is 1
distances\[2\]\[3\] = 1 # distance between vertices 2 and 3 is 1
distances\[3\]\[4\] = 2 # etc
distances\[4\]\[5\] = 3
distances\[5\]\[6\] = 5
distances\[6\]\[1\] = 8
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1)\],
layout="kamada\_kawai",
layout\_config={"dist": distances},
layout\_scale=4,
labels=True
)
self.add(graph)
* Partite Layout: places vertices into distinct partitions
Example: PartiteLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#partitelayout)

from manim import \*
class PartiteLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="partite",
layout\_config\={"partitions": \[\[1,2\],\[3,4\],\[5,6\]\]},
labels\=True
)
self.add(graph)
class PartiteLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="partite",
layout\_config={"partitions": \[\[1,2\],\[3,4\],\[5,6\]\]},
labels=True
)
self.add(graph)
* Planar Layout: places vertices such that edges do not cross
Example: PlanarLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#planarlayout)

from manim import \*
class PlanarLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="planar",
layout\_scale\=4,
labels\=True
)
self.add(graph)
class PlanarLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="planar",
layout\_scale=4,
labels=True
)
self.add(graph)
* Random Layout: randomly places vertices
Example: RandomLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#randomlayout)

from manim import \*
class RandomLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="random",
labels\=True
)
self.add(graph)
class RandomLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="random",
labels=True
)
self.add(graph)
* Shell Layout: places vertices in concentric circles
Example: ShellLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#shelllayout)

from manim import \*
class ShellLayout(Scene):
def construct(self):
nlist \= \[\[1, 2, 3\], \[4, 5, 6, 7, 8, 9\]\]
graph \= Graph(
\[1, 2, 3, 4, 5, 6, 7, 8, 9\],
\[(1, 2), (2, 3), (3, 1), (4, 1), (4, 2), (5, 2), (6, 2), (6, 3), (7, 3), (8, 3), (8, 1), (9, 1)\],
layout\="shell",
layout\_config\={"nlist": nlist},
labels\=True
)
self.add(graph)
class ShellLayout(Scene):
def construct(self):
nlist = \[\[1, 2, 3\], \[4, 5, 6, 7, 8, 9\]\]
graph = Graph(
\[1, 2, 3, 4, 5, 6, 7, 8, 9\],
\[(1, 2), (2, 3), (3, 1), (4, 1), (4, 2), (5, 2), (6, 2), (6, 3), (7, 3), (8, 3), (8, 1), (9, 1)\],
layout="shell",
layout\_config={"nlist": nlist},
labels=True
)
self.add(graph)
* Spectral Layout: places vertices using the eigenvectors of the graph Laplacian (clusters nodes which are an approximation of the ratio cut)
Example: SpectralLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#spectrallayout)

from manim import \*
class SpectralLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="spectral",
labels\=True
)
self.add(graph)
class SpectralLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="spectral",
labels=True
)
self.add(graph)
* Sprial Layout: places vertices in a spiraling pattern
Example: SpiralLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#spirallayout)

from manim import \*
class SpiralLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="spiral",
labels\=True
)
self.add(graph)
class SpiralLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="spiral",
labels=True
)
self.add(graph)
* Spring Layout: places nodes according to the Fruchterman-Reingold force-directed algorithm (attempts to minimize edge length while maximizing node separation)
Example: SpringLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#springlayout)

from manim import \*
class SpringLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout\="spring",
labels\=True
)
self.add(graph)
class SpringLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6\],
\[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 1), (5, 1), (1, 3), (3, 5)\],
layout="spring",
labels=True
)
self.add(graph)
* Tree Layout: places vertices into a tree with a root node and branches (can only be used with legal trees)
Example: TreeLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#treelayout)

from manim import \*
class TreeLayout(Scene):
def construct(self):
graph \= Graph(
\[1, 2, 3, 4, 5, 6, 7\],
\[(1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7)\],
layout\="tree",
layout\_config\={"root\_vertex": 1},
labels\=True
)
self.add(graph)
class TreeLayout(Scene):
def construct(self):
graph = Graph(
\[1, 2, 3, 4, 5, 6, 7\],
\[(1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7)\],
layout="tree",
layout\_config={"root\_vertex": 1},
labels=True
)
self.add(graph)
Methods
---
# GenericGraph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graph.GenericGraph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graph.GenericGraph.rst "Edit this page")
GenericGraph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#genericgraph "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.graph.GenericGraph`
class GenericGraph(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Abstract base class for graphs (that is, a collection of vertices connected with edges).
Graphs can be instantiated by passing both a list of (distinct, hashable) vertex names, together with list of edges (as tuples of vertex names). See the examples for concrete implementations of this class for details.
Note
This implementation uses updaters to make the edges move with the vertices.
See also
[`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
, [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_) – A list of vertices. Must be hashable elements.
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_) – A list of edges, specified as tuples `(u, v)` where both `u` and `v` are vertices.
* **labels** (_bool_ _|_ _dict_) – Controls whether or not vertices are labeled. If `False` (the default), the vertices are not labeled; if `True` they are labeled using their names (as specified in `vertices`) via [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Alternatively, custom labels can be specified by passing a dictionary whose keys are the vertices, and whose values are the corresponding vertex labels (rendered via, e.g., [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
or [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
).
* **label\_fill\_color** (_str_) – Sets the fill color of the default labels generated when `labels` is set to `True`. Has no effect for other values of `labels`.
* **layout** (_LayoutName_ _|_ _dict__\[__Hashable__,_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]_ _|_ [_LayoutFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction")
) – Either one of `"spring"` (the default), `"circular"`, `"kamada_kawai"`, `"planar"`, `"random"`, `"shell"`, `"spectral"`, `"spiral"`, `"tree"`, and `"partite"` for automatic vertex positioning primarily using `networkx` (see [their documentation](https://networkx.org/documentation/stable/reference/drawing.html#module-networkx.drawing.layout)
for more details), a dictionary specifying a coordinate (value) for each vertex (key) for manual positioning, or a .:class:~.LayoutFunction with a user-defined automatic layout.
* **layout\_config** (_dict_ _|_ _None_) – Only for automatic layouts. A dictionary whose entries are passed as keyword arguments to the named layout or automatic layout function specified via `layout`. The `tree` layout also accepts a special parameter `vertex_spacing` passed as a keyword argument inside the `layout_config` dictionary. Passing a tuple `(space_x, space_y)` as this argument overrides the value of `layout_scale` and ensures that vertices are arranged in a way such that the centers of siblings in the same layer are at least `space_x` units apart horizontally, and neighboring layers are spaced `space_y` units vertically.
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_) – The scale of automatically generated layouts: the vertices will be arranged such that the coordinates are located within the interval `[-scale, scale]`. Some layouts accept a tuple `(scale_x, scale_y)` causing the first coordinate to be in the interval `[-scale_x, scale_x]`, and the second in `[-scale_y, scale_y]`. Default: 2.
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying vertices in the scene.
* **vertex\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `vertex_type`, or a dictionary whose keys are the vertices, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding vertex.
* **vertex\_mobjects** (_dict_ _|_ _None_) – A dictionary whose keys are the vertices, and whose values are mobjects to be used as vertices. Passing vertices here overrides all other configuration options for a vertex.
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying edges in the scene. Must be a subclass of [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
for default updaters to work.
* **edge\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `edge_type`, or a dictionary whose keys are the edges, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding edge.
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
Methods
| | |
| --- | --- |
| [`add_edges`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.add_edges "manim.mobject.graph.GenericGraph.add_edges") | Add new edges to the graph. |
| [`add_vertices`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.add_vertices "manim.mobject.graph.GenericGraph.add_vertices") | Add a list of vertices to the graph. |
| [`change_layout`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.change_layout "manim.mobject.graph.GenericGraph.change_layout") | Change the layout of this graph. |
| [`from_networkx`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.from_networkx "manim.mobject.graph.GenericGraph.from_networkx") | Build a [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
or [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
from a given `networkx` graph. |
| [`remove_edges`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.remove_edges "manim.mobject.graph.GenericGraph.remove_edges") | Remove several edges from the graph. |
| [`remove_vertices`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.remove_vertices "manim.mobject.graph.GenericGraph.remove_vertices") | Remove several vertices from the graph. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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\_edge(_edge_, _edge\_type\=_, _edge\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._add_edge)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._add_edge "Link to this definition")
Add a new edge to the graph.
Parameters:
* **edge** (_tuple__\[__Hashable__,_ _Hashable__\]_) – The edge (as a tuple of vertex identifiers) to be added. If a non-existing vertex is passed, a new vertex with default settings will be created. Create new vertices yourself beforehand to customize them.
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying edges in the scene.
* **edge\_config** (_dict_ _|_ _None_) – A dictionary containing keyword arguments to be passed to the class specified via `edge_type`.
Returns:
A group containing all newly added vertices and edges.
Return type:
[Group](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group")
\_add\_vertex(_vertex_, _position\=None_, _label\=False_, _label\_fill\_color\=ManimColor('#000000')_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobject\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._add_vertex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._add_vertex "Link to this definition")
Add a vertex to the graph.
Parameters:
* **vertex** (_Hashable_) – A hashable vertex identifier.
* **position** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ _None_) – The coordinates where the new vertex should be added. If `None`, the center of the graph is used.
* **label** (_bool_) – Controls whether or not the vertex is labeled. If `False` (the default), the vertex is not labeled; if `True` it is labeled using its names (as specified in `vertex`) via [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Alternatively, any [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
can be passed to be used as the label.
* **label\_fill\_color** (_str_) – Sets the fill color of the default labels generated when `labels` is set to `True`. Has no effect for other values of `label`.
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying vertices in the scene.
* **vertex\_config** (_dict_ _|_ _None_) – A dictionary containing keyword arguments to be passed to the class specified via `vertex_type`.
* **vertex\_mobject** (_dict_ _|_ _None_) – The mobject to be used as the vertex. Overrides all other vertex customization options.
Return type:
[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
static \_empty\_networkx\_graph()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._empty_networkx_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._empty_networkx_graph "Link to this definition")
Return an empty networkx graph for the given graph type.
Return type:
_Graph_
\_original\_\_init\_\_(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_)
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **labels** (_bool_ _|_ _dict_)
* **label\_fill\_color** (_str_)
* **layout** (_Literal__\[__'circular'__,_ _'kamada\_kawai'__,_ _'partite'__,_ _'planar'__,_ _'random'__,_ _'shell'__,_ _'spectral'__,_ _'spiral'__,_ _'spring'__,_ _'tree'__\]_ _|_ _dict__\[__~collections.abc.Hashable__,_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)__\]_ _|_ _~manim.mobject.graph.LayoutFunction_)
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_)
* **layout\_config** (_dict_ _|_ _None_)
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **vertex\_config** (_dict_ _|_ _None_)
* **vertex\_mobjects** (_dict_ _|_ _None_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
* **edge\_config** (_dict_ _|_ _None_)
Return type:
None
\_populate\_edge\_dict(_edges_, _edge\_type_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._populate_edge_dict)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._populate_edge_dict "Link to this definition")
Helper method for populating the edges of the graph.
Parameters:
* **edges** (_list__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
\_remove\_edge(_edge_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._remove_edge)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._remove_edge "Link to this definition")
Remove an edge from the graph.
Parameters:
**edge** (_tuple__\[__Hashable__\]_) – The edge (i.e., a tuple of vertex identifiers) to be removed from the graph.
Returns:
The removed edge.
Return type:
[Mobject](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
\_remove\_vertex(_vertex_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph._remove_vertex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph._remove_vertex "Link to this definition")
Remove a vertex (as well as all incident edges) from the graph.
Parameters:
**vertex** – The identifier of a vertex to be removed.
Returns:
A mobject containing all removed objects.
Return type:
[Group](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group")
add\_edges(_\*edges_, _edge\_type\=_, _edge\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.add_edges)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.add_edges "Link to this definition")
Add new edges to the graph.
Parameters:
* **edges** (_tuple__\[__Hashable__,_ _Hashable__\]_) – Edges (as tuples of vertex identifiers) to be added. If a non-existing vertex is passed, a new vertex with default settings will be created. Create new vertices yourself beforehand to customize them.
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying edges in the scene.
* **edge\_config** (_dict_ _|_ _None_) – A dictionary either containing keyword arguments to be passed to the class specified via `edge_type`, or a dictionary whose keys are the edge tuples, and whose values are dictionaries containing keyword arguments to be passed for the construction of the corresponding edge.
* **kwargs** – Any further keyword arguments are passed to [`add_vertices()`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.add_vertices "manim.mobject.graph.GenericGraph.add_vertices")
which is used to create new vertices in the passed edges.
Returns:
A group containing all newly added vertices and edges.
Return type:
[Group](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group")
add\_vertices(_\*vertices_, _positions\=None_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.add_vertices)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.add_vertices "Link to this definition")
Add a list of vertices to the graph.
Parameters:
* **vertices** (_Hashable_) – Hashable vertex identifiers.
* **positions** (_dict_ _|_ _None_) – A dictionary specifying the coordinates where the new vertices should be added. If `None`, all vertices are created at the center of the graph.
* **labels** (_bool_) – Controls whether or not the vertex is labeled. If `False` (the default), the vertex is not labeled; if `True` it is labeled using its names (as specified in `vertex`) via [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Alternatively, any [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
can be passed to be used as the label.
* **label\_fill\_color** (_str_) – Sets the fill color of the default labels generated when `labels` is set to `True`. Has no effect for other values of `labels`.
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying vertices in the scene.
* **vertex\_config** (_dict_ _|_ _None_) – A dictionary containing keyword arguments to be passed to the class specified via `vertex_type`.
* **vertex\_mobjects** (_dict_ _|_ _None_) – A dictionary whose keys are the vertex identifiers, and whose values are mobjects that should be used as vertices. Overrides all other vertex customization options.
* **self** ([_Graph_](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
)
change\_layout(_layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _partitions\=None_, _root\_vertex\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.change_layout)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.change_layout "Link to this definition")
Change the layout of this graph.
See the documentation of [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
for details about the keyword arguments.
Examples
Example: ChangeGraphLayout [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#changegraphlayout)
from manim import \*
class ChangeGraphLayout(Scene):
def construct(self):
G \= Graph(\[1, 2, 3, 4, 5\], \[(1, 2), (2, 3), (3, 4), (4, 5)\],
layout\={1: \[\-2, 0, 0\], 2: \[\-1, 0, 0\], 3: \[0, 0, 0\],
4: \[1, 0, 0\], 5: \[2, 0, 0\]}
)
self.play(Create(G))
self.play(G.animate.change\_layout("circular"))
self.wait()
class ChangeGraphLayout(Scene):
def construct(self):
G = Graph(\[1, 2, 3, 4, 5\], \[(1, 2), (2, 3), (3, 4), (4, 5)\],
layout={1: \[-2, 0, 0\], 2: \[-1, 0, 0\], 3: \[0, 0, 0\],
4: \[1, 0, 0\], 5: \[2, 0, 0\]}
)
self.play(Create(G))
self.play(G.animate.change\_layout("circular"))
self.wait()
Parameters:
* **layout** (_Literal__\[__'circular'__,_ _'kamada\_kawai'__,_ _'partite'__,_ _'planar'__,_ _'random'__,_ _'shell'__,_ _'spectral'__,_ _'spiral'__,_ _'spring'__,_ _'tree'__\]_ _|_ _dict__\[__~collections.abc.Hashable__,_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)__\]_ _|_ _~manim.mobject.graph.LayoutFunction_)
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_)
* **layout\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **partitions** (_list__\[__list__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
Return type:
[_Graph_](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
classmethod from\_networkx(_nxgraph_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.from_networkx)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.from_networkx "Link to this definition")
Build a [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
or [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
from a given `networkx` graph.
Parameters:
* **nxgraph** (_Graph_ _|_ _DiGraph_) – A `networkx` graph or digraph.
* **\*\*kwargs** – Keywords to be passed to the constructor of [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
.
Examples
Example: ImportNetworkxGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#importnetworkxgraph)
from manim import \*
import networkx as nx
nxgraph \= nx.erdos\_renyi\_graph(14, 0.5)
class ImportNetworkxGraph(Scene):
def construct(self):
G \= Graph.from\_networkx(nxgraph, layout\="spring", layout\_scale\=3.5)
self.play(Create(G))
self.play(\*\[G\[v\].animate.move\_to(5\*RIGHT\*np.cos(ind/7 \* PI) +\
3\*UP\*np.sin(ind/7 \* PI))\
for ind, v in enumerate(G.vertices)\])
self.play(Uncreate(G))
import networkx as nx
nxgraph = nx.erdos\_renyi\_graph(14, 0.5)
class ImportNetworkxGraph(Scene):
def construct(self):
G = Graph.from\_networkx(nxgraph, layout="spring", layout\_scale=3.5)
self.play(Create(G))
self.play(\*\[G\[v\].animate.move\_to(5\*RIGHT\*np.cos(ind/7 \* PI) +\
3\*UP\*np.sin(ind/7 \* PI))\
for ind, v in enumerate(G.vertices)\])
self.play(Uncreate(G))
remove\_edges(_\*edges_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.remove_edges)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.remove_edges "Link to this definition")
Remove several edges from the graph.
Parameters:
**edges** (_tuple__\[__Hashable__\]_) – Edges to be removed from the graph.
Returns:
A group containing all removed edges.
Return type:
[Group](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group")
remove\_vertices(_\*vertices_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#GenericGraph.remove_vertices)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph.remove_vertices "Link to this definition")
Remove several vertices from the graph.
Parameters:
**vertices** – Vertices to be removed from the graph.
Examples
\>>> G \= Graph(\[1, 2, 3\], \[(1, 2), (2, 3)\])
\>>> removed \= G.remove\_vertices(2, 3); removed
VGroup(Line, Line, Dot, Dot)
\>>> G
Undirected graph on 1 vertices and 0 edges
---
# Axes - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.Axes.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.Axes.rst "Edit this page")
Axes[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#axes "Link to this heading")
==========================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.Axes`
class Axes(_x\_range\=None_, _y\_range\=None_, _x\_length\=12_, _y\_length\=6_, _axis\_config\=None_, _x\_axis\_config\=None_, _y\_axis\_config\=None_, _tips\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
, [`CoordinateSystem`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "manim.mobject.graphing.coordinate_systems.CoordinateSystem")
Creates a set of axes.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `(x_min, x_max, x_step)` values of the x-axis.
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The `(y_min, y_max, y_step)` values of the y-axis.
* **x\_length** (_float_ _|_ _None_) – The length of the x-axis.
* **y\_length** (_float_ _|_ _None_) – The length of the y-axis.
* **axis\_config** (_dict_ _|_ _None_) – Arguments to be passed to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
that influences both axes.
* **x\_axis\_config** (_dict_ _|_ _None_) – Arguments to be passed to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
that influence the x-axis.
* **y\_axis\_config** (_dict_ _|_ _None_) – Arguments to be passed to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
that influence the y-axis.
* **tips** (_bool_) – Whether or not to include the tips on both axes.
* **kwargs** (_Any_) – Additional arguments to be passed to [`CoordinateSystem`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "manim.mobject.graphing.coordinate_systems.CoordinateSystem")
and [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Examples
Example: LogScalingExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#logscalingexample)

from manim import \*
class LogScalingExample(Scene):
def construct(self):
ax \= Axes(
x\_range\=\[0, 10, 1\],
y\_range\=\[\-2, 6, 1\],
tips\=False,
axis\_config\={"include\_numbers": True},
y\_axis\_config\={"scaling": LogBase(custom\_labels\=True)},
)
\# x\_min must be > 0 because log is undefined at 0.
graph \= ax.plot(lambda x: x \*\* 2, x\_range\=\[0.001, 10\], use\_smoothing\=False)
self.add(ax, graph)
class LogScalingExample(Scene):
def construct(self):
ax = Axes(
x\_range=\[0, 10, 1\],
y\_range=\[-2, 6, 1\],
tips=False,
axis\_config={"include\_numbers": True},
y\_axis\_config={"scaling": LogBase(custom\_labels=True)},
)
# x\_min must be > 0 because log is undefined at 0.
graph = ax.plot(lambda x: x \*\* 2, x\_range=\[0.001, 10\], use\_smoothing=False)
self.add(ax, graph)
Styling arguments can be passed to the underlying [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
mobjects that represent the axes:
Example: AxesWithDifferentTips [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#axeswithdifferenttips)

from manim import \*
class AxesWithDifferentTips(Scene):
def construct(self):
ax \= Axes(axis\_config\={'tip\_shape': StealthTip})
self.add(ax)
class AxesWithDifferentTips(Scene):
def construct(self):
ax = Axes(axis\_config={'tip\_shape': StealthTip})
self.add(ax)
Methods
| | |
| --- | --- |
| [`coords_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.coords_to_point "manim.mobject.graphing.coordinate_systems.Axes.coords_to_point") | Accepts coordinates from the axes and returns a point with respect to the scene. |
| [`get_axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.get_axes "manim.mobject.graphing.coordinate_systems.Axes.get_axes") | Gets the axes. |
| [`get_axis_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.get_axis_labels "manim.mobject.graphing.coordinate_systems.Axes.get_axis_labels") | Defines labels for the x-axis and y-axis of the graph. |
| [`plot_line_graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.plot_line_graph "manim.mobject.graphing.coordinate_systems.Axes.plot_line_graph") | Draws a line graph. |
| [`point_to_coords`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.point_to_coords "manim.mobject.graphing.coordinate_systems.Axes.point_to_coords") | Accepts a point from the scene and returns its coordinates with respect to the axes. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_create\_axis(_range\_terms_, _axis\_config_, _length_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes._create_axis)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes._create_axis "Link to this definition")
Creates an axis and dynamically adjusts its position depending on where 0 is located on the line.
Parameters:
* **range\_terms** (_Sequence__\[__float__\]_) – The range of the the axis : `(x_min, x_max, x_step)`.
* **axis\_config** (_dict__\[__str__,_ _Any__\]_) – Additional parameters that are passed to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
.
* **length** (_float_) – The length of the axis.
Returns:
Returns a number line based on `range_terms`.
Return type:
`NumberLine`
static \_origin\_shift(_axis\_range_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes._origin_shift)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes._origin_shift "Link to this definition")
Determines how to shift graph mobjects to compensate when 0 is not on the axis.
Parameters:
**axis\_range** (_Sequence__\[__float__\]_) – The range of the axis : `(x_min, x_max, x_step)`.
Return type:
float
\_original\_\_init\_\_(_x\_range\=None_, _y\_range\=None_, _x\_length\=12_, _y\_length\=6_, _axis\_config\=None_, _x\_axis\_config\=None_, _y\_axis\_config\=None_, _tips\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **x\_length** (_float_ _|_ _None_)
* **y\_length** (_float_ _|_ _None_)
* **axis\_config** (_dict_ _|_ _None_)
* **x\_axis\_config** (_dict_ _|_ _None_)
* **y\_axis\_config** (_dict_ _|_ _None_)
* **tips** (_bool_)
* **kwargs** (_Any_)
static \_update\_default\_configs(_default\_configs_, _passed\_configs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes._update_default_configs)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes._update_default_configs "Link to this definition")
Takes in two tuples of dicts and return modifies the first such that values from `passed_configs` overwrite values in `default_configs`. If a key does not exist in default\_configs, it is added to the dict.
This method is useful for having defaults in a class and being able to overwrite them with user-defined input.
Parameters:
* **default\_configs** (_tuple__\[__dict__\[__Any__,_ _Any__\]__\]_) – The dict that will be updated.
* **passed\_configs** (_tuple__\[__dict__\[__Any__,_ _Any__\]__\]_) – The dict that will be used to update.
Return type:
None
Examples
To create a tuple with one dictionary, add a comma after the element:
self.\_update\_default\_configs(
(dict\_1,)(
dict\_2,
)
)
coords\_to\_point(_\*coords_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes.coords_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.coords_to_point "Link to this definition")
Accepts coordinates from the axes and returns a point with respect to the scene. Equivalent to ax @ (coord1)
Parameters:
**coords** (_float_ _|_ _Sequence__\[__float__\]_ _|_ _Sequence__\[__Sequence__\[__float__\]__\]_ _|_ _ndarray_) –
The coordinates. Each coord is passed as a separate argument: `ax.coords_to_point(1, 2, 3)`.
Also accepts a list of coordinates
`ax.coords_to_point( [x_0, x_1, ...], [y_0, y_1, ...], ... )`
`ax.coords_to_point( [[x_0, y_0, z_0], [x_1, y_1, z_1]] )`
A single coordinate can also be passed as a flat list or 1D array:
`ax.coords_to_point( [x, y, z] )`
Returns:
A point with respect to the scene’s coordinate system. The shape of the array will be similar to the shape of the input.
Return type:
np.ndarray
Examples
\>>> from manim import Axes
\>>> import numpy as np
\>>> ax \= Axes()
\>>> np.around(ax.coords\_to\_point(1, 0, 0), 2)
array(\[0.86, 0. , 0. \])
\>>> np.around(ax @ (1, 0, 0), 2)
array(\[0.86, 0. , 0. \])
\>>> np.around(ax.coords\_to\_point(\[\[0, 1\], \[1, 1\], \[1, 0\]\]), 2)
array(\[\[0. , 0.75, 0. \],\
\[0.86, 0.75, 0. \],\
\[0.86, 0. , 0. \]\])
\>>> np.around(
... ax.coords\_to\_point(\[0, 1, 1\], \[1, 1, 0\]), 2
... ) \# Transposed version of the above
array(\[\[0. , 0.86, 0.86\],\
\[0.75, 0.75, 0. \],\
\[0. , 0. , 0. \]\])
\>>> np.around(ax.coords\_to\_point(\[1, 0, 0\]), 2)
array(\[0.86, 0. , 0. \])
\>>> np.around(ax.coords\_to\_point(np.array(\[1, 0\])), 2)
array(\[0.86, 0. , 0. \])
Example: CoordsToPointExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#coordstopointexample)

from manim import \*
class CoordsToPointExample(Scene):
def construct(self):
ax \= Axes().add\_coordinates()
\# a dot with respect to the axes
dot\_axes \= Dot(ax.coords\_to\_point(2, 2), color\=GREEN)
lines \= ax.get\_lines\_to\_point(ax.c2p(2,2))
\# a dot with respect to the scene
\# the default plane corresponds to the coordinates of the scene.
plane \= NumberPlane()
dot\_scene \= Dot((2,2,0), color\=RED)
self.add(plane, dot\_scene, ax, dot\_axes, lines)
class CoordsToPointExample(Scene):
def construct(self):
ax = Axes().add\_coordinates()
# a dot with respect to the axes
dot\_axes = Dot(ax.coords\_to\_point(2, 2), color=GREEN)
lines = ax.get\_lines\_to\_point(ax.c2p(2,2))
# a dot with respect to the scene
# the default plane corresponds to the coordinates of the scene.
plane = NumberPlane()
dot\_scene = Dot((2,2,0), color=RED)
self.add(plane, dot\_scene, ax, dot\_axes, lines)
get\_axes()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes.get_axes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.get_axes "Link to this definition")
Gets the axes.
Returns:
A pair of axes.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
get\_axis\_labels(_x\_label\='x'_, _y\_label\='y'_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes.get_axis_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.get_axis_labels "Link to this definition")
Defines labels for the x-axis and y-axis of the graph.
For increased control over the position of the labels, use [`get_x_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label")
and [`get_y_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label")
.
Parameters:
* **x\_label** (_float_ _|_ _str_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The label for the x\_axis. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **y\_label** (_float_ _|_ _str_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The label for the y\_axis. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the labels for the x\_axis and y\_axis.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
See also
[`get_x_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label")
[`get_y_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label")
Examples
Example: GetAxisLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#getaxislabelsexample)

from manim import \*
class GetAxisLabelsExample(Scene):
def construct(self):
ax \= Axes()
labels \= ax.get\_axis\_labels(
Tex("x-axis").scale(0.7), Text("y-axis").scale(0.45)
)
self.add(ax, labels)
class GetAxisLabelsExample(Scene):
def construct(self):
ax = Axes()
labels = ax.get\_axis\_labels(
Tex("x-axis").scale(0.7), Text("y-axis").scale(0.45)
)
self.add(ax, labels)
plot\_line\_graph(_x\_values_, _y\_values_, _z\_values\=None_, _line\_color\=ManimColor('#FFFF00')_, _add\_vertex\_dots\=True_, _vertex\_dot\_radius\=0.08_, _vertex\_dot\_style\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes.plot_line_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.plot_line_graph "Link to this definition")
Draws a line graph.
The graph connects the vertices formed from zipping `x_values`, `y_values` and `z_values`. Also adds [`Dots`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
at the vertices if `add_vertex_dots` is set to `True`.
Parameters:
* **x\_values** (_Iterable__\[__float__\]_) – Iterable of values along the x-axis.
* **y\_values** (_Iterable__\[__float__\]_) – Iterable of values along the y-axis.
* **z\_values** (_Iterable__\[__float__\]_ _|_ _None_) – Iterable of values (zeros if z\_values is None) along the z-axis.
* **line\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – Color for the line graph.
* **add\_vertex\_dots** (_bool_) – Whether or not to add [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
at each vertex.
* **vertex\_dot\_radius** (_float_) – Radius for the [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
at each vertex.
* **vertex\_dot\_style** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Style arguments to be passed into [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
at each vertex.
* **kwargs** (_Any_) – Additional arguments to be passed into [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Returns:
A VDict containing both the line and dots (if specified). The line can be accessed with: `line_graph["line_graph"]`. The dots can be accessed with: `line_graph["vertex_dots"]`.
Return type:
[`VDict`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VDict.html#manim.mobject.types.vectorized_mobject.VDict "manim.mobject.types.vectorized_mobject.VDict")
Examples
Example: LineGraphExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#linegraphexample)

from manim import \*
class LineGraphExample(Scene):
def construct(self):
plane \= NumberPlane(
x\_range \= (0, 7),
y\_range \= (0, 5),
x\_length \= 7,
axis\_config\={"include\_numbers": True},
)
plane.center()
line\_graph \= plane.plot\_line\_graph(
x\_values \= \[0, 1.5, 2, 2.8, 4, 6.25\],
y\_values \= \[1, 3, 2.25, 4, 2.5, 1.75\],
line\_color\=GOLD\_E,
vertex\_dot\_style\=dict(stroke\_width\=3, fill\_color\=PURPLE),
stroke\_width \= 4,
)
self.add(plane, line\_graph)
class LineGraphExample(Scene):
def construct(self):
plane = NumberPlane(
x\_range = (0, 7),
y\_range = (0, 5),
x\_length = 7,
axis\_config={"include\_numbers": True},
)
plane.center()
line\_graph = plane.plot\_line\_graph(
x\_values = \[0, 1.5, 2, 2.8, 4, 6.25\],
y\_values = \[1, 3, 2.25, 4, 2.5, 1.75\],
line\_color=GOLD\_E,
vertex\_dot\_style=dict(stroke\_width=3, fill\_color=PURPLE),
stroke\_width = 4,
)
self.add(plane, line\_graph)
point\_to\_coords(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#Axes.point_to_coords)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.point_to_coords "Link to this definition")
Accepts a point from the scene and returns its coordinates with respect to the axes.
Parameters:
**point** (_Sequence__\[__float__\]_) – The point, i.e. `RIGHT` or `[0, 1, 0]`. Also accepts a list of points as `[RIGHT, [0, 1, 0]]`.
Returns:
The coordinates on the axes, i.e. `[4.0, 7.0]`. Or a list of coordinates if point is a list of points.
Return type:
np.ndarray\[float\]
Examples
\>>> from manim import Axes, RIGHT
\>>> import numpy as np
\>>> ax \= Axes(x\_range\=\[0, 10, 2\])
\>>> np.around(ax.point\_to\_coords(RIGHT), 2)
array(\[5.83, 0. \])
\>>> np.around(ax.point\_to\_coords(\[\[0, 0, 1\], \[1, 0, 0\]\]), 2)
array(\[\[5. , 0. \],\
\[5.83, 0. \]\])
Example: PointToCoordsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#pointtocoordsexample)

from manim import \*
class PointToCoordsExample(Scene):
def construct(self):
ax \= Axes(x\_range\=\[0, 10, 2\]).add\_coordinates()
circ \= Circle(radius\=0.5).shift(UR \* 2)
\# get the coordinates of the circle with respect to the axes
coords \= np.around(ax.point\_to\_coords(circ.get\_right()), decimals\=2)
label \= (
Matrix(\[\[coords\[0\]\], \[coords\[1\]\]\]).scale(0.75).next\_to(circ, RIGHT)
)
self.add(ax, circ, label, Dot(circ.get\_right()))
class PointToCoordsExample(Scene):
def construct(self):
ax = Axes(x\_range=\[0, 10, 2\]).add\_coordinates()
circ = Circle(radius=0.5).shift(UR \* 2)
# get the coordinates of the circle with respect to the axes
coords = np.around(ax.point\_to\_coords(circ.get\_right()), decimals=2)
label = (
Matrix(\[\[coords\[0\]\], \[coords\[1\]\]\]).scale(0.75).next\_to(circ, RIGHT)
)
self.add(ax, circ, label, Dot(circ.get\_right()))
---
# Angle - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.geometry.line.Angle.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.geometry.line.Angle.rst "Edit this page")
Angle[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#angle "Link to this heading")
===============================================================================================================================
Qualified name: `manim.mobject.geometry.line.Angle`
class Angle(_line1_, _line2_, _radius\=None_, _quadrant\=(1, 1)_, _other\_angle\=False_, _dot\=False_, _dot\_radius\=None_, _dot\_distance\=0.55_, _dot\_color\=ManimColor('#FFFFFF')_, _elbow\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Angle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A circular arc or elbow-type mobject representing an angle of two lines.
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
) – The first line.
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
) – The second line.
* **radius** (_float_ _|_ _None_) – The radius of the `Arc`.
* **quadrant** ([_AngleQuadrant_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#manim.mobject.geometry.line.AngleQuadrant "manim.mobject.geometry.line.AngleQuadrant")
) – A sequence of two `int` numbers determining which of the 4 quadrants should be used. The first value indicates whether to anchor the arc on the first line closer to the end point (1) or start point (-1), and the second value functions similarly for the end (1) or start (-1) of the second line. Possibilities: (1,1), (-1,1), (1,-1), (-1,-1).
* **other\_angle** (_bool_) – Toggles between the two possible angles defined by two points and an arc center. If set to False (default), the arc will always go counterclockwise from the point on line1 until the point on line2 is reached. If set to True, the angle will go clockwise from line1 to line2.
* **dot** (_bool_) – Allows for a `Dot` in the arc. Mainly used as an convention to indicate a right angle. The dot can be customized in the next three parameters.
* **dot\_radius** (_float_ _|_ _None_) – The radius of the `Dot`. If not specified otherwise, this radius will be 1/10 of the arc radius.
* **dot\_distance** (_float_) – Relative distance from the center to the arc: 0 puts the dot in the center and 1 on the arc itself.
* **dot\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the `Dot`.
* **elbow** (_bool_) – Produces an elbow-type mobject indicating a right angle, see [`RightAngle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "manim.mobject.geometry.line.RightAngle")
for more information and a shorthand.
* **\*\*kwargs** (_Any_) – Further keyword arguments that are passed to the constructor of `Arc` or [`Elbow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#manim.mobject.geometry.line.Elbow "manim.mobject.geometry.line.Elbow")
.
Examples
The first example shows some right angles with a dot in the middle while the second example shows all 8 possible angles defined by two lines.
Example: RightArcAngleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#rightarcangleexample)

from manim import \*
class RightArcAngleExample(Scene):
def construct(self):
line1 \= Line( LEFT, RIGHT )
line2 \= Line( DOWN, UP )
rightarcangles \= \[\
Angle(line1, line2, dot\=True),\
Angle(line1, line2, radius\=0.4, quadrant\=(1,\-1), dot\=True, other\_angle\=True),\
Angle(line1, line2, radius\=0.5, quadrant\=(\-1,1), stroke\_width\=8, dot\=True, dot\_color\=YELLOW, dot\_radius\=0.04, other\_angle\=True),\
Angle(line1, line2, radius\=0.7, quadrant\=(\-1,\-1), color\=RED, dot\=True, dot\_color\=GREEN, dot\_radius\=0.08),\
\]
plots \= VGroup()
for angle in rightarcangles:
plot\=VGroup(line1.copy(),line2.copy(), angle)
plots.add(plot)
plots.arrange(buff\=1.5)
self.add(plots)
class RightArcAngleExample(Scene):
def construct(self):
line1 = Line( LEFT, RIGHT )
line2 = Line( DOWN, UP )
rightarcangles = \[\
Angle(line1, line2, dot=True),\
Angle(line1, line2, radius=0.4, quadrant=(1,-1), dot=True, other\_angle=True),\
Angle(line1, line2, radius=0.5, quadrant=(-1,1), stroke\_width=8, dot=True, dot\_color=YELLOW, dot\_radius=0.04, other\_angle=True),\
Angle(line1, line2, radius=0.7, quadrant=(-1,-1), color=RED, dot=True, dot\_color=GREEN, dot\_radius=0.08),\
\]
plots = VGroup()
for angle in rightarcangles:
plot=VGroup(line1.copy(),line2.copy(), angle)
plots.add(plot)
plots.arrange(buff=1.5)
self.add(plots)
Example: AngleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#angleexample)

from manim import \*
class AngleExample(Scene):
def construct(self):
line1 \= Line( LEFT + (1/3) \* UP, RIGHT + (1/3) \* DOWN )
line2 \= Line( DOWN + (1/3) \* RIGHT, UP + (1/3) \* LEFT )
angles \= \[\
Angle(line1, line2),\
Angle(line1, line2, radius\=0.4, quadrant\=(1,\-1), other\_angle\=True),\
Angle(line1, line2, radius\=0.5, quadrant\=(\-1,1), stroke\_width\=8, other\_angle\=True),\
Angle(line1, line2, radius\=0.7, quadrant\=(\-1,\-1), color\=RED),\
Angle(line1, line2, other\_angle\=True),\
Angle(line1, line2, radius\=0.4, quadrant\=(1,\-1)),\
Angle(line1, line2, radius\=0.5, quadrant\=(\-1,1), stroke\_width\=8),\
Angle(line1, line2, radius\=0.7, quadrant\=(\-1,\-1), color\=RED, other\_angle\=True),\
\]
plots \= VGroup()
for angle in angles:
plot\=VGroup(line1.copy(),line2.copy(), angle)
plots.add(VGroup(plot,SurroundingRectangle(plot, buff\=0.3)))
plots.arrange\_in\_grid(rows\=2,buff\=1)
self.add(plots)
class AngleExample(Scene):
def construct(self):
line1 = Line( LEFT + (1/3) \* UP, RIGHT + (1/3) \* DOWN )
line2 = Line( DOWN + (1/3) \* RIGHT, UP + (1/3) \* LEFT )
angles = \[\
Angle(line1, line2),\
Angle(line1, line2, radius=0.4, quadrant=(1,-1), other\_angle=True),\
Angle(line1, line2, radius=0.5, quadrant=(-1,1), stroke\_width=8, other\_angle=True),\
Angle(line1, line2, radius=0.7, quadrant=(-1,-1), color=RED),\
Angle(line1, line2, other\_angle=True),\
Angle(line1, line2, radius=0.4, quadrant=(1,-1)),\
Angle(line1, line2, radius=0.5, quadrant=(-1,1), stroke\_width=8),\
Angle(line1, line2, radius=0.7, quadrant=(-1,-1), color=RED, other\_angle=True),\
\]
plots = VGroup()
for angle in angles:
plot=VGroup(line1.copy(),line2.copy(), angle)
plots.add(VGroup(plot,SurroundingRectangle(plot, buff=0.3)))
plots.arrange\_in\_grid(rows=2,buff=1)
self.add(plots)
Example: FilledAngle [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#filledangle)

from manim import \*
class FilledAngle(Scene):
def construct(self):
l1 \= Line(ORIGIN, 2 \* UP + RIGHT).set\_color(GREEN)
l2 \= (
Line(ORIGIN, 2 \* UP + RIGHT)
.set\_color(GREEN)
.rotate(\-20 \* DEGREES, about\_point\=ORIGIN)
)
norm \= l1.get\_length()
a1 \= Angle(l1, l2, other\_angle\=True, radius\=norm \- 0.5).set\_color(GREEN)
a2 \= Angle(l1, l2, other\_angle\=True, radius\=norm).set\_color(GREEN)
q1 \= a1.points \# save all coordinates of points of angle a1
q2 \= a2.reverse\_direction().points \# save all coordinates of points of angle a1 (in reversed direction)
pnts \= np.concatenate(\[q1, q2, q1\[0\].reshape(1, 3)\]) \# adds points and ensures that path starts and ends at same point
mfill \= VMobject().set\_color(ORANGE)
mfill.set\_points\_as\_corners(pnts).set\_fill(GREEN, opacity\=1)
self.add(l1, l2)
self.add(mfill)
class FilledAngle(Scene):
def construct(self):
l1 = Line(ORIGIN, 2 \* UP + RIGHT).set\_color(GREEN)
l2 = (
Line(ORIGIN, 2 \* UP + RIGHT)
.set\_color(GREEN)
.rotate(-20 \* DEGREES, about\_point=ORIGIN)
)
norm = l1.get\_length()
a1 = Angle(l1, l2, other\_angle=True, radius=norm - 0.5).set\_color(GREEN)
a2 = Angle(l1, l2, other\_angle=True, radius=norm).set\_color(GREEN)
q1 = a1.points # save all coordinates of points of angle a1
q2 = a2.reverse\_direction().points # save all coordinates of points of angle a1 (in reversed direction)
pnts = np.concatenate(\[q1, q2, q1\[0\].reshape(1, 3)\]) # adds points and ensures that path starts and ends at same point
mfill = VMobject().set\_color(ORANGE)
mfill.set\_points\_as\_corners(pnts).set\_fill(GREEN, opacity=1)
self.add(l1, l2)
self.add(mfill)
Methods
| | |
| --- | --- |
| [`from_three_points`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.from_three_points "manim.mobject.geometry.line.Angle.from_three_points") | The angle between the lines AB and BC. |
| [`get_lines`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_lines "manim.mobject.geometry.line.Angle.get_lines") | Get the lines forming an angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class. |
| [`get_value`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_value "manim.mobject.geometry.line.Angle.get_value") | Get the value of an angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_line1_, _line2_, _radius\=None_, _quadrant\=(1, 1)_, _other\_angle\=False_, _dot\=False_, _dot\_radius\=None_, _dot\_distance\=0.55_, _dot\_color\=ManimColor('#FFFFFF')_, _elbow\=False_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **line1** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **line2** ([_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
)
* **radius** (_float_ _|_ _None_)
* **quadrant** ([_AngleQuadrant_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.html#manim.mobject.geometry.line.AngleQuadrant "manim.mobject.geometry.line.AngleQuadrant")
)
* **other\_angle** (_bool_)
* **dot** (_bool_)
* **dot\_radius** (_float_ _|_ _None_)
* **dot\_distance** (_float_)
* **dot\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **elbow** (_bool_)
* **kwargs** (_Any_)
Return type:
None
static from\_three\_points(_A_, _B_, _C_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Angle.from_three_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.from_three_points "Link to this definition")
The angle between the lines AB and BC.
This constructs the angle \\(\\\\angle ABC\\).
Parameters:
* **A** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The endpoint of the first angle leg
* **B** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The vertex of the angle
* **C** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The endpoint of the second angle leg
* **\*\*kwargs** (_Any_) – Further keyword arguments are passed to [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
Returns:
Angle(line1, line2, radius=0.5, quadrant=(-1,1), stroke\_width=8), Angle(line1, line2, radius=0.7, quadrant=(-1,-1), color=RED, other\_angle=True),
Return type:
The Angle calculated from the three points
Examples
Example: AngleFromThreePointsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#anglefromthreepointsexample)

from manim import \*
class AngleFromThreePointsExample(Scene):
def construct(self):
sample\_angle \= Angle.from\_three\_points(UP, ORIGIN, LEFT)
red\_angle \= Angle.from\_three\_points(LEFT + UP, ORIGIN, RIGHT, radius\=.8, quadrant\=(\-1,\-1), color\=RED, stroke\_width\=8, other\_angle\=True)
self.add(red\_angle, sample\_angle)
class AngleFromThreePointsExample(Scene):
def construct(self):
sample\_angle = Angle.from\_three\_points(UP, ORIGIN, LEFT)
red\_angle = Angle.from\_three\_points(LEFT + UP, ORIGIN, RIGHT, radius=.8, quadrant=(-1,-1), color=RED, stroke\_width=8, other\_angle=True)
self.add(red\_angle, sample\_angle)
get\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Angle.get_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_lines "Link to this definition")
Get the lines forming an angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing the lines that form the angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
\>>> line\_1, line\_2 \= Line(ORIGIN, RIGHT), Line(ORIGIN, UR)
\>>> angle \= Angle(line\_1, line\_2)
\>>> angle.get\_lines()
VGroup(Line, Line)
get\_value(_degrees\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/geometry/line.html#Angle.get_value)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_value "Link to this definition")
Get the value of an angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class.
Parameters:
**degrees** (_bool_) – A boolean to decide the unit (deg/rad) in which the value of the angle is returned.
Returns:
The value in degrees/radians of an angle of the [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
class.
Return type:
`float`
Examples
Example: GetValueExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#getvalueexample)

from manim import \*
class GetValueExample(Scene):
def construct(self):
line1 \= Line(LEFT+(1/3)\*UP, RIGHT+(1/3)\*DOWN)
line2 \= Line(DOWN+(1/3)\*RIGHT, UP+(1/3)\*LEFT)
angle \= Angle(line1, line2, radius\=0.4)
value \= DecimalNumber(angle.get\_value(degrees\=True), unit\=r"^{\\circ}")
value.next\_to(angle, UR)
self.add(line1, line2, angle, value)
class GetValueExample(Scene):
def construct(self):
line1 = Line(LEFT+(1/3)\*UP, RIGHT+(1/3)\*DOWN)
line2 = Line(DOWN+(1/3)\*RIGHT, UP+(1/3)\*LEFT)
angle = Angle(line1, line2, radius=0.4)
value = DecimalNumber(angle.get\_value(degrees=True), unit=r"^{\\circ}")
value.next\_to(angle, UR)
self.add(line1, line2, angle, value)
---
# Matrix - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.matrix.Matrix.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.matrix.Matrix.rst "Edit this page")
Matrix[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#matrix "Link to this heading")
===========================================================================================================================
Qualified name: `manim.mobject.matrix.Matrix`
class Matrix(_matrix_, _v\_buff\=0.8_, _h\_buff\=1.3_, _bracket\_h\_buff\=0.25_, _bracket\_v\_buff\=0.25_, _add\_background\_rectangles\_to\_entries\=False_, _include\_background\_rectangle\=False_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={}_, _element\_alignment\_corner\=array(\[ 1._, _\-1._, _0.\])_, _left\_bracket\='\['_, _right\_bracket\='\]'_, _stretch\_brackets\=True_, _bracket\_config\={}_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A mobject that displays a matrix on the screen.
Parameters:
* **matrix** (_Iterable_) – A numpy 2d array or list of lists.
* **v\_buff** (_float_) – Vertical distance between elements, by default 0.8.
* **h\_buff** (_float_) – Horizontal distance between elements, by default 1.3.
* **bracket\_h\_buff** (_float_) – Distance of the brackets from the matrix, by default `MED_SMALL_BUFF`.
* **bracket\_v\_buff** (_float_) – Height of the brackets, by default `MED_SMALL_BUFF`.
* **add\_background\_rectangles\_to\_entries** (_bool_) – `True` if should add backgraound rectangles to entries, by default `False`.
* **include\_background\_rectangle** (_bool_) – `True` if should include background rectangle, by default `False`.
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_ _|_ _Callable__\[__...__,_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used to construct the elements, by default [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **element\_to\_mobject\_config** (_dict_) – Additional arguments to be passed to the constructor in `element_to_mobject`, by default `{}`.
* **element\_alignment\_corner** (_Sequence__\[__float__\]_) – The corner to which elements are aligned, by default `DR`.
* **left\_bracket** (_str_) – The left bracket type, by default `"["`.\
\
* **right\_bracket** (_str_) – The right bracket type, by default `"]"`.
* **stretch\_brackets** (_bool_) – `True` if should stretch the brackets to fit the height of matrix contents, by default `True`.
* **bracket\_config** (_dict_) – Additional arguments to be passed to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
when constructing the brackets.
* **kwargs** (_Any_)
Examples
The first example shows a variety of uses of this module while the second example exlpains the use of the options add\_background\_rectangles\_to\_entries and include\_background\_rectangle.
Example: MatrixExamples [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#matrixexamples)

from manim import \*
class MatrixExamples(Scene):
def construct(self):
m0 \= Matrix(\[\[2, r"\\pi"\], \[\-1, 1\]\])
m1 \= Matrix(\[\[2, 0, 4\], \[\-1, 1, 5\]\],
v\_buff\=1.3,
h\_buff\=0.8,
bracket\_h\_buff\=SMALL\_BUFF,
bracket\_v\_buff\=SMALL\_BUFF,
left\_bracket\=r"\\{",
right\_bracket\=r"\\}")
m1.add(SurroundingRectangle(m1.get\_columns()\[1\]))
m2 \= Matrix(\[\[2, 1\], \[\-1, 3\]\],
element\_alignment\_corner\=UL,
left\_bracket\="(",
right\_bracket\=")")
m3 \= Matrix(\[\[2, 1\], \[\-1, 3\]\],
left\_bracket\=r"\\langle",
right\_bracket\=r"\\rangle")
m4 \= Matrix(\[\[2, 1\], \[\-1, 3\]\],
).set\_column\_colors(RED, GREEN)
m5 \= Matrix(\[\[2, 1\], \[\-1, 3\]\],
).set\_row\_colors(RED, GREEN)
g \= Group(
m0,m1,m2,m3,m4,m5
).arrange\_in\_grid(buff\=2)
self.add(g)
class MatrixExamples(Scene):
def construct(self):
m0 = Matrix(\[\[2, r"\\pi"\], \[-1, 1\]\])
m1 = Matrix(\[\[2, 0, 4\], \[-1, 1, 5\]\],
v\_buff=1.3,
h\_buff=0.8,
bracket\_h\_buff=SMALL\_BUFF,
bracket\_v\_buff=SMALL\_BUFF,
left\_bracket=r"\\{",
right\_bracket=r"\\}")
m1.add(SurroundingRectangle(m1.get\_columns()\[1\]))
m2 = Matrix(\[\[2, 1\], \[-1, 3\]\],
element\_alignment\_corner=UL,
left\_bracket="(",
right\_bracket=")")
m3 = Matrix(\[\[2, 1\], \[-1, 3\]\],
left\_bracket=r"\\langle",
right\_bracket=r"\\rangle")
m4 = Matrix(\[\[2, 1\], \[-1, 3\]\],
).set\_column\_colors(RED, GREEN)
m5 = Matrix(\[\[2, 1\], \[-1, 3\]\],
).set\_row\_colors(RED, GREEN)
g = Group(
m0,m1,m2,m3,m4,m5
).arrange\_in\_grid(buff=2)
self.add(g)
Example: BackgroundRectanglesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#backgroundrectanglesexample)

from manim import \*
class BackgroundRectanglesExample(Scene):
def construct(self):
background\= Rectangle().scale(3.2)
background.set\_fill(opacity\=.5)
background.set\_color(\[TEAL, RED, YELLOW\])
self.add(background)
m0 \= Matrix(\[\[12, \-30\], \[\-1, 15\]\],
add\_background\_rectangles\_to\_entries\=True)
m1 \= Matrix(\[\[2, 0\], \[\-1, 1\]\],
include\_background\_rectangle\=True)
m2 \= Matrix(\[\[12, \-30\], \[\-1, 15\]\])
g \= Group(m0, m1, m2).arrange(buff\=2)
self.add(g)
class BackgroundRectanglesExample(Scene):
def construct(self):
background= Rectangle().scale(3.2)
background.set\_fill(opacity=.5)
background.set\_color(\[TEAL, RED, YELLOW\])
self.add(background)
m0 = Matrix(\[\[12, -30\], \[-1, 15\]\],
add\_background\_rectangles\_to\_entries=True)
m1 = Matrix(\[\[2, 0\], \[-1, 1\]\],
include\_background\_rectangle=True)
m2 = Matrix(\[\[12, -30\], \[-1, 15\]\])
g = Group(m0, m1, m2).arrange(buff=2)
self.add(g)
Methods
| | |
| --- | --- |
| [`add_background_to_entries`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.add_background_to_entries "manim.mobject.matrix.Matrix.add_background_to_entries") | Add a black background rectangle to the matrix, see above for an example. |
| [`get_brackets`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_brackets "manim.mobject.matrix.Matrix.get_brackets") | Return the bracket mobjects. |
| [`get_columns`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_columns "manim.mobject.matrix.Matrix.get_columns") | Return columns of the matrix as VGroups. |
| [`get_entries`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_entries "manim.mobject.matrix.Matrix.get_entries") | Return the individual entries of the matrix. |
| [`get_mob_matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_mob_matrix "manim.mobject.matrix.Matrix.get_mob_matrix") | Return the underlying mob matrix mobjects. |
| [`get_rows`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_rows "manim.mobject.matrix.Matrix.get_rows") | Return rows of the matrix as VGroups. |
| [`set_column_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.set_column_colors "manim.mobject.matrix.Matrix.set_column_colors") | Set individual colors for each columns of the matrix. |
| [`set_row_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.set_row_colors "manim.mobject.matrix.Matrix.set_row_colors") | Set individual colors for each row of the matrix. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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\_brackets(_left\='\['_, _right\='\]'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix._add_brackets)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix._add_brackets "Link to this definition")
Adds the brackets to the Matrix mobject.
See Latex document for various bracket types.
Parameters:
* **left** (_str_) – the left bracket, by default “\[”\
\
* **right** (_str_) – the right bracket, by default “\]”
* **kwargs** (_Any_)
Returns:
The current matrix object (self).
Return type:
[`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
\_original\_\_init\_\_(_matrix_, _v\_buff\=0.8_, _h\_buff\=1.3_, _bracket\_h\_buff\=0.25_, _bracket\_v\_buff\=0.25_, _add\_background\_rectangles\_to\_entries\=False_, _include\_background\_rectangle\=False_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={}_, _element\_alignment\_corner\=array(\[ 1._, _\-1._, _0.\])_, _left\_bracket\='\['_, _right\_bracket\='\]'_, _stretch\_brackets\=True_, _bracket\_config\={}_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **matrix** (_Iterable_)
* **v\_buff** (_float_)
* **h\_buff** (_float_)
* **bracket\_h\_buff** (_float_)
* **bracket\_v\_buff** (_float_)
* **add\_background\_rectangles\_to\_entries** (_bool_)
* **include\_background\_rectangle** (_bool_)
* **element\_to\_mobject** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_ _|_ _Callable__\[__\[__...__\]__,_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **element\_to\_mobject\_config** (_dict_)
* **element\_alignment\_corner** (_Sequence__\[__float__\]_)
* **left\_bracket** (_str_)
* **right\_bracket** (_str_)
* **stretch\_brackets** (_bool_)
* **bracket\_config** (_dict_)
* **kwargs** (_Any_)
add\_background\_to\_entries()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.add_background_to_entries)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.add_background_to_entries "Link to this definition")
Add a black background rectangle to the matrix, see above for an example.
Returns:
The current matrix object (self).
Return type:
[`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
get\_brackets()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.get_brackets)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_brackets "Link to this definition")
Return the bracket mobjects.
Returns:
A VGroup containing the left and right bracket.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetBracketsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#getbracketsexample)

from manim import \*
class GetBracketsExample(Scene):
def construct(self):
m0 \= Matrix(\[\["\\\\pi", 3\], \[1, 5\]\])
bra \= m0.get\_brackets()
colors \= \[BLUE, GREEN\]
for k in range(len(colors)):
bra\[k\].set\_color(colors\[k\])
self.add(m0)
class GetBracketsExample(Scene):
def construct(self):
m0 = Matrix(\[\["\\\\pi", 3\], \[1, 5\]\])
bra = m0.get\_brackets()
colors = \[BLUE, GREEN\]
for k in range(len(colors)):
bra\[k\].set\_color(colors\[k\])
self.add(m0)
get\_columns()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.get_columns)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_columns "Link to this definition")
Return columns of the matrix as VGroups.
Returns:
The VGroup contains a nested VGroup for each column of the matrix.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetColumnsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#getcolumnsexample)

from manim import \*
class GetColumnsExample(Scene):
def construct(self):
m0 \= Matrix(\[\[r"\\pi", 3\], \[1, 5\]\])
m0.add(SurroundingRectangle(m0.get\_columns()\[1\]))
self.add(m0)
class GetColumnsExample(Scene):
def construct(self):
m0 = Matrix(\[\[r"\\pi", 3\], \[1, 5\]\])
m0.add(SurroundingRectangle(m0.get\_columns()\[1\]))
self.add(m0)
get\_entries()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.get_entries)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_entries "Link to this definition")
Return the individual entries of the matrix.
Returns:
VGroup containing entries of the matrix.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetEntriesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#getentriesexample)

from manim import \*
class GetEntriesExample(Scene):
def construct(self):
m0 \= Matrix(\[\[2, 3\], \[1, 5\]\])
ent \= m0.get\_entries()
colors \= \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
ent\[k\].set\_color(colors\[k\])
self.add(m0)
class GetEntriesExample(Scene):
def construct(self):
m0 = Matrix(\[\[2, 3\], \[1, 5\]\])
ent = m0.get\_entries()
colors = \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
ent\[k\].set\_color(colors\[k\])
self.add(m0)
get\_mob\_matrix()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.get_mob_matrix)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_mob_matrix "Link to this definition")
Return the underlying mob matrix mobjects.
Returns:
Each VGroup contains a row of the matrix.
Return type:
List\[[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
get\_rows()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.get_rows)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.get_rows "Link to this definition")
Return rows of the matrix as VGroups.
Returns:
The VGroup contains a nested VGroup for each row of the matrix.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetRowsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#getrowsexample)

from manim import \*
class GetRowsExample(Scene):
def construct(self):
m0 \= Matrix(\[\["\\\\pi", 3\], \[1, 5\]\])
m0.add(SurroundingRectangle(m0.get\_rows()\[1\]))
self.add(m0)
class GetRowsExample(Scene):
def construct(self):
m0 = Matrix(\[\["\\\\pi", 3\], \[1, 5\]\])
m0.add(SurroundingRectangle(m0.get\_rows()\[1\]))
self.add(m0)
set\_column\_colors(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.set_column_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.set_column_colors "Link to this definition")
Set individual colors for each columns of the matrix.
Parameters:
**colors** (_str_) – The list of colors; each color specified corresponds to a column.
Returns:
The current matrix object (self).
Return type:
[`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
Examples
Example: SetColumnColorsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#setcolumncolorsexample)

from manim import \*
class SetColumnColorsExample(Scene):
def construct(self):
m0 \= Matrix(\[\["\\\\pi", 1\], \[\-1, 3\]\],
).set\_column\_colors(\[RED,BLUE\], GREEN)
self.add(m0)
class SetColumnColorsExample(Scene):
def construct(self):
m0 = Matrix(\[\["\\\\pi", 1\], \[-1, 3\]\],
).set\_column\_colors(\[RED,BLUE\], GREEN)
self.add(m0)
set\_row\_colors(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/matrix.html#Matrix.set_row_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix.set_row_colors "Link to this definition")
Set individual colors for each row of the matrix.
Parameters:
**colors** (_str_) – The list of colors; each color specified corresponds to a row.
Returns:
The current matrix object (self).
Return type:
[`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
Examples
Example: SetRowColorsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#setrowcolorsexample)

from manim import \*
class SetRowColorsExample(Scene):
def construct(self):
m0 \= Matrix(\[\["\\\\pi", 1\], \[\-1, 3\]\],
).set\_row\_colors(\[RED,BLUE\], GREEN)
self.add(m0)
class SetRowColorsExample(Scene):
def construct(self):
m0 = Matrix(\[\["\\\\pi", 1\], \[-1, 3\]\],
).set\_row\_colors(\[RED,BLUE\], GREEN)
self.add(m0)
---
# NumberLine - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.number_line.NumberLine.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.number_line.NumberLine.rst "Edit this page")
NumberLine[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#numberline "Link to this heading")
=====================================================================================================================================================
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\=_, _scaling\=_, _line\_to\_number\_buff\=0.25_, _decimal\_number\_config\=None_, _numbers\_to\_exclude\=None_, _numbers\_to\_include\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "Link to this definition")
Bases: [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.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_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")\
_\]_ _|_ _None_) – The mobject class used to construct the tip, or `None` (the default) for the default arrow tip. Passed classes have to inherit from [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
.
* **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`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase "manim.mobject.graphing.scale.LogBase")
for a logarithmic numberline. Defaults to [`LinearBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase "manim.mobject.graphing.scale.LinearBase")
.
* **font\_size** (_float_) – The size of the label mobjects. Defaults to 36.
* **label\_direction** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The specific position to which label mobjects are added on the line.
* **label\_constructor** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_) – 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`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.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** (_Any_) – Additional arguments to be passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.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 [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#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)
Methods
| | |
| --- | --- |
| [`add_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_labels "manim.mobject.graphing.number_line.NumberLine.add_labels") | Adds specifically positioned labels to the [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
using a `dict`. |
| [`add_numbers`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_numbers "manim.mobject.graphing.number_line.NumberLine.add_numbers") | Adds [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobjects representing their position at each tick of the number line. |
| [`add_ticks`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_ticks "manim.mobject.graphing.number_line.NumberLine.add_ticks") | Adds ticks to the number line. |
| `get_labels` | |
| [`get_number_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_number_mobject "manim.mobject.graphing.number_line.NumberLine.get_number_mobject") | Generates a positioned [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobject generated according to `label_constructor`. |
| `get_number_mobjects` | |
| [`get_tick`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_tick "manim.mobject.graphing.number_line.NumberLine.get_tick") | Generates a tick and positions it along the number line. |
| `get_tick_marks` | |
| [`get_tick_range`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_tick_range "manim.mobject.graphing.number_line.NumberLine.get_tick_range") | 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` | |
| [`n2p`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.n2p "manim.mobject.graphing.number_line.NumberLine.n2p") | Abbreviation for [`number_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.number_to_point "manim.mobject.graphing.number_line.NumberLine.number_to_point")
. |
| [`number_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.number_to_point "manim.mobject.graphing.number_line.NumberLine.number_to_point") | Accepts a value along the number line and returns a point with respect to the scene. |
| [`p2n`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.p2n "manim.mobject.graphing.number_line.NumberLine.p2n") | Abbreviation for [`point_to_number()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.point_to_number "manim.mobject.graphing.number_line.NumberLine.point_to_number")
. |
| [`point_to_number`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.point_to_number "manim.mobject.graphing.number_line.NumberLine.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
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_create\_label\_tex(_label\_tex_, _label\_constructor\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine._create_label_tex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine._create_label_tex "Link to this definition")
Checks if the label is a [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
, otherwise, creates a label by passing `label_tex` to `label_constructor`.
Parameters:
* **label\_tex** (_str_ _|_ _float_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label for which a mobject should be created. If the label already is a mobject, no new mobject is created.
* **label\_constructor** (_Callable_ _|_ _None_) – Optional. A class or function returning a mobject when passing `label_tex` as an argument. If `None` is passed (the default), the label constructor from the `label_constructor` attribute is used.
* **kwargs** (_Any_)
Returns:
The label.
Return type:
[`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.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\=_, _scaling\=_, _line\_to\_number\_buff\=0.25_, _decimal\_number\_config\=None_, _numbers\_to\_exclude\=None_, _numbers\_to\_include\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **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** (_float_)
* **include\_tip** (_bool_)
* **tip\_width** (_float_)
* **tip\_height** (_float_)
* **tip\_shape** (_type__\[_[_ArrowTip_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")\
_\]_ _|_ _None_)
* **include\_numbers** (_bool_)
* **font\_size** (_float_)
* **label\_direction** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **label\_constructor** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_)
* **scaling** (_\_ScaleBase_)
* **line\_to\_number\_buff** (_float_)
* **decimal\_number\_config** (_dict_ _|_ _None_)
* **numbers\_to\_exclude** (_Iterable__\[__float__\]_ _|_ _None_)
* **numbers\_to\_include** (_Iterable__\[__float__\]_ _|_ _None_)
* **kwargs** (_Any_)
add\_labels(_dict\_values_, _direction\=None_, _buff\=None_, _font\_size\=None_, _label\_constructor\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.add_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_labels "Link to this definition")
Adds specifically positioned labels to the [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
using a `dict`. The labels can be accessed after creation via `self.labels`.
Parameters:
* **dict\_values** (_dict__\[__float__,_ _str_ _|_ _float_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.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` or `float`).
* **direction** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ _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 mobject to be positioned.
* **label\_constructor** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_ _|_ _None_) – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
class that will be used to construct the label. Defaults to the `label_constructor` attribute of the number line if not specified.
Raises:
**AttributeError** – If the label does not have a `font_size` attribute, an `AttributeError` is raised.
Return type:
Self
add\_numbers(_x\_values\=None_, _excluding\=None_, _font\_size\=None_, _label\_constructor\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.add_numbers)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_numbers "Link to this definition")
Adds [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobjects representing their position at each tick of the number line. The numbers can be accessed after creation via `self.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()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_tick_range "manim.mobject.graphing.number_line.NumberLine.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** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_ _|_ _None_) – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
class that will be used to construct the label. Defaults to the `label_constructor` attribute of the number line if not specified.
* **kwargs** (_Any_)
Return type:
Self
add\_ticks()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.add_ticks)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_ticks "Link to this definition")
Adds ticks to the number line. Ticks can be accessed after creation via `self.ticks`.
Return type:
None
get\_number\_mobject(_x_, _direction\=None_, _buff\=None_, _font\_size\=None_, _label\_constructor\=None_, _\*\*number\_config_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.get_number_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_number_mobject "Link to this definition")
Generates a positioned [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
mobject generated according to `label_constructor`.
Parameters:
* **x** (_float_) – The x-value at which the mobject should be positioned.
* **direction** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
_|_ _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** (_type__\[_[_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
_\]_ _|_ _None_) – The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
class that will be used to construct the label. Defaults to the `label_constructor` attribute of the number line if not specified.
* **number\_config** (_dict__\[__str__,_ _Any__\]_)
Returns:
The positioned mobject.
Return type:
[`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
get\_tick(_x_, _size\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.get_tick)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_tick "Link to this definition")
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:
[`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
get\_tick\_range()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.get_tick_range)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.get_tick_range "Link to this definition")
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\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.n2p)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.n2p "Link to this definition")
Abbreviation for [`number_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.number_to_point "manim.mobject.graphing.number_line.NumberLine.number_to_point")
.
Parameters:
**number** (_float_ _|_ _ndarray_)
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
number\_to\_point(_number_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.number_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.number_to_point "Link to this definition")
Accepts a value along the number line and returns a point with respect to the scene. Equivalent to NumberLine @ number
Parameters:
**number** (_float_ _|_ _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 @ 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\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.p2n)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.p2n "Link to this definition")
Abbreviation for [`point_to_number()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.point_to_number "manim.mobject.graphing.number_line.NumberLine.point_to_number")
.
Parameters:
**point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
Return type:
float
point\_to\_number(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/number_line.html#NumberLine.point_to_number)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.point_to_number "Link to this definition")
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))
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\])
---
# Graph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graph.Graph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graph.Graph.rst "Edit this page")
Graph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#graph "Link to this heading")
=======================================================================================================================
Qualified name: `manim.mobject.graph.Graph`
class Graph(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#Graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "Link to this definition")
Bases: [`GenericGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "manim.mobject.graph.GenericGraph")
An undirected graph (vertices connected with edges).
The graph comes with an updater which makes the edges stick to the vertices when moved around. See [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
for a version with directed edges.
See also
[`GenericGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.GenericGraph.html#manim.mobject.graph.GenericGraph "manim.mobject.graph.GenericGraph")
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_) – A list of vertices. Must be hashable elements.
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_) – A list of edges, specified as tuples `(u, v)` where both `u` and `v` are vertices. The vertex order is irrelevant.
* **labels** (_bool_ _|_ _dict_) – Controls whether or not vertices are labeled. If `False` (the default), the vertices are not labeled; if `True` they are labeled using their names (as specified in `vertices`) via [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Alternatively, custom labels can be specified by passing a dictionary whose keys are the vertices, and whose values are the corresponding vertex labels (rendered via, e.g., [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
or [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
).
* **label\_fill\_color** (_str_) – Sets the fill color of the default labels generated when `labels` is set to `True`. Has no effect for other values of `labels`.
* **layout** (_LayoutName_ _|_ _dict__\[__Hashable__,_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]_ _|_ [_LayoutFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graph.LayoutFunction.html#manim.mobject.graph.LayoutFunction "manim.mobject.graph.LayoutFunction")
) – Either one of `"spring"` (the default), `"circular"`, `"kamada_kawai"`, `"planar"`, `"random"`, `"shell"`, `"spectral"`, `"spiral"`, `"tree"`, and `"partite"` for automatic vertex positioning using `networkx` (see [their documentation](https://networkx.org/documentation/stable/reference/drawing.html#module-networkx.drawing.layout)
for more details), or a dictionary specifying a coordinate (value) for each vertex (key) for manual positioning.
* **layout\_config** (_dict_ _|_ _None_) – Only for automatically generated layouts. A dictionary whose entries are passed as keyword arguments to the automatic layout algorithm specified via `layout` of `networkx`. The `tree` layout also accepts a special parameter `vertex_spacing` passed as a keyword argument inside the `layout_config` dictionary. Passing a tuple `(space_x, space_y)` as this argument overrides the value of `layout_scale` and ensures that vertices are arranged in a way such that the centers of siblings in the same layer are at least `space_x` units apart horizontally, and neighboring layers are spaced `space_y` units vertically.
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_) – The scale of automatically generated layouts: the vertices will be arranged such that the coordinates are located within the interval `[-scale, scale]`. Some layouts accept a tuple `(scale_x, scale_y)` causing the first coordinate to be in the interval `[-scale_x, scale_x]`, and the second in `[-scale_y, scale_y]`. Default: 2.
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying vertices in the scene.
* **vertex\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `vertex_type`, or a dictionary whose keys are the vertices, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding vertex.
* **vertex\_mobjects** (_dict_ _|_ _None_) – A dictionary whose keys are the vertices, and whose values are mobjects to be used as vertices. Passing vertices here overrides all other configuration options for a vertex.
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The mobject class used for displaying edges in the scene.
* **edge\_config** (_dict_ _|_ _None_) – Either a dictionary containing keyword arguments to be passed to the class specified via `edge_type`, or a dictionary whose keys are the edges, and whose values are dictionaries containing keyword arguments for the mobject related to the corresponding edge.
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
Examples
First, we create a small graph and demonstrate that the edges move together with the vertices.
Example: MovingVertices [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#movingvertices)
from manim import \*
class MovingVertices(Scene):
def construct(self):
vertices \= \[1, 2, 3, 4\]
edges \= \[(1, 2), (2, 3), (3, 4), (1, 3), (1, 4)\]
g \= Graph(vertices, edges)
self.play(Create(g))
self.wait()
self.play(g\[1\].animate.move\_to(\[1, 1, 0\]),
g\[2\].animate.move\_to(\[\-1, 1, 0\]),
g\[3\].animate.move\_to(\[1, \-1, 0\]),
g\[4\].animate.move\_to(\[\-1, \-1, 0\]))
self.wait()
class MovingVertices(Scene):
def construct(self):
vertices = \[1, 2, 3, 4\]
edges = \[(1, 2), (2, 3), (3, 4), (1, 3), (1, 4)\]
g = Graph(vertices, edges)
self.play(Create(g))
self.wait()
self.play(g\[1\].animate.move\_to(\[1, 1, 0\]),
g\[2\].animate.move\_to(\[-1, 1, 0\]),
g\[3\].animate.move\_to(\[1, -1, 0\]),
g\[4\].animate.move\_to(\[-1, -1, 0\]))
self.wait()
There are several automatic positioning algorithms to choose from:
Example: GraphAutoPosition [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#graphautoposition)

from manim import \*
class GraphAutoPosition(Scene):
def construct(self):
vertices \= \[1, 2, 3, 4, 5, 6, 7, 8\]
edges \= \[(1, 7), (1, 8), (2, 3), (2, 4), (2, 5),\
(2, 8), (3, 4), (6, 1), (6, 2),\
(6, 3), (7, 2), (7, 4)\]
autolayouts \= \["spring", "circular", "kamada\_kawai",\
"planar", "random", "shell",\
"spectral", "spiral"\]
graphs \= \[Graph(vertices, edges, layout\=lt).scale(0.5)\
for lt in autolayouts\]
r1 \= VGroup(\*graphs\[:3\]).arrange()
r2 \= VGroup(\*graphs\[3:6\]).arrange()
r3 \= VGroup(\*graphs\[6:\]).arrange()
self.add(VGroup(r1, r2, r3).arrange(direction\=DOWN))
class GraphAutoPosition(Scene):
def construct(self):
vertices = \[1, 2, 3, 4, 5, 6, 7, 8\]
edges = \[(1, 7), (1, 8), (2, 3), (2, 4), (2, 5),\
(2, 8), (3, 4), (6, 1), (6, 2),\
(6, 3), (7, 2), (7, 4)\]
autolayouts = \["spring", "circular", "kamada\_kawai",\
"planar", "random", "shell",\
"spectral", "spiral"\]
graphs = \[Graph(vertices, edges, layout=lt).scale(0.5)\
for lt in autolayouts\]
r1 = VGroup(\*graphs\[:3\]).arrange()
r2 = VGroup(\*graphs\[3:6\]).arrange()
r3 = VGroup(\*graphs\[6:\]).arrange()
self.add(VGroup(r1, r2, r3).arrange(direction=DOWN))
Vertices can also be positioned manually:
Example: GraphManualPosition [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#graphmanualposition)

from manim import \*
class GraphManualPosition(Scene):
def construct(self):
vertices \= \[1, 2, 3, 4\]
edges \= \[(1, 2), (2, 3), (3, 4), (4, 1)\]
lt \= {1: \[0, 0, 0\], 2: \[1, 1, 0\], 3: \[1, \-1, 0\], 4: \[\-1, 0, 0\]}
G \= Graph(vertices, edges, layout\=lt)
self.add(G)
class GraphManualPosition(Scene):
def construct(self):
vertices = \[1, 2, 3, 4\]
edges = \[(1, 2), (2, 3), (3, 4), (4, 1)\]
lt = {1: \[0, 0, 0\], 2: \[1, 1, 0\], 3: \[1, -1, 0\], 4: \[-1, 0, 0\]}
G = Graph(vertices, edges, layout=lt)
self.add(G)
The vertices in graphs can be labeled, and configurations for vertices and edges can be modified both by default and for specific vertices and edges.
Note
In `edge_config`, edges can be passed in both directions: if `(u, v)` is an edge in the graph, both `(u, v)` as well as `(v, u)` can be used as keys in the dictionary.
Example: LabeledModifiedGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#labeledmodifiedgraph)

from manim import \*
class LabeledModifiedGraph(Scene):
def construct(self):
vertices \= \[1, 2, 3, 4, 5, 6, 7, 8\]
edges \= \[(1, 7), (1, 8), (2, 3), (2, 4), (2, 5),\
(2, 8), (3, 4), (6, 1), (6, 2),\
(6, 3), (7, 2), (7, 4)\]
g \= Graph(vertices, edges, layout\="circular", layout\_scale\=3,
labels\=True, vertex\_config\={7: {"fill\_color": RED}},
edge\_config\={(1, 7): {"stroke\_color": RED},
(2, 7): {"stroke\_color": RED},
(4, 7): {"stroke\_color": RED}})
self.add(g)
class LabeledModifiedGraph(Scene):
def construct(self):
vertices = \[1, 2, 3, 4, 5, 6, 7, 8\]
edges = \[(1, 7), (1, 8), (2, 3), (2, 4), (2, 5),\
(2, 8), (3, 4), (6, 1), (6, 2),\
(6, 3), (7, 2), (7, 4)\]
g = Graph(vertices, edges, layout="circular", layout\_scale=3,
labels=True, vertex\_config={7: {"fill\_color": RED}},
edge\_config={(1, 7): {"stroke\_color": RED},
(2, 7): {"stroke\_color": RED},
(4, 7): {"stroke\_color": RED}})
self.add(g)
You can also lay out a partite graph on columns by specifying a list of the vertices on each side and choosing the partite layout.
Note
All vertices in your graph which are not listed in any of the partitions are collected in their own partition and rendered in the rightmost column.
Example: PartiteGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#partitegraph)

from manim import \*
import networkx as nx
class PartiteGraph(Scene):
def construct(self):
G \= nx.Graph()
G.add\_nodes\_from(\[0, 1, 2, 3\])
G.add\_edges\_from(\[(0, 2), (0,3), (1, 2)\])
graph \= Graph(list(G.nodes), list(G.edges), layout\="partite", partitions\=\[\[0, 1\]\])
self.play(Create(graph))
import networkx as nx
class PartiteGraph(Scene):
def construct(self):
G = nx.Graph()
G.add\_nodes\_from(\[0, 1, 2, 3\])
G.add\_edges\_from(\[(0, 2), (0,3), (1, 2)\])
graph = Graph(list(G.nodes), list(G.edges), layout="partite", partitions=\[\[0, 1\]\])
self.play(Create(graph))
The representation of a linear artificial neural network is facilitated by the use of the partite layout and defining partitions for each layer.
Example: LinearNN [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#linearnn)

from manim import \*
class LinearNN(Scene):
def construct(self):
edges \= \[\]
partitions \= \[\]
c \= 0
layers \= \[2, 3, 3, 2\] \# the number of neurons in each layer
for i in layers:
partitions.append(list(range(c + 1, c + i + 1)))
c += i
for i, v in enumerate(layers\[1:\]):
last \= sum(layers\[:i+1\])
for j in range(v):
for k in range(last \- layers\[i\], last):
edges.append((k + 1, j + last + 1))
vertices \= np.arange(1, sum(layers) + 1)
graph \= Graph(
vertices,
edges,
layout\='partite',
partitions\=partitions,
layout\_scale\=3,
vertex\_config\={'radius': 0.20},
)
self.add(graph)
class LinearNN(Scene):
def construct(self):
edges = \[\]
partitions = \[\]
c = 0
layers = \[2, 3, 3, 2\] # the number of neurons in each layer
for i in layers:
partitions.append(list(range(c + 1, c + i + 1)))
c += i
for i, v in enumerate(layers\[1:\]):
last = sum(layers\[:i+1\])
for j in range(v):
for k in range(last - layers\[i\], last):
edges.append((k + 1, j + last + 1))
vertices = np.arange(1, sum(layers) + 1)
graph = Graph(
vertices,
edges,
layout='partite',
partitions=partitions,
layout\_scale=3,
vertex\_config={'radius': 0.20},
)
self.add(graph)
The custom tree layout can be used to show the graph by distance from the root vertex. You must pass the root vertex of the tree.
Example: Tree [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#tree)
from manim import \*
import networkx as nx
class Tree(Scene):
def construct(self):
G \= nx.Graph()
G.add\_node("ROOT")
for i in range(5):
G.add\_node("Child\_%i" % i)
G.add\_node("Grandchild\_%i" % i)
G.add\_node("Greatgrandchild\_%i" % i)
G.add\_edge("ROOT", "Child\_%i" % i)
G.add\_edge("Child\_%i" % i, "Grandchild\_%i" % i)
G.add\_edge("Grandchild\_%i" % i, "Greatgrandchild\_%i" % i)
self.play(Create(
Graph(list(G.nodes), list(G.edges), layout\="tree", root\_vertex\="ROOT")))
import networkx as nx
class Tree(Scene):
def construct(self):
G = nx.Graph()
G.add\_node("ROOT")
for i in range(5):
G.add\_node("Child\_%i" % i)
G.add\_node("Grandchild\_%i" % i)
G.add\_node("Greatgrandchild\_%i" % i)
G.add\_edge("ROOT", "Child\_%i" % i)
G.add\_edge("Child\_%i" % i, "Grandchild\_%i" % i)
G.add\_edge("Grandchild\_%i" % i, "Greatgrandchild\_%i" % i)
self.play(Create(
Graph(list(G.nodes), list(G.edges), layout="tree", root\_vertex="ROOT")))
The following code sample illustrates the use of the `vertex_spacing` layout parameter specific to the `"tree"` layout. As mentioned above, setting `vertex_spacing` overrides the specified value for `layout_scale`, and as such it is harder to control the size of the mobject. However, we can adjust the captured frame and zoom out by using a [`MovingCameraScene`](https://docs.manim.community/en/stable/reference/manim.scene.moving_camera_scene.MovingCameraScene.html#manim.scene.moving_camera_scene.MovingCameraScene "manim.scene.moving_camera_scene.MovingCameraScene")
:
class LargeTreeGeneration(MovingCameraScene):
DEPTH \= 4
CHILDREN\_PER\_VERTEX \= 3
LAYOUT\_CONFIG \= {"vertex\_spacing": (0.5, 1)}
VERTEX\_CONF \= {"radius": 0.25, "color": BLUE\_B, "fill\_opacity": 1}
def expand\_vertex(self, g, vertex\_id: str, depth: int):
new\_vertices \= \[\
f"{vertex\_id}/{i}" for i in range(self.CHILDREN\_PER\_VERTEX)\
\]
new\_edges \= \[(vertex\_id, child\_id) for child\_id in new\_vertices\]
g.add\_edges(
\*new\_edges,
vertex\_config\=self.VERTEX\_CONF,
positions\={
k: g.vertices\[vertex\_id\].get\_center() + 0.1 \* DOWN
for k in new\_vertices
},
)
if depth < self.DEPTH:
for child\_id in new\_vertices:
self.expand\_vertex(g, child\_id, depth + 1)
return g
def construct(self):
g \= Graph(\["ROOT"\], \[\], vertex\_config\=self.VERTEX\_CONF)
g \= self.expand\_vertex(g, "ROOT", 1)
self.add(g)
self.play(
g.animate.change\_layout(
"tree",
root\_vertex\="ROOT",
layout\_config\=self.LAYOUT\_CONFIG,
)
)
self.play(self.camera.auto\_zoom(g, margin\=1), run\_time\=0.5)
Methods
| | |
| --- | --- |
| `update_edges` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
static \_empty\_networkx\_graph()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#Graph._empty_networkx_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph._empty_networkx_graph "Link to this definition")
Return an empty networkx graph for the given graph type.
Return type:
_Graph_
\_original\_\_init\_\_(_vertices_, _edges_, _labels\=False_, _label\_fill\_color\=ManimColor('#000000')_, _layout\='spring'_, _layout\_scale\=2_, _layout\_config\=None_, _vertex\_type\=_, _vertex\_config\=None_, _vertex\_mobjects\=None_, _edge\_type\=_, _partitions\=None_, _root\_vertex\=None_, _edge\_config\=None_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertices** (_Sequence__\[__Hashable__\]_)
* **edges** (_Sequence__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **labels** (_bool_ _|_ _dict_)
* **label\_fill\_color** (_str_)
* **layout** (_Literal__\[__'circular'__,_ _'kamada\_kawai'__,_ _'partite'__,_ _'planar'__,_ _'random'__,_ _'shell'__,_ _'spectral'__,_ _'spiral'__,_ _'spring'__,_ _'tree'__\]_ _|_ _dict__\[__~collections.abc.Hashable__,_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)__\]_ _|_ _~manim.mobject.graph.LayoutFunction_)
* **layout\_scale** (_float_ _|_ _tuple__\[__float__,_ _float__,_ _float__\]_)
* **layout\_config** (_dict_ _|_ _None_)
* **vertex\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **vertex\_config** (_dict_ _|_ _None_)
* **vertex\_mobjects** (_dict_ _|_ _None_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
* **partitions** (_Sequence__\[__Sequence__\[__Hashable__\]__\]_ _|_ _None_)
* **root\_vertex** (_Hashable_ _|_ _None_)
* **edge\_config** (_dict_ _|_ _None_)
Return type:
None
\_populate\_edge\_dict(_edges_, _edge\_type_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graph.html#Graph._populate_edge_dict)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph._populate_edge_dict "Link to this definition")
Helper method for populating the edges of the graph.
Parameters:
* **edges** (_list__\[__tuple__\[__Hashable__,_ _Hashable__\]__\]_)
* **edge\_type** (_type__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_)
---
# CoordinateSystem - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.rst "Edit this page")
CoordinateSystem[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#coordinatesystem "Link to this heading")
==============================================================================================================================================================================
Qualified name: `manim.mobject.graphing.coordinate\_systems.CoordinateSystem`
class CoordinateSystem(_x\_range\=None_, _y\_range\=None_, _x\_length\=None_, _y\_length\=None_, _dimension\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "Link to this definition")
Bases: `object`
Abstract base class for Axes and NumberPlane.
Examples
Example: CoordSysExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#coordsysexample)

from manim import \*
class CoordSysExample(Scene):
def construct(self):
\# the location of the ticks depends on the x\_range and y\_range.
grid \= Axes(
x\_range\=\[0, 1, 0.05\], \# step size determines num\_decimal\_places.
y\_range\=\[0, 1, 0.05\],
x\_length\=9,
y\_length\=5.5,
axis\_config\={
"numbers\_to\_include": np.arange(0, 1 + 0.1, 0.1),
"font\_size": 24,
},
tips\=False,
)
\# Labels for the x-axis and y-axis.
y\_label \= grid.get\_y\_axis\_label("y", edge\=LEFT, direction\=LEFT, buff\=0.4)
x\_label \= grid.get\_x\_axis\_label("x")
grid\_labels \= VGroup(x\_label, y\_label)
graphs \= VGroup()
for n in np.arange(1, 20 + 0.5, 0.5):
graphs += grid.plot(lambda x: x \*\* n, color\=WHITE)
graphs += grid.plot(
lambda x: x \*\* (1 / n), color\=WHITE, use\_smoothing\=False
)
\# Extra lines and labels for point (1,1)
graphs += grid.get\_horizontal\_line(grid @ (1, 1, 0), color\=BLUE)
graphs += grid.get\_vertical\_line(grid @ (1, 1, 0), color\=BLUE)
graphs += Dot(point\=grid @ (1, 1, 0), color\=YELLOW)
graphs += Tex("(1,1)").scale(0.75).next\_to(grid @ (1, 1, 0))
title \= Title(
\# spaces between braces to prevent SyntaxError
r"Graphs of $y=x^{ {1}\\over{n} }$ and $y=x^n (n=1,2,3,...,20)$",
include\_underline\=False,
font\_size\=40,
)
self.add(title, graphs, grid, grid\_labels)
class CoordSysExample(Scene):
def construct(self):
# the location of the ticks depends on the x\_range and y\_range.
grid = Axes(
x\_range=\[0, 1, 0.05\], # step size determines num\_decimal\_places.
y\_range=\[0, 1, 0.05\],
x\_length=9,
y\_length=5.5,
axis\_config={
"numbers\_to\_include": np.arange(0, 1 + 0.1, 0.1),
"font\_size": 24,
},
tips=False,
)
# Labels for the x-axis and y-axis.
y\_label = grid.get\_y\_axis\_label("y", edge=LEFT, direction=LEFT, buff=0.4)
x\_label = grid.get\_x\_axis\_label("x")
grid\_labels = VGroup(x\_label, y\_label)
graphs = VGroup()
for n in np.arange(1, 20 + 0.5, 0.5):
graphs += grid.plot(lambda x: x \*\* n, color=WHITE)
graphs += grid.plot(
lambda x: x \*\* (1 / n), color=WHITE, use\_smoothing=False
)
# Extra lines and labels for point (1,1)
graphs += grid.get\_horizontal\_line(grid @ (1, 1, 0), color=BLUE)
graphs += grid.get\_vertical\_line(grid @ (1, 1, 0), color=BLUE)
graphs += Dot(point=grid @ (1, 1, 0), color=YELLOW)
graphs += Tex("(1,1)").scale(0.75).next\_to(grid @ (1, 1, 0))
title = Title(
# spaces between braces to prevent SyntaxError
r"Graphs of $y=x^{ {1}\\over{n} }$ and $y=x^n (n=1,2,3,...,20)$",
include\_underline=False,
font\_size=40,
)
self.add(title, graphs, grid, grid\_labels)
Methods
| | |
| --- | --- |
| [`add_coordinates`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.add_coordinates "manim.mobject.graphing.coordinate_systems.CoordinateSystem.add_coordinates") | Adds labels to the axes. |
| [`angle_of_tangent`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.angle_of_tangent "manim.mobject.graphing.coordinate_systems.CoordinateSystem.angle_of_tangent") | Returns the angle to the x-axis of the tangent to the plotted curve at a particular x-value. |
| [`c2p`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.c2p "manim.mobject.graphing.coordinate_systems.CoordinateSystem.c2p") | Abbreviation for `coords_to_point()` |
| `coords_to_point` | |
| [`get_T_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_T_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_T_label") | Creates a labelled triangle marker with a vertical line from the x-axis to a curve at a given x-value. |
| [`get_area`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area") | Returns a [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
representing the area under the graph passed. |
| `get_axes` | |
| `get_axis` | |
| `get_axis_labels` | |
| [`get_graph_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_graph_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_graph_label") | Creates a properly positioned label for the passed graph, with an optional dot. |
| [`get_horizontal_line`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line") | A horizontal line from the y-axis to a given point in the scene. |
| [`get_line_from_axis_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point") | Returns a straight line from a given axis to a point in the scene. |
| [`get_lines_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_lines_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_lines_to_point") | Generate both horizontal and vertical lines from the axis to a point. |
| [`get_origin`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_origin "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_origin") | Gets the origin of [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
. |
| [`get_riemann_rectangles`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles") | Generates a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the Riemann Rectangles for a given curve. |
| [`get_secant_slope_group`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_secant_slope_group "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_secant_slope_group") | Creates two lines representing dx and df, the labels for dx and df, and |
| [`get_vertical_line`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line") | A vertical line from the x-axis to a given point in the scene. |
| [`get_vertical_lines_to_graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_lines_to_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_lines_to_graph") | Obtains multiple lines from the x-axis to the curve. |
| `get_x_axis` | |
| [`get_x_axis_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label") | Generate an x-axis label. |
| `get_x_unit_size` | |
| `get_y_axis` | |
| [`get_y_axis_label`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label") | Generate a y-axis label. |
| `get_y_unit_size` | |
| `get_z_axis` | |
| [`i2gc`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gc "manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gc") | Alias for [`input_to_graph_coords()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords")
. |
| [`i2gp`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gp "manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gp") | Alias for [`input_to_graph_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point")
. |
| [`input_to_graph_coords`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords") | Returns a tuple of the axis relative coordinates of the point on the graph based on the x-value given. |
| [`input_to_graph_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point") | Returns the coordinates of the point on a `graph` corresponding to an `x` value. |
| [`p2c`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.p2c "manim.mobject.graphing.coordinate_systems.CoordinateSystem.p2c") | Abbreviation for `point_to_coords()` |
| [`plot`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot") | Generates a curve based on a function. |
| [`plot_antiderivative_graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_antiderivative_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_antiderivative_graph") | Plots an antiderivative graph. |
| [`plot_derivative_graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_derivative_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_derivative_graph") | Returns the curve of the derivative of the passed graph. |
| [`plot_implicit_curve`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_implicit_curve "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_implicit_curve") | Creates the curves of an implicit function. |
| [`plot_parametric_curve`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_parametric_curve "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_parametric_curve") | A parametric curve. |
| [`plot_polar_graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_polar_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_polar_graph") | A polar graph. |
| [`plot_surface`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_surface "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_surface") | Generates a surface based on a function. |
| `point_to_coords` | |
| [`point_to_polar`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar "manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar") | Gets polar coordinates from a point. |
| [`polar_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point") | Gets a point from polar coordinates. |
| [`pr2pt`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.pr2pt "manim.mobject.graphing.coordinate_systems.CoordinateSystem.pr2pt") | Abbreviation for [`polar_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point") |
| [`pt2pr`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.pt2pr "manim.mobject.graphing.coordinate_systems.CoordinateSystem.pt2pr") | Abbreviation for [`point_to_polar()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar "manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar") |
| [`slope_of_tangent`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.slope_of_tangent "manim.mobject.graphing.coordinate_systems.CoordinateSystem.slope_of_tangent") | Returns the slope of the tangent to the plotted curve at a particular x-value. |
Parameters:
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **y\_range** (_Sequence__\[__float__\]_ _|_ _None_)
* **x\_length** (_float_ _|_ _None_)
* **y\_length** (_float_ _|_ _None_)
* **dimension** (_int_)
\_get\_axis\_label(_label_, _axis_, _edge_, _direction_, _buff\=0.1_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem._get_axis_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem._get_axis_label "Link to this definition")
Gets the label for an axis.
Parameters:
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **axis** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The axis to which the label will be added.
* **edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The edge of the axes to which the label will be added. `RIGHT` adds to the right side of the axis
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Allows for further positioning of the label.
* **buff** (_float_) – The distance of the label from the line.
Returns:
The positioned label along the given axis.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
add\_coordinates(_\*axes\_numbers_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.add_coordinates)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.add_coordinates "Link to this definition")
Adds labels to the axes. Use `Axes.coordinate_labels` to access the coordinates after creation.
Parameters:
* **axes\_numbers** (_Iterable__\[__float__\]_ _|_ _None_ _|_ _dict__\[__float__,_ _str_ _|_ _float_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The numbers to be added to the axes. Use `None` to represent an axis with default labels.
* **kwargs** (_Any_)
Return type:
_Self_
Examples
ax \= ThreeDAxes()
x\_labels \= range(\-4, 5)
z\_labels \= range(\-4, 4, 2)
ax.add\_coordinates(
x\_labels, None, z\_labels
) \# default y labels, custom x & z labels
ax.add\_coordinates(x\_labels) \# only x labels
You can also specifically control the position and value of the labels using a dict.
ax \= Axes(x\_range\=\[0, 7\])
x\_pos \= \[x for x in range(1, 8)\]
\# strings are automatically converted into a Tex mobject.
x\_vals \= \[\
"Monday",\
"Tuesday",\
"Wednesday",\
"Thursday",\
"Friday",\
"Saturday",\
"Sunday",\
\]
x\_dict \= dict(zip(x\_pos, x\_vals))
ax.add\_coordinates(x\_dict)
angle\_of\_tangent(_x_, _graph_, _dx\=1e-08_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.angle_of_tangent)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.angle_of_tangent "Link to this definition")
Returns the angle to the x-axis of the tangent to the plotted curve at a particular x-value.
Parameters:
* **x** (_float_) – The x-value at which the tangent must touch the curve.
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
for which to calculate the tangent.
* **dx** (_float_) – The change in x used to determine the angle of the tangent to the curve.
Returns:
The angle of the tangent to the curve.
Return type:
`float`
Examples
ax \= Axes()
curve \= ax.plot(lambda x: x\*\*2)
ax.angle\_of\_tangent(x\=3, graph\=curve)
\# 1.4056476493802699
c2p(_\*coords_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.c2p)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.c2p "Link to this definition")
Abbreviation for `coords_to_point()`
Parameters:
**coords** (_float_ _|_ _Sequence__\[__float__\]_ _|_ _Sequence__\[__Sequence__\[__float__\]__\]_ _|_ _ndarray_)
Return type:
_ndarray_
get\_T\_label(_x\_val_, _graph_, _label\=None_, _label\_color\=None_, _triangle\_size\=0.25_, _triangle\_color\=ManimColor('#FFFFFF')_, _line\_func\=_, _line\_color\=ManimColor('#FFFF00')_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_T_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_T_label "Link to this definition")
Creates a labelled triangle marker with a vertical line from the x-axis to a curve at a given x-value.
Parameters:
* **x\_val** (_float_) – The position along the curve at which the label, line and triangle will be constructed.
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
for which to construct the label.
* **label** (_float_ _|_ _str_ _|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _None_) – The label of the vertical line and triangle.
* **label\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_) – The color of the label.
* **triangle\_size** (_float_) – The size of the triangle.
* **triangle\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_) – The color of the triangle.
* **line\_func** (_type__\[_[_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")\
_\]_) – The function used to construct the vertical line.
* **line\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the vertical line.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the label, triangle and vertical line mobjects.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: TLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#tlabelexample)

from manim import \*
class TLabelExample(Scene):
def construct(self):
\# defines the axes and linear function
axes \= Axes(x\_range\=\[\-1, 10\], y\_range\=\[\-1, 10\], x\_length\=9, y\_length\=6)
func \= axes.plot(lambda x: x, color\=BLUE)
\# creates the T\_label
t\_label \= axes.get\_T\_label(x\_val\=4, graph\=func, label\=Tex("x-value"))
self.add(axes, func, t\_label)
class TLabelExample(Scene):
def construct(self):
# defines the axes and linear function
axes = Axes(x\_range=\[-1, 10\], y\_range=\[-1, 10\], x\_length=9, y\_length=6)
func = axes.plot(lambda x: x, color=BLUE)
# creates the T\_label
t\_label = axes.get\_T\_label(x\_val=4, graph=func, label=Tex("x-value"))
self.add(axes, func, t\_label)
get\_area(_graph_, _x\_range\=None_, _color\=(ManimColor('#58C4DD'), ManimColor('#83C167'))_, _opacity\=0.3_, _bounded\_graph\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_area)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area "Link to this definition")
Returns a [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
representing the area under the graph passed.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The graph/curve for which the area needs to be gotten.
* **x\_range** (_tuple__\[__float__,_ _float__\]_ _|_ _None_) – The range of the minimum and maximum x-values of the area. `x_range = [x_min, x_max]`.
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_) – The color of the area. Creates a gradient if a list of colors is provided.
* **opacity** (_float_) – The opacity of the area.
* **bounded\_graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
_|_ _None_) – If a secondary `graph` is specified, encloses the area between the two curves.
* **kwargs** (_Any_) – Additional parameters passed to [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
.
Returns:
The [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
representing the area.
Return type:
[`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
Raises:
**ValueError** – When x\_ranges do not match (either area x\_range, graph’s x\_range or bounded\_graph’s x\_range).
Examples
Example: GetAreaExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getareaexample)

from manim import \*
class GetAreaExample(Scene):
def construct(self):
ax \= Axes().add\_coordinates()
curve \= ax.plot(lambda x: 2 \* np.sin(x), color\=DARK\_BLUE)
area \= ax.get\_area(
curve,
x\_range\=(PI / 2, 3 \* PI / 2),
color\=(GREEN\_B, GREEN\_D),
opacity\=1,
)
self.add(ax, curve, area)
class GetAreaExample(Scene):
def construct(self):
ax = Axes().add\_coordinates()
curve = ax.plot(lambda x: 2 \* np.sin(x), color=DARK\_BLUE)
area = ax.get\_area(
curve,
x\_range=(PI / 2, 3 \* PI / 2),
color=(GREEN\_B, GREEN\_D),
opacity=1,
)
self.add(ax, curve, area)
get\_graph\_label(_graph_, _label\='f(x)'_, _x\_val\=None_, _direction\=array(\[1., 0., 0.\])_, _buff\=0.25_, _color\=None_, _dot\=False_, _dot\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_graph_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_graph_label "Link to this definition")
Creates a properly positioned label for the passed graph, with an optional dot.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The curve.
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label for the function’s curve. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **x\_val** (_float_ _|_ _None_) – The x\_value along the curve that positions the label.
* **direction** (_Sequence__\[__float__\]_) – The cartesian position, relative to the curve that the label will be at –> `LEFT`, `RIGHT`.
* **buff** (_float_) – The distance between the curve and the label.
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_) – The color of the label. Defaults to the color of the curve.
* **dot** (_bool_) – Whether to add a dot at the point on the graph.
* **dot\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Additional parameters to be passed to [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
.
Returns:
The positioned label and [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
, if applicable.
Return type:
`Mobject`
Examples
Example: GetGraphLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getgraphlabelexample)

from manim import \*
class GetGraphLabelExample(Scene):
def construct(self):
ax \= Axes()
sin \= ax.plot(lambda x: np.sin(x), color\=PURPLE\_B)
label \= ax.get\_graph\_label(
graph\=sin,
label\= MathTex(r"\\frac{\\pi}{2}"),
x\_val\=PI / 2,
dot\=True,
direction\=UR,
)
self.add(ax, sin, label)
class GetGraphLabelExample(Scene):
def construct(self):
ax = Axes()
sin = ax.plot(lambda x: np.sin(x), color=PURPLE\_B)
label = ax.get\_graph\_label(
graph=sin,
label= MathTex(r"\\frac{\\pi}{2}"),
x\_val=PI / 2,
dot=True,
direction=UR,
)
self.add(ax, sin, label)
get\_horizontal\_line(_point_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_horizontal_line)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line "Link to this definition")
A horizontal line from the y-axis to a given point in the scene.
Parameters:
* **point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point to which the horizontal line will be drawn.
* **kwargs** (_Any_) – Additional parameters to be passed to [`get_line_from_axis_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point")
.
Returns:
A horizontal line from the y-axis to the point.
Return type:
`Line`
Examples
Example: GetHorizontalLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#gethorizontallineexample)

from manim import \*
class GetHorizontalLineExample(Scene):
def construct(self):
ax \= Axes().add\_coordinates()
point \= ax @ (\-4, 1.5)
dot \= Dot(point)
line \= ax.get\_horizontal\_line(point, line\_func\=Line)
self.add(ax, line, dot)
class GetHorizontalLineExample(Scene):
def construct(self):
ax = Axes().add\_coordinates()
point = ax @ (-4, 1.5)
dot = Dot(point)
line = ax.get\_horizontal\_line(point, line\_func=Line)
self.add(ax, line, dot)
get\_line\_from\_axis\_to\_point(_index: int_, _point: [Point3DLike](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_, _line\_config: dict | None \= None_, _color: [ParsableManimColor](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
| None \= None_, _stroke\_width: float \= 2_) → [DashedLine](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "manim.mobject.geometry.line.DashedLine")
[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_line_from_axis_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point "Link to this definition")
get\_line\_from\_axis\_to\_point(_index: int_, _point: [Point3DLike](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_, _line\_func: type\[[LineType](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#manim.mobject.graphing.coordinate_systems.LineType "manim.mobject.graphing.coordinate_systems.LineType")\
\]_, _line\_config: dict | None \= None_, _color: [ParsableManimColor](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
| None \= None_, _stroke\_width: float \= 2_) → [LineType](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#manim.mobject.graphing.coordinate_systems.LineType "manim.mobject.graphing.coordinate_systems.LineType")
Returns a straight line from a given axis to a point in the scene.
Parameters:
* **index** – Specifies the axis from which to draw the line. 0 = x\_axis, 1 = y\_axis
* **point** – The point to which the line will be drawn.
* **line\_func** – The function of the [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
mobject used to construct the line.
* **line\_config** – Optional arguments to passed to `line_func`.
* **color** – The color of the line.
* **stroke\_width** – The stroke width of the line.
Returns:
The line from an axis to a point.
Return type:
[`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
See also
[`get_vertical_line()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line")
[`get_horizontal_line()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line")
get\_lines\_to\_point(_point_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_lines_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_lines_to_point "Link to this definition")
Generate both horizontal and vertical lines from the axis to a point.
Parameters:
* **point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – A point on the scene.
* **kwargs** (_Any_) – Additional parameters to be passed to [`get_line_from_axis_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point")
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the horizontal and vertical lines.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
See also
[`get_vertical_line()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line")
[`get_horizontal_line()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_horizontal_line")
Examples
Example: GetLinesToPointExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getlinestopointexample)

from manim import \*
class GetLinesToPointExample(Scene):
def construct(self):
ax \= Axes()
circ \= Circle(radius\=0.5).move\_to(\[\-4, \-1.5, 0\])
lines\_1 \= ax.get\_lines\_to\_point(circ.get\_right(), color\=GREEN\_B)
lines\_2 \= ax.get\_lines\_to\_point(circ.get\_corner(DL), color\=BLUE\_B)
self.add(ax, lines\_1, lines\_2, circ)
class GetLinesToPointExample(Scene):
def construct(self):
ax = Axes()
circ = Circle(radius=0.5).move\_to(\[-4, -1.5, 0\])
lines\_1 = ax.get\_lines\_to\_point(circ.get\_right(), color=GREEN\_B)
lines\_2 = ax.get\_lines\_to\_point(circ.get\_corner(DL), color=BLUE\_B)
self.add(ax, lines\_1, lines\_2, circ)
get\_origin()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_origin)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_origin "Link to this definition")
Gets the origin of [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
.
Returns:
The center point.
Return type:
np.ndarray
get\_riemann\_rectangles(_graph_, _x\_range\=None_, _dx\=0.1_, _input\_sample\_type\='left'_, _stroke\_width\=1_, _stroke\_color\=ManimColor('#000000')_, _fill\_opacity\=1_, _color\=(ManimColor('#58C4DD'), ManimColor('#83C167'))_, _show\_signed\_area\=True_, _bounded\_graph\=None_, _blend\=False_, _width\_scale\_factor\=1.001_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_riemann_rectangles)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles "Link to this definition")
Generates a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the Riemann Rectangles for a given curve.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The graph whose area will be approximated by Riemann rectangles.
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The minimum and maximum x-values of the rectangles. `x_range = [x_min, x_max]`.
* **dx** (_float_) – The change in x-value that separates each rectangle.
* **input\_sample\_type** (_str_) – Can be any of `"left"`, `"right"` or `"center"`. Refers to where the sample point for the height of each Riemann Rectangle will be inside the segments of the partition.
* **stroke\_width** (_float_) – The stroke\_width of the border of the rectangles.
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the border of the rectangle.
* **fill\_opacity** (_float_) – The opacity of the rectangles.
* **color** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_) – The colors of the rectangles. Creates a balanced gradient if multiple colors are passed.
* **show\_signed\_area** (_bool_) – Indicates negative area when the curve dips below the x-axis by inverting its color.
* **blend** (_bool_) – Sets the `stroke_color` to `fill_color`, blending the rectangles without clear separation.
* **bounded\_graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
_|_ _None_) – If a secondary graph is specified, encloses the area between the two curves.
* **width\_scale\_factor** (_float_) – The factor by which the width of the rectangles is scaled.
Returns:
A [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing the Riemann Rectangles.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetRiemannRectanglesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getriemannrectanglesexample)

from manim import \*
class GetRiemannRectanglesExample(Scene):
def construct(self):
ax \= Axes(y\_range\=\[\-2, 10\])
quadratic \= ax.plot(lambda x: 0.5 \* x \*\* 2 \- 0.5)
\# the rectangles are constructed from their top right corner.
\# passing an iterable to \`color\` produces a gradient
rects\_right \= ax.get\_riemann\_rectangles(
quadratic,
x\_range\=\[\-4, \-3\],
dx\=0.25,
color\=(TEAL, BLUE\_B, DARK\_BLUE),
input\_sample\_type\="right",
)
\# the colour of rectangles below the x-axis is inverted
\# due to show\_signed\_area
rects\_left \= ax.get\_riemann\_rectangles(
quadratic, x\_range\=\[\-1.5, 1.5\], dx\=0.15, color\=YELLOW
)
bounding\_line \= ax.plot(
lambda x: 1.5 \* x, color\=BLUE\_B, x\_range\=\[3.3, 6\]
)
bounded\_rects \= ax.get\_riemann\_rectangles(
bounding\_line,
bounded\_graph\=quadratic,
dx\=0.15,
x\_range\=\[4, 5\],
show\_signed\_area\=False,
color\=(MAROON\_A, RED\_B, PURPLE\_D),
)
self.add(
ax, bounding\_line, quadratic, rects\_right, rects\_left, bounded\_rects
)
class GetRiemannRectanglesExample(Scene):
def construct(self):
ax = Axes(y\_range=\[-2, 10\])
quadratic = ax.plot(lambda x: 0.5 \* x \*\* 2 - 0.5)
# the rectangles are constructed from their top right corner.
# passing an iterable to \`color\` produces a gradient
rects\_right = ax.get\_riemann\_rectangles(
quadratic,
x\_range=\[-4, -3\],
dx=0.25,
color=(TEAL, BLUE\_B, DARK\_BLUE),
input\_sample\_type="right",
)
# the colour of rectangles below the x-axis is inverted
# due to show\_signed\_area
rects\_left = ax.get\_riemann\_rectangles(
quadratic, x\_range=\[-1.5, 1.5\], dx=0.15, color=YELLOW
)
bounding\_line = ax.plot(
lambda x: 1.5 \* x, color=BLUE\_B, x\_range=\[3.3, 6\]
)
bounded\_rects = ax.get\_riemann\_rectangles(
bounding\_line,
bounded\_graph=quadratic,
dx=0.15,
x\_range=\[4, 5\],
show\_signed\_area=False,
color=(MAROON\_A, RED\_B, PURPLE\_D),
)
self.add(
ax, bounding\_line, quadratic, rects\_right, rects\_left, bounded\_rects
)
get\_secant\_slope\_group(_x_, _graph_, _dx\=None_, _dx\_line\_color\=ManimColor('#FFFF00')_, _dy\_line\_color\=None_, _dx\_label\=None_, _dy\_label\=None_, _include\_secant\_line\=True_, _secant\_line\_color\=ManimColor('#83C167')_, _secant\_line\_length\=10_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_secant_slope_group)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_secant_slope_group "Link to this definition")
Creates two lines representing dx and df, the labels for dx and df, and
the secant to the curve at a particular x-value.
Parameters:
* **x** (_float_) – The x-value at which the secant intersects the graph for the first time.
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The curve for which the secant will be found.
* **dx** (_float_ _|_ _None_) – The change in x after which the secant exits.
* **dx\_line\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the line that indicates the change in x.
* **dy\_line\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_) – The color of the line that indicates the change in y. Defaults to the color of `graph`.
* **dx\_label** (_float_ _|_ _str_ _|_ _None_) – The label for the dx line. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **dy\_label** (_float_ _|_ _str_ _|_ _None_) – The label for the dy line. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **include\_secant\_line** (_bool_) – Whether to include the secant line in the graph, or just the df/dx lines and labels.
* **secant\_line\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the secant line.
* **secant\_line\_length** (_float_) – The length of the secant line.
Returns:
A group containing the elements: dx\_line, df\_line, and if applicable also `dx_label`, `df_label`, secant\_line.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetSecantSlopeGroupExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getsecantslopegroupexample)

from manim import \*
class GetSecantSlopeGroupExample(Scene):
def construct(self):
ax \= Axes(y\_range\=\[\-1, 7\])
graph \= ax.plot(lambda x: 1 / 4 \* x \*\* 2, color\=BLUE)
slopes \= ax.get\_secant\_slope\_group(
x\=2.0,
graph\=graph,
dx\=1.0,
dx\_label\=Tex("dx = 1.0"),
dy\_label\="dy",
dx\_line\_color\=GREEN\_B,
secant\_line\_length\=4,
secant\_line\_color\=RED\_D,
)
self.add(ax, graph, slopes)
class GetSecantSlopeGroupExample(Scene):
def construct(self):
ax = Axes(y\_range=\[-1, 7\])
graph = ax.plot(lambda x: 1 / 4 \* x \*\* 2, color=BLUE)
slopes = ax.get\_secant\_slope\_group(
x=2.0,
graph=graph,
dx=1.0,
dx\_label=Tex("dx = 1.0"),
dy\_label="dy",
dx\_line\_color=GREEN\_B,
secant\_line\_length=4,
secant\_line\_color=RED\_D,
)
self.add(ax, graph, slopes)
get\_vertical\_line(_point_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_vertical_line)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line "Link to this definition")
A vertical line from the x-axis to a given point in the scene.
Parameters:
* **point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point to which the vertical line will be drawn.
* **kwargs** (_Any_) – Additional parameters to be passed to [`get_line_from_axis_to_point`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_line_from_axis_to_point")
.
Returns:
A vertical line from the x-axis to the point.
Return type:
`Line`
Examples
Example: GetVerticalLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getverticallineexample)

from manim import \*
class GetVerticalLineExample(Scene):
def construct(self):
ax \= Axes().add\_coordinates()
point \= ax.coords\_to\_point(\-3.5, 2)
dot \= Dot(point)
line \= ax.get\_vertical\_line(point, line\_config\={"dashed\_ratio": 0.85})
self.add(ax, line, dot)
class GetVerticalLineExample(Scene):
def construct(self):
ax = Axes().add\_coordinates()
point = ax.coords\_to\_point(-3.5, 2)
dot = Dot(point)
line = ax.get\_vertical\_line(point, line\_config={"dashed\_ratio": 0.85})
self.add(ax, line, dot)
get\_vertical\_lines\_to\_graph(_graph_, _x\_range\=None_, _num\_lines\=20_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_vertical_lines_to_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_lines_to_graph "Link to this definition")
Obtains multiple lines from the x-axis to the curve.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The graph along which the lines are placed.
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – A list containing the lower and and upper bounds of the lines: `x_range = [x_min, x_max]`.
* **num\_lines** (_int_) – The number of evenly spaced lines.
* **kwargs** (_Any_) – Additional arguments to be passed to [`get_vertical_line()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_vertical_line")
.
Returns:
The [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of the evenly spaced lines.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetVerticalLinesToGraph [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getverticallinestograph)

from manim import \*
class GetVerticalLinesToGraph(Scene):
def construct(self):
ax \= Axes(
x\_range\=\[0, 8.0, 1\],
y\_range\=\[\-1, 1, 0.2\],
axis\_config\={"font\_size": 24},
).add\_coordinates()
curve \= ax.plot(lambda x: np.sin(x) / np.e \*\* 2 \* x)
lines \= ax.get\_vertical\_lines\_to\_graph(
curve, x\_range\=\[0, 4\], num\_lines\=30, color\=BLUE
)
self.add(ax, curve, lines)
class GetVerticalLinesToGraph(Scene):
def construct(self):
ax = Axes(
x\_range=\[0, 8.0, 1\],
y\_range=\[-1, 1, 0.2\],
axis\_config={"font\_size": 24},
).add\_coordinates()
curve = ax.plot(lambda x: np.sin(x) / np.e \*\* 2 \* x)
lines = ax.get\_vertical\_lines\_to\_graph(
curve, x\_range=\[0, 4\], num\_lines=30, color=BLUE
)
self.add(ax, curve, lines)
get\_x\_axis\_label(_label_, _edge\=array(\[1., 1., 0.\])_, _direction\=array(\[1., 1., 0.\])_, _buff\=0.1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_x_axis_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_x_axis_label "Link to this definition")
Generate an x-axis label.
Parameters:
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **edge** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
) – The edge of the x-axis to which the label will be added, by default `UR`.
* **direction** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
) – Allows for further positioning of the label from an edge, by default `UR`.
* **buff** (_float_) – The distance of the label from the line.
* **kwargs** (_Any_)
Returns:
The positioned label.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: GetXAxisLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getxaxislabelexample)

from manim import \*
class GetXAxisLabelExample(Scene):
def construct(self):
ax \= Axes(x\_range\=(0, 8), y\_range\=(0, 5), x\_length\=8, y\_length\=5)
x\_label \= ax.get\_x\_axis\_label(
Tex("$x$-values").scale(0.65), edge\=DOWN, direction\=DOWN, buff\=0.5
)
self.add(ax, x\_label)
class GetXAxisLabelExample(Scene):
def construct(self):
ax = Axes(x\_range=(0, 8), y\_range=(0, 5), x\_length=8, y\_length=5)
x\_label = ax.get\_x\_axis\_label(
Tex("$x$-values").scale(0.65), edge=DOWN, direction=DOWN, buff=0.5
)
self.add(ax, x\_label)
get\_y\_axis\_label(_label_, _edge\=array(\[1., 1., 0.\])_, _direction\=array(\[1., 0.5, 0.\])_, _buff\=0.1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.get_y_axis_label)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_y_axis_label "Link to this definition")
Generate a y-axis label.
Parameters:
* **label** (_float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The label. Defaults to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
for `str` and `float` inputs.
* **edge** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
) – The edge of the y-axis to which the label will be added, by default `UR`.
* **direction** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
) – Allows for further positioning of the label from an edge, by default `UR`
* **buff** (_float_) – The distance of the label from the line.
* **kwargs** (_Any_)
Returns:
The positioned label.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: GetYAxisLabelExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#getyaxislabelexample)

from manim import \*
class GetYAxisLabelExample(Scene):
def construct(self):
ax \= Axes(x\_range\=(0, 8), y\_range\=(0, 5), x\_length\=8, y\_length\=5)
y\_label \= ax.get\_y\_axis\_label(
Tex("$y$-values").scale(0.65).rotate(90 \* DEGREES),
edge\=LEFT,
direction\=LEFT,
buff\=0.3,
)
self.add(ax, y\_label)
class GetYAxisLabelExample(Scene):
def construct(self):
ax = Axes(x\_range=(0, 8), y\_range=(0, 5), x\_length=8, y\_length=5)
y\_label = ax.get\_y\_axis\_label(
Tex("$y$-values").scale(0.65).rotate(90 \* DEGREES),
edge=LEFT,
direction=LEFT,
buff=0.3,
)
self.add(ax, y\_label)
i2gc(_x_, _graph_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.i2gc)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gc "Link to this definition")
Alias for [`input_to_graph_coords()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords")
.
Parameters:
* **x** (_float_)
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
)
Return type:
tuple\[float, float\]
i2gp(_x_, _graph_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.i2gp)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.i2gp "Link to this definition")
Alias for [`input_to_graph_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point")
.
Parameters:
* **x** (_float_)
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
)
Return type:
_ndarray_
input\_to\_graph\_coords(_x_, _graph_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.input_to_graph_coords)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords "Link to this definition")
Returns a tuple of the axis relative coordinates of the point on the graph based on the x-value given.
Examples
\>>> from manim import Axes
\>>> ax \= Axes()
\>>> parabola \= ax.plot(lambda x: x\*\*2)
\>>> ax.input\_to\_graph\_coords(x\=3, graph\=parabola)
(3, 9)
Parameters:
* **x** (_float_)
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
)
Return type:
tuple\[float, float\]
input\_to\_graph\_point(_x_, _graph_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.input_to_graph_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "Link to this definition")
Returns the coordinates of the point on a `graph` corresponding to an `x` value.
Parameters:
* **x** (_float_) – The x-value of a point on the `graph`.
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
_|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
on which the point lies.
Returns:
The coordinates of the point on the `graph` corresponding to the `x` value.
Return type:
`np.ndarray`
Raises:
**ValueError** – When the target x is not in the range of the line graph.
Examples
Example: InputToGraphPointExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#inputtographpointexample)

from manim import \*
class InputToGraphPointExample(Scene):
def construct(self):
ax \= Axes()
curve \= ax.plot(lambda x : np.cos(x))
\# move a square to PI on the cosine curve.
position \= ax.input\_to\_graph\_point(x\=PI, graph\=curve)
sq \= Square(side\_length\=1, color\=YELLOW).move\_to(position)
self.add(ax, curve, sq)
class InputToGraphPointExample(Scene):
def construct(self):
ax = Axes()
curve = ax.plot(lambda x : np.cos(x))
# move a square to PI on the cosine curve.
position = ax.input\_to\_graph\_point(x=PI, graph=curve)
sq = Square(side\_length=1, color=YELLOW).move\_to(position)
self.add(ax, curve, sq)
p2c(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.p2c)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.p2c "Link to this definition")
Abbreviation for `point_to_coords()`
Parameters:
**point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
Return type:
list\[TypeAliasForwardRef(‘~manim.typing.ManimFloat’)\]
plot(_function_, _x\_range\=None_, _use\_vectorized\=False_, _colorscale\=None_, _colorscale\_axis\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot "Link to this definition")
Generates a curve based on a function.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _float__\]_) – The function used to construct the [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
* **x\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The range of the curve along the axes. `x_range = [x_min, x_max, x_step]`.
* **use\_vectorized** (_bool_) – Whether to pass in the generated t value array to the function. Only use this if your function supports it. Output should be a numpy array of shape `[y_0, y_1, ...]`
* **colorscale** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__,_ _float__\]_ _|_ _None_) – Colors of the function. Optional parameter used when coloring a function by values. Passing a list of colors and a colorscale\_axis will color the function by y-value. Passing a list of tuples in the form `(color, pivot)` allows user-defined pivots where the color transitions.
* **colorscale\_axis** (_int_) – Defines the axis on which the colorscale is applied (0 = x, 1 = y), default is y-axis (1).
* **kwargs** (_Any_) – Additional parameters to be passed to [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
Returns:
The plotted curve.
Return type:
[`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
Warning
This method may not produce accurate graphs since Manim currently relies on interpolation between evenly-spaced samples of the curve, instead of intelligent plotting. See the example below for some solutions to this problem.
Examples
Example: PlotExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#plotexample)

from manim import \*
class PlotExample(Scene):
def construct(self):
\# construct the axes
ax\_1 \= Axes(
x\_range\=\[0.001, 6\],
y\_range\=\[\-8, 2\],
x\_length\=5,
y\_length\=3,
tips\=False,
)
ax\_2 \= ax\_1.copy()
ax\_3 \= ax\_1.copy()
\# position the axes
ax\_1.to\_corner(UL)
ax\_2.to\_corner(UR)
ax\_3.to\_edge(DOWN)
axes \= VGroup(ax\_1, ax\_2, ax\_3)
\# create the logarithmic curves
def log\_func(x):
return np.log(x)
\# a curve without adjustments; poor interpolation.
curve\_1 \= ax\_1.plot(log\_func, color\=PURE\_RED)
\# disabling interpolation makes the graph look choppy as not enough
\# inputs are available
curve\_2 \= ax\_2.plot(log\_func, use\_smoothing\=False, color\=ORANGE)
\# taking more inputs of the curve by specifying a step for the
\# x\_range yields expected results, but increases rendering time.
curve\_3 \= ax\_3.plot(
log\_func, x\_range\=(0.001, 6, 0.001), color\=PURE\_GREEN
)
curves \= VGroup(curve\_1, curve\_2, curve\_3)
self.add(axes, curves)
class PlotExample(Scene):
def construct(self):
# construct the axes
ax\_1 = Axes(
x\_range=\[0.001, 6\],
y\_range=\[-8, 2\],
x\_length=5,
y\_length=3,
tips=False,
)
ax\_2 = ax\_1.copy()
ax\_3 = ax\_1.copy()
# position the axes
ax\_1.to\_corner(UL)
ax\_2.to\_corner(UR)
ax\_3.to\_edge(DOWN)
axes = VGroup(ax\_1, ax\_2, ax\_3)
# create the logarithmic curves
def log\_func(x):
return np.log(x)
# a curve without adjustments; poor interpolation.
curve\_1 = ax\_1.plot(log\_func, color=PURE\_RED)
# disabling interpolation makes the graph look choppy as not enough
# inputs are available
curve\_2 = ax\_2.plot(log\_func, use\_smoothing=False, color=ORANGE)
# taking more inputs of the curve by specifying a step for the
# x\_range yields expected results, but increases rendering time.
curve\_3 = ax\_3.plot(
log\_func, x\_range=(0.001, 6, 0.001), color=PURE\_GREEN
)
curves = VGroup(curve\_1, curve\_2, curve\_3)
self.add(axes, curves)
plot\_antiderivative\_graph(_graph_, _y\_intercept\=0_, _samples\=50_, _use\_vectorized\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_antiderivative_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_antiderivative_graph "Link to this definition")
Plots an antiderivative graph.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The graph for which the antiderivative will be found.
* **y\_intercept** (_float_) – The y-value at which the graph intercepts the y-axis.
* **samples** (_int_) – The number of points to take the area under the graph.
* **use\_vectorized** (_bool_) – Whether to use the vectorized version of the antiderivative. This means to pass in the generated t value array to the function. Only use this if your function supports it. Output should be a numpy array of shape `[y_0, y_1, ...]`
* **kwargs** (_Any_) – Any valid keyword argument of [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
Returns:
The curve of the antiderivative.
Return type:
[`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
Note
This graph is plotted from the values of area under the reference graph. The result might not be ideal if the reference graph contains uncalculatable areas from x=0.
Examples
Example: AntiderivativeExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#antiderivativeexample)

from manim import \*
class AntiderivativeExample(Scene):
def construct(self):
ax \= Axes()
graph1 \= ax.plot(
lambda x: (x \*\* 2 \- 2) / 3,
color\=RED,
)
graph2 \= ax.plot\_antiderivative\_graph(graph1, color\=BLUE)
self.add(ax, graph1, graph2)
class AntiderivativeExample(Scene):
def construct(self):
ax = Axes()
graph1 = ax.plot(
lambda x: (x \*\* 2 - 2) / 3,
color=RED,
)
graph2 = ax.plot\_antiderivative\_graph(graph1, color=BLUE)
self.add(ax, graph1, graph2)
plot\_derivative\_graph(_graph_, _color\=ManimColor('#83C167')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_derivative_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_derivative_graph "Link to this definition")
Returns the curve of the derivative of the passed graph.
Parameters:
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The graph for which the derivative will be found.
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the derivative curve.
* **kwargs** (_Any_) – Any valid keyword argument of [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
Returns:
The curve of the derivative.
Return type:
[`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
Examples
Example: DerivativeGraphExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#derivativegraphexample)

from manim import \*
class DerivativeGraphExample(Scene):
def construct(self):
ax \= NumberPlane(y\_range\=\[\-1, 7\], background\_line\_style\={"stroke\_opacity": 0.4})
curve\_1 \= ax.plot(lambda x: x \*\* 2, color\=PURPLE\_B)
curve\_2 \= ax.plot\_derivative\_graph(curve\_1)
curves \= VGroup(curve\_1, curve\_2)
label\_1 \= ax.get\_graph\_label(curve\_1, "x^2", x\_val\=-2, direction\=DL)
label\_2 \= ax.get\_graph\_label(curve\_2, "2x", x\_val\=3, direction\=RIGHT)
labels \= VGroup(label\_1, label\_2)
self.add(ax, curves, labels)
class DerivativeGraphExample(Scene):
def construct(self):
ax = NumberPlane(y\_range=\[-1, 7\], background\_line\_style={"stroke\_opacity": 0.4})
curve\_1 = ax.plot(lambda x: x \*\* 2, color=PURPLE\_B)
curve\_2 = ax.plot\_derivative\_graph(curve\_1)
curves = VGroup(curve\_1, curve\_2)
label\_1 = ax.get\_graph\_label(curve\_1, "x^2", x\_val=-2, direction=DL)
label\_2 = ax.get\_graph\_label(curve\_2, "2x", x\_val=3, direction=RIGHT)
labels = VGroup(label\_1, label\_2)
self.add(ax, curves, labels)
plot\_implicit\_curve(_func_, _min\_depth\=5_, _max\_quads\=1500_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_implicit_curve)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_implicit_curve "Link to this definition")
Creates the curves of an implicit function.
Parameters:
* **func** (_Callable__\[__\[__float__,_ _float__\]__,_ _float__\]_) – The function to graph, in the form of f(x, y) = 0.
* **min\_depth** (_int_) – The minimum depth of the function to calculate.
* **max\_quads** (_int_) – The maximum number of quads to use.
* **kwargs** (_Any_) – Additional parameters to pass into `ImplicitFunction`.
Return type:
[_ImplicitFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction "manim.mobject.graphing.functions.ImplicitFunction")
Examples
Example: ImplicitExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#implicitexample)

from manim import \*
class ImplicitExample(Scene):
def construct(self):
ax \= Axes()
a \= ax.plot\_implicit\_curve(
lambda x, y: y \* (x \- y) \*\* 2 \- 4 \* x \- 8, color\=BLUE
)
self.add(ax, a)
class ImplicitExample(Scene):
def construct(self):
ax = Axes()
a = ax.plot\_implicit\_curve(
lambda x, y: y \* (x - y) \*\* 2 - 4 \* x - 8, color=BLUE
)
self.add(ax, a)
plot\_parametric\_curve(_function_, _use\_vectorized\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_parametric_curve)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_parametric_curve "Link to this definition")
A parametric curve.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _ndarray__\]_) – A parametric function mapping a number to a point in the coordinate system.
* **use\_vectorized** (_bool_) – Whether to pass in the generated t value array to the function. Only use this if your function supports it.
* **kwargs** (_Any_) – Any further keyword arguments are passed to [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
Return type:
[_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
Example
Example: ParametricCurveExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#parametriccurveexample)

from manim import \*
class ParametricCurveExample(Scene):
def construct(self):
ax \= Axes()
cardioid \= ax.plot\_parametric\_curve(
lambda t: np.array(
\[\
np.exp(1) \* np.cos(t) \* (1 \- np.cos(t)),\
np.exp(1) \* np.sin(t) \* (1 \- np.cos(t)),\
0,\
\]
),
t\_range\=\[0, 2 \* PI\],
color\="#0FF1CE",
)
self.add(ax, cardioid)
class ParametricCurveExample(Scene):
def construct(self):
ax = Axes()
cardioid = ax.plot\_parametric\_curve(
lambda t: np.array(
\[\
np.exp(1) \* np.cos(t) \* (1 - np.cos(t)),\
np.exp(1) \* np.sin(t) \* (1 - np.cos(t)),\
0,\
\]
),
t\_range=\[0, 2 \* PI\],
color="#0FF1CE",
)
self.add(ax, cardioid)
plot\_polar\_graph(_r\_func_, _theta\_range\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_polar_graph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_polar_graph "Link to this definition")
A polar graph.
Parameters:
* **r\_func** (_Callable__\[__\[__float__\]__,_ _float__\]_) – The function r of theta.
* **theta\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The range of theta as `theta_range = [theta_min, theta_max, theta_step]`.
* **kwargs** (_Any_) – Additional parameters passed to [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
.
Return type:
[_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
Examples
Example: PolarGraphExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#polargraphexample)

from manim import \*
class PolarGraphExample(Scene):
def construct(self):
plane \= PolarPlane()
r \= lambda theta: 2 \* np.sin(theta \* 5)
graph \= plane.plot\_polar\_graph(r, \[0, 2 \* PI\], color\=ORANGE)
self.add(plane, graph)
class PolarGraphExample(Scene):
def construct(self):
plane = PolarPlane()
r = lambda theta: 2 \* np.sin(theta \* 5)
graph = plane.plot\_polar\_graph(r, \[0, 2 \* PI\], color=ORANGE)
self.add(plane, graph)
References: [`PolarPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "manim.mobject.graphing.coordinate_systems.PolarPlane")
plot\_surface(_function_, _u\_range\=None_, _v\_range\=None_, _colorscale\=None_, _colorscale\_axis\=2_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.plot_surface)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_surface "Link to this definition")
Generates a surface based on a function.
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _float__\]_) – The function used to construct the [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
.
* **u\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The range of the `u` variable: `(u_min, u_max)`.
* **v\_range** (_Sequence__\[__float__\]_ _|_ _None_) – The range of the `v` variable: `(v_min, v_max)`.
* **colorscale** (_Sequence__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _Sequence__\[__tuple__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__,_ _float__\]__\]_ _|_ _None_) – Colors of the surface. Passing a list of colors will color the surface by z-value. Passing a list of tuples in the form `(color, pivot)` allows user-defined pivots where the color transitions.
* **colorscale\_axis** (_int_) – Defines the axis on which the colorscale is applied (0 = x, 1 = y, 2 = z), default is z-axis (2).
* **kwargs** (_Any_) – Additional parameters to be passed to [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
.
Returns:
The plotted surface.
Return type:
[`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
Examples
Example: PlotSurfaceExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#plotsurfaceexample)

from manim import \*
class PlotSurfaceExample(ThreeDScene):
def construct(self):
resolution\_fa \= 16
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=-60 \* DEGREES)
axes \= ThreeDAxes(x\_range\=(\-3, 3, 1), y\_range\=(\-3, 3, 1), z\_range\=(\-5, 5, 1))
def param\_trig(u, v):
x \= u
y \= v
z \= 2 \* np.sin(x) + 2 \* np.cos(y)
return z
trig\_plane \= axes.plot\_surface(
param\_trig,
resolution\=(resolution\_fa, resolution\_fa),
u\_range \= (\-3, 3),
v\_range \= (\-3, 3),
colorscale \= \[BLUE, GREEN, YELLOW, ORANGE, RED\],
)
self.add(axes, trig\_plane)
class PlotSurfaceExample(ThreeDScene):
def construct(self):
resolution\_fa = 16
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=-60 \* DEGREES)
axes = ThreeDAxes(x\_range=(-3, 3, 1), y\_range=(-3, 3, 1), z\_range=(-5, 5, 1))
def param\_trig(u, v):
x = u
y = v
z = 2 \* np.sin(x) + 2 \* np.cos(y)
return z
trig\_plane = axes.plot\_surface(
param\_trig,
resolution=(resolution\_fa, resolution\_fa),
u\_range = (-3, 3),
v\_range = (-3, 3),
colorscale = \[BLUE, GREEN, YELLOW, ORANGE, RED\],
)
self.add(axes, trig\_plane)
point\_to\_polar(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.point_to_polar)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar "Link to this definition")
Gets polar coordinates from a point.
Parameters:
**point** ([_Point2DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike "manim.typing.Point2DLike")
) – The point.
Returns:
The coordinate radius (\\(r\\)) and the coordinate azimuth (\\(\\theta\\)).
Return type:
[Point2D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
polar\_to\_point(_radius_, _azimuth_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.polar_to_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point "Link to this definition")
Gets a point from polar coordinates.
Parameters:
* **radius** (_float_) – The coordinate radius (\\(r\\)).
* **azimuth** (_float_) – The coordinate azimuth (\\(\\theta\\)).
Returns:
The point.
Return type:
numpy.ndarray
Examples
Example: PolarToPointExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#polartopointexample)

from manim import \*
class PolarToPointExample(Scene):
def construct(self):
polarplane\_pi \= PolarPlane(azimuth\_units\="PI radians", size\=6)
polartopoint\_vector \= Vector(polarplane\_pi.polar\_to\_point(3, PI/4))
self.add(polarplane\_pi)
self.add(polartopoint\_vector)
class PolarToPointExample(Scene):
def construct(self):
polarplane\_pi = PolarPlane(azimuth\_units="PI radians", size=6)
polartopoint\_vector = Vector(polarplane\_pi.polar\_to\_point(3, PI/4))
self.add(polarplane\_pi)
self.add(polartopoint\_vector)
References: [`PolarPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "manim.mobject.graphing.coordinate_systems.PolarPlane")
[`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
pr2pt(_radius_, _azimuth_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.pr2pt)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.pr2pt "Link to this definition")
Abbreviation for [`polar_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.polar_to_point")
Parameters:
* **radius** (_float_)
* **azimuth** (_float_)
Return type:
_ndarray_
pt2pr(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.pt2pr)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.pt2pr "Link to this definition")
Abbreviation for [`point_to_polar()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar "manim.mobject.graphing.coordinate_systems.CoordinateSystem.point_to_polar")
Parameters:
**point** (_ndarray_)
Return type:
[_Point2D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
slope\_of\_tangent(_x_, _graph_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/graphing/coordinate_systems.html#CoordinateSystem.slope_of_tangent)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.slope_of_tangent "Link to this definition")
Returns the slope of the tangent to the plotted curve at a particular x-value.
Parameters:
* **x** (_float_) – The x-value at which the tangent must touch the curve.
* **graph** ([_ParametricFunction_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
) – The [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
for which to calculate the tangent.
* **kwargs** (_Any_)
Returns:
The slope of the tangent with the x axis.
Return type:
`float`
Examples
ax \= Axes()
curve \= ax.plot(lambda x: x\*\*2)
ax.slope\_of\_tangent(x\=-2, graph\=curve)
\# -3.5000000259052038
---
# Mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.mobject.Mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.mobject.Mobject.rst "Edit this page")
Mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#mobject "Link to this heading")
===============================================================================================================================
Qualified name: `manim.mobject.mobject.Mobject`
class Mobject(_color\=ManimColor('#FFFFFF')_, _name\=None_, _dim\=3_, _target\=None_, _z\_index\=0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "Link to this definition")
Bases: `object`
Mathematical Object: base class for objects that can be displayed on screen.
There is a compatibility layer that allows for getting and setting generic attributes with `get_*` and `set_*` methods. See [`set()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set "manim.mobject.mobject.Mobject.set")
for more details.
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _list__\[_[_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_\]_)
* **name** (_str_ _|_ _None_)
* **dim** (_int_)
* **z\_index** (_float_)
submobjects[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "Link to this definition")
The contained objects.
Type:
List\[[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
\]
points[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.points "Link to this definition")
The points of the objects.
See also
[`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Type:
`numpy.ndarray`
Methods
| | |
| --- | --- |
| [`add`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add "manim.mobject.mobject.Mobject.add") | Add mobjects as submobjects. |
| [`add_animation_override`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_animation_override "manim.mobject.mobject.Mobject.add_animation_override") | Add an animation override. |
| [`add_background_rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_background_rectangle "manim.mobject.mobject.Mobject.add_background_rectangle") | Add a BackgroundRectangle as submobject. |
| `add_background_rectangle_to_family_members_with_points` | |
| `add_background_rectangle_to_submobjects` | |
| `add_n_more_submobjects` | |
| [`add_to_back`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "manim.mobject.mobject.Mobject.add_to_back") | Add all passed mobjects to the back of the submobjects. |
| [`add_updater`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater") | Add an update function to this mobject. |
| [`align_data`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_data "manim.mobject.mobject.Mobject.align_data") | Aligns the family structure and data of this mobject with another mobject. |
| [`align_on_border`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_on_border "manim.mobject.mobject.Mobject.align_on_border") | Direction just needs to be a vector pointing towards side or corner in the 2d plane. |
| `align_points` | |
| `align_points_with_larger` | |
| `align_submobjects` | |
| [`align_to`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_to "manim.mobject.mobject.Mobject.align_to") | Aligns mobject to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in a certain direction. |
| [`animation_override_for`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animation_override_for "manim.mobject.mobject.Mobject.animation_override_for") | Returns the function defining a specific animation override for this class. |
| [`apply_complex_function`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.apply_complex_function "manim.mobject.mobject.Mobject.apply_complex_function") | Applies a complex function to a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| `apply_function` | |
| `apply_function_to_position` | |
| `apply_function_to_submobject_positions` | |
| `apply_matrix` | |
| `apply_over_attr_arrays` | |
| `apply_points_function_about_point` | |
| [`apply_to_family`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.apply_to_family "manim.mobject.mobject.Mobject.apply_to_family") | Apply a function to `self` and every submobject with points recursively. |
| [`arrange`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange "manim.mobject.mobject.Mobject.arrange") | Sorts [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
next to each other on screen. |
| [`arrange_in_grid`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid") | Arrange submobjects in a grid. |
| [`arrange_submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_submobjects "manim.mobject.mobject.Mobject.arrange_submobjects") | Arrange the position of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
with a small buffer. |
| [`become`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "manim.mobject.mobject.Mobject.become") | Edit points, colors and submobjects to be identical to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`center`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.center "manim.mobject.mobject.Mobject.center") | Moves the center of the mobject to the center of the scene. |
| [`clear_updaters`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.clear_updaters "manim.mobject.mobject.Mobject.clear_updaters") | Remove every updater. |
| [`copy`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.copy "manim.mobject.mobject.Mobject.copy") | Create and return an identical copy of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
including all [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
. |
| `fade` | |
| `fade_to` | |
| [`family_members_with_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.family_members_with_points "manim.mobject.mobject.Mobject.family_members_with_points") | Filters the list of family members (generated by [`get_family()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "manim.mobject.mobject.Mobject.get_family")
) to include only mobjects with points. |
| [`flip`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.flip "manim.mobject.mobject.Mobject.flip") | Flips/Mirrors an mobject about its center. |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.generate_points "manim.mobject.mobject.Mobject.generate_points") | Initializes [`points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.points "manim.mobject.mobject.Mobject.points")
and therefore the shape. |
| `generate_target` | |
| [`get_all_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_all_points "manim.mobject.mobject.Mobject.get_all_points") | Return all points from this mobject and all submobjects. |
| `get_array_attrs` | |
| [`get_bottom`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_bottom "manim.mobject.mobject.Mobject.get_bottom") | Get bottom Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| `get_boundary_point` | |
| [`get_center`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_center "manim.mobject.mobject.Mobject.get_center") | Get center Point3Ds |
| `get_center_of_mass` | |
| [`get_color`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_color "manim.mobject.mobject.Mobject.get_color") | Returns the color of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`get_coord`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_coord "manim.mobject.mobject.Mobject.get_coord") | Meant to generalize `get_x`, `get_y` and `get_z` |
| [`get_corner`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_corner "manim.mobject.mobject.Mobject.get_corner") | Get corner Point3Ds for certain direction. |
| [`get_critical_point`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_critical_point "manim.mobject.mobject.Mobject.get_critical_point") | Picture a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`get_edge_center`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_edge_center "manim.mobject.mobject.Mobject.get_edge_center") | Get edge Point3Ds for certain direction. |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_end "manim.mobject.mobject.Mobject.get_end") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends. |
| `get_extremum_along_dim` | |
| [`get_family`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "manim.mobject.mobject.Mobject.get_family") | Lists all mobjects in the hierarchy (family) of the given mobject, including the mobject itself and all its submobjects recursively. |
| `get_family_updaters` | |
| `get_group_class` | |
| `get_image` | |
| [`get_left`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_left "manim.mobject.mobject.Mobject.get_left") | Get left Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`get_merged_array`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_merged_array "manim.mobject.mobject.Mobject.get_merged_array") | Return all of a given attribute from this mobject and all submobjects. |
| [`get_midpoint`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_midpoint "manim.mobject.mobject.Mobject.get_midpoint") | Get Point3Ds of the middle of the path that forms the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`get_mobject_type_class`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_mobject_type_class "manim.mobject.mobject.Mobject.get_mobject_type_class") | Return the base class of this mobject type. |
| [`get_nadir`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_nadir "manim.mobject.mobject.Mobject.get_nadir") | Get nadir (opposite the zenith) Point3Ds of a box bounding a 3D [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| `get_num_points` | |
| `get_pieces` | |
| [`get_point_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_point_mobject "manim.mobject.mobject.Mobject.get_point_mobject") | The simplest [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to be transformed to or from self. |
| `get_points_defining_boundary` | |
| [`get_right`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_right "manim.mobject.mobject.Mobject.get_right") | Get right Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`get_start`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_start "manim.mobject.mobject.Mobject.get_start") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts. |
| [`get_start_and_end`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_start_and_end "manim.mobject.mobject.Mobject.get_start_and_end") | Returns starting and ending point of a stroke as a `tuple`. |
| [`get_time_based_updaters`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_time_based_updaters "manim.mobject.mobject.Mobject.get_time_based_updaters") | Return all updaters using the `dt` parameter. |
| [`get_top`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_top "manim.mobject.mobject.Mobject.get_top") | Get top Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`get_updaters`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters") | Return all updaters. |
| [`get_x`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_x "manim.mobject.mobject.Mobject.get_x") | Returns x Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float` |
| [`get_y`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_y "manim.mobject.mobject.Mobject.get_y") | Returns y Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float` |
| [`get_z`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_z "manim.mobject.mobject.Mobject.get_z") | Returns z Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float` |
| `get_z_index_reference_point` | |
| [`get_zenith`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_zenith "manim.mobject.mobject.Mobject.get_zenith") | Get zenith Point3Ds of a box bounding a 3D [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`has_no_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_no_points "manim.mobject.mobject.Mobject.has_no_points") | Check if [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_does not_ contains points. |
| [`has_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_points "manim.mobject.mobject.Mobject.has_points") | Check if [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
contains points. |
| [`has_time_based_updater`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_time_based_updater "manim.mobject.mobject.Mobject.has_time_based_updater") | Test if `self` has a time based updater. |
| [`init_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.init_colors "manim.mobject.mobject.Mobject.init_colors") | Initializes the colors. |
| [`insert`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.insert "manim.mobject.mobject.Mobject.insert") | Inserts a mobject at a specific position into self.submobjects |
| [`interpolate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.interpolate "manim.mobject.mobject.Mobject.interpolate") | Turns this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
into an interpolation between `mobject1` and `mobject2`. |
| `interpolate_color` | |
| [`invert`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.invert "manim.mobject.mobject.Mobject.invert") | Inverts the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
. |
| `is_off_screen` | |
| [`length_over_dim`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.length_over_dim "manim.mobject.mobject.Mobject.length_over_dim") | Measure the length of an [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in a certain direction. |
| [`match_color`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_color "manim.mobject.mobject.Mobject.match_color") | Match the color with the color of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_coord`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_coord "manim.mobject.mobject.Mobject.match_coord") | Match the Point3Ds with the Point3Ds of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_depth`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_depth "manim.mobject.mobject.Mobject.match_depth") | Match the depth with the depth of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_dim_size`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_dim_size "manim.mobject.mobject.Mobject.match_dim_size") | Match the specified dimension with the dimension of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_height`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_height "manim.mobject.mobject.Mobject.match_height") | Match the height with the height of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_points "manim.mobject.mobject.Mobject.match_points") | Edit points, positions, and submobjects to be identical to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, while keeping the style unchanged. |
| [`match_updaters`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_updaters "manim.mobject.mobject.Mobject.match_updaters") | Match the updaters of the given mobject. |
| [`match_width`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_width "manim.mobject.mobject.Mobject.match_width") | Match the width with the width of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`match_x`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_x "manim.mobject.mobject.Mobject.match_x") | Match x coord. |
| [`match_y`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_y "manim.mobject.mobject.Mobject.match_y") | Match y coord. |
| [`match_z`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_z "manim.mobject.mobject.Mobject.match_z") | Match z coord. |
| [`move_to`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.move_to "manim.mobject.mobject.Mobject.move_to") | Move center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to certain Point3D. |
| [`next_to`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.next_to "manim.mobject.mobject.Mobject.next_to") | Move this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
next to another's [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
or Point3D. |
| `nonempty_submobjects` | |
| [`null_point_align`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.null_point_align "manim.mobject.mobject.Mobject.null_point_align") | If a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
with points is being aligned to one without, treat both as groups, and push the one with points into its own submobjects list. |
| `point_from_proportion` | |
| `pose_at_angle` | |
| `proportion_from_point` | |
| `push_self_into_submobjects` | |
| `put_start_and_end_on` | |
| [`reduce_across_dimension`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.reduce_across_dimension "manim.mobject.mobject.Mobject.reduce_across_dimension") | Find the min or max value from a dimension across all points in this and submobjects. |
| [`remove`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove "manim.mobject.mobject.Mobject.remove") | Remove [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
. |
| [`remove_updater`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove_updater "manim.mobject.mobject.Mobject.remove_updater") | Remove an updater. |
| [`repeat`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.repeat "manim.mobject.mobject.Mobject.repeat") | This can make transition animations nicer |
| `repeat_submobject` | |
| `replace` | |
| `rescale_to_fit` | |
| [`reset_points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.reset_points "manim.mobject.mobject.Mobject.reset_points") | Sets [`points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.points "manim.mobject.mobject.Mobject.points")
to be an empty array. |
| [`restore`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.restore "manim.mobject.mobject.Mobject.restore") | Restores the state that was previously saved with [`save_state()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_state "manim.mobject.mobject.Mobject.save_state")
. |
| [`resume_updating`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.resume_updating "manim.mobject.mobject.Mobject.resume_updating") | Enable updating from updaters and animations. |
| `reverse_points` | |
| [`rotate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "manim.mobject.mobject.Mobject.rotate") | Rotates the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
around a specified axis and point. |
| [`rotate_about_origin`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate_about_origin "manim.mobject.mobject.Mobject.rotate_about_origin") | Rotates the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
about the ORIGIN, which is at \[0,0,0\]. |
| [`save_image`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_image "manim.mobject.mobject.Mobject.save_image") | Saves an image of only this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
at its position to a png file. |
| [`save_state`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_state "manim.mobject.mobject.Mobject.save_state") | Save the current state (position, color & size). |
| [`scale`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "manim.mobject.mobject.Mobject.scale") | Scale the size by a factor. |
| [`scale_to_fit_depth`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_depth "manim.mobject.mobject.Mobject.scale_to_fit_depth") | Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a depth while keeping width/height proportional. |
| [`scale_to_fit_height`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_height "manim.mobject.mobject.Mobject.scale_to_fit_height") | Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a height while keeping width/depth proportional. |
| [`scale_to_fit_width`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_width "manim.mobject.mobject.Mobject.scale_to_fit_width") | Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a width while keeping height/depth proportional. |
| [`set`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set "manim.mobject.mobject.Mobject.set") | Sets attributes. |
| [`set_color`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_color "manim.mobject.mobject.Mobject.set_color") | Condition is function which takes in one arguments, (x, y, z). |
| [`set_color_by_gradient`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_color_by_gradient "manim.mobject.mobject.Mobject.set_color_by_gradient") | |
| `set_colors_by_radial_gradient` | |
| `set_coord` | |
| [`set_default`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_default "manim.mobject.mobject.Mobject.set_default") | Sets the default values of keyword arguments. |
| `set_submobject_colors_by_gradient` | |
| `set_submobject_colors_by_radial_gradient` | |
| [`set_x`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_x "manim.mobject.mobject.Mobject.set_x") | Set x value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`) |
| [`set_y`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_y "manim.mobject.mobject.Mobject.set_y") | Set y value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`) |
| [`set_z`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z "manim.mobject.mobject.Mobject.set_z") | Set z value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`) |
| [`set_z_index`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z_index "manim.mobject.mobject.Mobject.set_z_index") | Sets the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
's `z_index` to the value specified in z\_index\_value. |
| [`set_z_index_by_z_Point3D`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z_index_by_z_Point3D "manim.mobject.mobject.Mobject.set_z_index_by_z_Point3D") | Sets the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
's z Point3D to the value of `z_index`. |
| [`shift`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shift "manim.mobject.mobject.Mobject.shift") | Shift by the given vectors. |
| `shift_onto_screen` | |
| `show` | |
| [`shuffle`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shuffle "manim.mobject.mobject.Mobject.shuffle") | Shuffles the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
. |
| [`shuffle_submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shuffle_submobjects "manim.mobject.mobject.Mobject.shuffle_submobjects") | Shuffles the order of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects") |
| [`sort`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.sort "manim.mobject.mobject.Mobject.sort") | Sorts the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
by a function defined by `submob_func`. |
| [`sort_submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.sort_submobjects "manim.mobject.mobject.Mobject.sort_submobjects") | Sort the [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects") |
| `space_out_submobjects` | |
| `split` | |
| `stretch` | |
| `stretch_about_point` | |
| [`stretch_to_fit_depth`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_depth "manim.mobject.mobject.Mobject.stretch_to_fit_depth") | Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a depth, not keeping width/height proportional. |
| [`stretch_to_fit_height`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_height "manim.mobject.mobject.Mobject.stretch_to_fit_height") | Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a height, not keeping width/depth proportional. |
| [`stretch_to_fit_width`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_width "manim.mobject.mobject.Mobject.stretch_to_fit_width") | Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a width, not keeping height/depth proportional. |
| `surround` | |
| [`suspend_updating`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.suspend_updating "manim.mobject.mobject.Mobject.suspend_updating") | Disable updating from updaters and animations. |
| `throw_error_if_no_points` | |
| [`to_corner`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.to_corner "manim.mobject.mobject.Mobject.to_corner") | Moves this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to the given corner of the screen. |
| [`to_edge`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.to_edge "manim.mobject.mobject.Mobject.to_edge") | Moves this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to the given edge of the screen, without affecting its position in the other dimension. |
| `to_original_color` | |
| [`update`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.update "manim.mobject.mobject.Mobject.update") | Apply all updaters. |
Attributes
| | |
| --- | --- |
| [`always`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.always "manim.mobject.mobject.Mobject.always") | Call a method on a mobject every frame. |
| [`animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate") | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| [`depth`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.depth "manim.mobject.mobject.Mobject.depth") | The depth of the mobject. |
| [`height`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.height "manim.mobject.mobject.Mobject.height") | The height of the mobject. |
| [`width`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.width "manim.mobject.mobject.Mobject.width") | The width of the mobject. |
classmethod \_add\_intrinsic\_animation\_overrides()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject._add_intrinsic_animation_overrides)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject._add_intrinsic_animation_overrides "Link to this definition")
Initializes animation overrides marked with the [`override_animation()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.html#manim.animation.animation.override_animation "manim.animation.animation.override_animation")
decorator.
Return type:
None
\_assert\_valid\_submobjects(_submobjects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject._assert_valid_submobjects)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject._assert_valid_submobjects "Link to this definition")
Check that all submobjects are actually instances of [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, and that none of them is `self` (a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
cannot contain itself).
This is an auxiliary function called when adding Mobjects to the [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
list.
This function is intended to be overridden by subclasses such as `VMobject`, which should assert that only other VMobjects may be added into it.
Parameters:
**submobjects** (_Iterable__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The list containing values to validate.
Returns:
The Mobject itself.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Raises:
* **TypeError** – If any of the values in submobjects is not a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **ValueError** – If there was an attempt to add a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as its own submobject.
add(_\*mobjects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.add)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add "Link to this definition")
Add mobjects as submobjects.
The mobjects are added to [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
.
Subclasses of mobject may implement `+` and `+=` dunder methods.
Parameters:
**mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobjects to add.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Raises:
* **ValueError** – When a mobject tries to add itself.
* **TypeError** – When trying to add an object that is not an instance of [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Notes
A mobject cannot contain itself, and it cannot contain a submobject more than once. If the parent mobject is displayed, the newly-added submobjects will also be displayed (i.e. they are automatically added to the parent Scene).
See also
[`remove()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove "manim.mobject.mobject.Mobject.remove")
, [`add_to_back()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "manim.mobject.mobject.Mobject.add_to_back")
Examples
\>>> outer \= Mobject()
\>>> inner \= Mobject()
\>>> outer \= outer.add(inner)
Duplicates are not added again:
\>>> outer \= outer.add(inner)
\>>> len(outer.submobjects)
1
Only Mobjects can be added:
\>>> outer.add(3)
Traceback (most recent call last):
...
TypeError: Only values of type Mobject can be added as submobjects of Mobject, but the value 3 (at index 0) is of type int.
Adding an object to itself raises an error:
\>>> outer.add(outer)
Traceback (most recent call last):
...
ValueError: Cannot add Mobject as a submobject of itself (at index 0).
A given mobject cannot be added as a submobject twice to some parent:
\>>> parent \= Mobject(name\="parent")
\>>> child \= Mobject(name\="child")
\>>> parent.add(child, child)
\[...\] WARNING ...
parent
\>>> parent.submobjects
\[child\]
classmethod add\_animation\_override(_animation\_class_, _override\_func_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.add_animation_override)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_animation_override "Link to this definition")
Add an animation override.
This does not apply to subclasses.
Parameters:
* **animation\_class** (_type__\[_[_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The animation type to be overridden
* **override\_func** ([_FunctionOverride_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FunctionOverride "manim.typing.FunctionOverride")
) – The function returning an animation replacing the default animation. It gets passed the parameters given to the animation constructor.
Raises:
**MultiAnimationOverrideException** – If the overridden animation was already overridden.
Return type:
None
add\_background\_rectangle(_color\=None_, _opacity\=0.75_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.add_background_rectangle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_background_rectangle "Link to this definition")
Add a BackgroundRectangle as submobject.
The BackgroundRectangle is added behind other submobjects.
This can be used to increase the mobjects visibility in front of a noisy background.
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_) – The color of the BackgroundRectangle
* **opacity** (_float_) – The opacity of the BackgroundRectangle
* **kwargs** – Additional keyword arguments passed to the BackgroundRectangle constructor
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`add_to_back()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "manim.mobject.mobject.Mobject.add_to_back")
, [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
add\_to\_back(_\*mobjects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.add_to_back)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "Link to this definition")
Add all passed mobjects to the back of the submobjects.
If [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
already contains the given mobjects, they just get moved to the back instead.
Parameters:
**mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobjects to add.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
Technically, this is done by adding (or moving) the mobjects to the head of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
. The head of this list is rendered first, which places the corresponding mobjects behind the subsequent list members.
Raises:
* **ValueError** – When a mobject tries to add itself.
* **TypeError** – When trying to add an object that is not an instance of [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
Notes
A mobject cannot contain itself, and it cannot contain a submobject more than once. If the parent mobject is displayed, the newly-added submobjects will also be displayed (i.e. they are automatically added to the parent Scene).
See also
[`remove()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove "manim.mobject.mobject.Mobject.remove")
, [`add()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add "manim.mobject.mobject.Mobject.add")
add\_updater(_update\_function_, _index\=None_, _call\_updater\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.add_updater)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "Link to this definition")
Add an update function to this mobject.
Update functions, or updaters in short, are functions that are applied to the Mobject in every frame.
Parameters:
* **update\_function** ([_Updater_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.Updater "manim.mobject.mobject.Updater")
) – The update function to be added. Whenever [`update()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.update "manim.mobject.mobject.Mobject.update")
is called, this update function gets called using `self` as the first parameter. The updater can have a second parameter `dt`. If it uses this parameter, it gets called using a second value `dt`, usually representing the time in seconds since the last call of [`update()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.update "manim.mobject.mobject.Mobject.update")
.
* **index** (_int_ _|_ _None_) – The index at which the new updater should be added in `self.updaters`. In case `index` is `None` the updater will be added at the end.
* **call\_updater** (_bool_) – Whether or not to call the updater initially. If `True`, the updater will be called using `dt=0`.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: NextToUpdater [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#nexttoupdater)
from manim import \*
class NextToUpdater(Scene):
def construct(self):
def update\_label(mobject):
mobject.set\_value(dot.get\_center()\[0\])
mobject.next\_to(dot)
dot \= Dot(RIGHT\*3)
label \= DecimalNumber()
label.add\_updater(update\_label)
self.add(dot, label)
self.play(Rotating(dot, angle\=TAU, about\_point\=ORIGIN, run\_time\=TAU, rate\_func\=linear))
class NextToUpdater(Scene):
def construct(self):
def update\_label(mobject):
mobject.set\_value(dot.get\_center()\[0\])
mobject.next\_to(dot)
dot = Dot(RIGHT\*3)
label = DecimalNumber()
label.add\_updater(update\_label)
self.add(dot, label)
self.play(Rotating(dot, angle=TAU, about\_point=ORIGIN, run\_time=TAU, rate\_func=linear))
Example: DtUpdater [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#dtupdater)
from manim import \*
class DtUpdater(Scene):
def construct(self):
square \= Square()
#Let the square rotate 90° per second
square.add\_updater(lambda mobject, dt: mobject.rotate(dt\*90\*DEGREES))
self.add(square)
self.wait(2)
class DtUpdater(Scene):
def construct(self):
square = Square()
#Let the square rotate 90° per second
square.add\_updater(lambda mobject, dt: mobject.rotate(dt\*90\*DEGREES))
self.add(square)
self.wait(2)
See also
[`get_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters")
, [`remove_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove_updater "manim.mobject.mobject.Mobject.remove_updater")
, [`UpdateFromFunc`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.update.UpdateFromFunc.html#manim.animation.updaters.update.UpdateFromFunc "manim.animation.updaters.update.UpdateFromFunc")
, [`Rotating`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotating.html#manim.animation.rotation.Rotating "manim.animation.rotation.Rotating")
, [`rotate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "manim.mobject.mobject.Mobject.rotate")
, [`animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
align\_data(_mobject_, _skip\_point\_alignment\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.align_data)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_data "Link to this definition")
Aligns the family structure and data of this mobject with another mobject.
Afterwards, the two mobjects will have the same number of submobjects (see `align_submobjects()`) and the same parent structure (see [`null_point_align()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.null_point_align "manim.mobject.mobject.Mobject.null_point_align")
). If `skip_point_alignment` is `False`, they will also have the same number of points (see [`align_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.align_points "manim.mobject.types.vectorized_mobject.VMobject.align_points")
).
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The other mobject this mobject should be aligned to.
* **skip\_point\_alignment** (_bool_) – Controls whether or not the computationally expensive point alignment is skipped (default: `False`).
Return type:
None
Note
This method is primarily used internally by [`become()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "manim.mobject.mobject.Mobject.become")
and the [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
animation to ensure that mobjects are structurally compatible before transformation.
Examples
\>>> from manim import Rectangle, Line, ORIGIN, RIGHT
\>>> rect \= Rectangle(width\=4.0, height\=2.0, grid\_xstep\=1.0, grid\_ystep\=0.5)
\>>> line \= Line(start\=ORIGIN,end\=RIGHT)
\>>> line.align\_data(rect)
\>>> len(line.get\_family()) \== len(rect.get\_family())
True
\>>> line.get\_num\_points() \== rect.get\_num\_points()
True
See also
[`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
, [`become()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "manim.mobject.mobject.Mobject.become")
, [`align_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.align_points "manim.mobject.types.vectorized_mobject.VMobject.align_points")
, [`get_family()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "manim.mobject.mobject.Mobject.get_family")
align\_on\_border(_direction_, _buff\=0.5_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.align_on_border)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_on_border "Link to this definition")
Direction just needs to be a vector pointing towards side or corner in the 2d plane.
Parameters:
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
Return type:
Self
align\_to(_mobject\_or\_point_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.align_to)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_to "Link to this definition")
Aligns mobject to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in a certain direction.
Examples: mob1.align\_to(mob2, UP) moves mob1 vertically so that its top edge lines ups with mob2’s top edge.
Parameters:
* **mobject\_or\_point** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
property always: Self[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.always "Link to this definition")
Call a method on a mobject every frame.
This is syntactic sugar for `mob.add_updater(lambda m: m.method(*args, **kwargs), call_updater=True)`. Note that this will call the method immediately. If this behavior is not desired, you should use [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
directly.
Warning
Chaining of methods is allowed, but each method will be added as its own updater. If you are chaining methods, make sure they do not interfere with each other or you may get unexpected results.
Warning
[`always`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.always "manim.mobject.mobject.Mobject.always")
is not compatible with [`ValueTracker.get_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker.get_value "manim.mobject.value_tracker.ValueTracker.get_value")
, because the value will be computed once and then never updated again. Use [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
if you would like to use a [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
to update the value.
Example
Example: AlwaysExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#alwaysexample)
from manim import \*
class AlwaysExample(Scene):
def construct(self):
sq \= Square().to\_edge(LEFT)
t \= Text("Hello World!")
t.always.next\_to(sq, UP)
self.add(sq, t)
self.play(sq.animate.to\_edge(RIGHT))
class AlwaysExample(Scene):
def construct(self):
sq = Square().to\_edge(LEFT)
t = Text("Hello World!")
t.always.next\_to(sq, UP)
self.add(sq, t)
self.play(sq.animate.to\_edge(RIGHT))
property animate: \_AnimationBuilder | Self[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "Link to this definition")
Used to animate the application of any method of `self`.
Any method called on `animate` is converted to an animation of applying that method on the mobject itself.
For example, `square.set_fill(WHITE)` sets the fill color of a square, while `square.animate.set_fill(WHITE)` animates this action.
Multiple methods can be put in a single animation once via chaining:
self.play(my\_mobject.animate.shift(RIGHT).rotate(PI))
Warning
Passing multiple animations for the same [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in one call to [`play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
is discouraged and will most likely not work properly. Instead of writing an animation like
self.play(
my\_mobject.animate.shift(RIGHT), my\_mobject.animate.rotate(PI)
)
make use of method chaining.
Keyword arguments that can be passed to [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
can be passed directly after accessing `.animate`, like so:
self.play(my\_mobject.animate(rate\_func\=linear).shift(RIGHT))
This is especially useful when animating simultaneous `.animate` calls that you want to behave differently:
self.play(
mobject1.animate(run\_time\=2).rotate(PI),
mobject2.animate(rate\_func\=there\_and\_back).shift(RIGHT),
)
See also
[`override_animate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.override_animate "manim.mobject.mobject.override_animate")
Examples
Example: AnimateExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#animateexample)
from manim import \*
class AnimateExample(Scene):
def construct(self):
s \= Square()
self.play(Create(s))
self.play(s.animate.shift(RIGHT))
self.play(s.animate.scale(2))
self.play(s.animate.rotate(PI / 2))
self.play(Uncreate(s))
class AnimateExample(Scene):
def construct(self):
s = Square()
self.play(Create(s))
self.play(s.animate.shift(RIGHT))
self.play(s.animate.scale(2))
self.play(s.animate.rotate(PI / 2))
self.play(Uncreate(s))
Example: AnimateChainExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#animatechainexample)
from manim import \*
class AnimateChainExample(Scene):
def construct(self):
s \= Square()
self.play(Create(s))
self.play(s.animate.shift(RIGHT).scale(2).rotate(PI / 2))
self.play(Uncreate(s))
class AnimateChainExample(Scene):
def construct(self):
s = Square()
self.play(Create(s))
self.play(s.animate.shift(RIGHT).scale(2).rotate(PI / 2))
self.play(Uncreate(s))
Example: AnimateWithArgsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#animatewithargsexample)
from manim import \*
class AnimateWithArgsExample(Scene):
def construct(self):
s \= Square()
c \= Circle()
VGroup(s, c).arrange(RIGHT, buff\=2)
self.add(s, c)
self.play(
s.animate(run\_time\=2).rotate(PI / 2),
c.animate(rate\_func\=there\_and\_back).shift(RIGHT),
)
class AnimateWithArgsExample(Scene):
def construct(self):
s = Square()
c = Circle()
VGroup(s, c).arrange(RIGHT, buff=2)
self.add(s, c)
self.play(
s.animate(run\_time=2).rotate(PI / 2),
c.animate(rate\_func=there\_and\_back).shift(RIGHT),
)
Warning
`.animate`
will interpolate the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
between its points prior to `.animate` and its points after applying `.animate` to it. This may result in unexpected behavior when attempting to interpolate along paths, or rotations (see [`rotate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "manim.mobject.mobject.Mobject.rotate")
). If you want animations to consider the points between, consider using [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
with updaters instead (see [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
).
classmethod animation\_override\_for(_animation\_class_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.animation_override_for)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animation_override_for "Link to this definition")
Returns the function defining a specific animation override for this class.
Parameters:
**animation\_class** (_type__\[_[_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The animation class for which the override function should be returned.
Returns:
The function returning the override animation or `None` if no such animation override is defined.
Return type:
Optional\[Callable\[\[[Mobject](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
, …\], [Animation](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
\]\]
apply\_complex\_function(_function_, _\*_, _about\_point\=None_, _about\_edge\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.apply_complex_function)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.apply_complex_function "Link to this definition")
Applies a complex function to a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. The x and y Point3Ds correspond to the real and imaginary parts respectively.
Example
Example: ApplyFuncExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#applyfuncexample)
from manim import \*
class ApplyFuncExample(Scene):
def construct(self):
circ \= Circle().scale(1.5)
circ\_ref \= circ.copy()
circ.apply\_complex\_function(
lambda x: np.exp(x\*1j)
)
t \= ValueTracker(0)
circ.add\_updater(
lambda x: x.become(circ\_ref.copy().apply\_complex\_function(
lambda x: np.exp(x+t.get\_value()\*1j)
)).set\_color(BLUE)
)
self.add(circ\_ref)
self.play(TransformFromCopy(circ\_ref, circ))
self.play(t.animate.set\_value(TAU), run\_time\=3)
class ApplyFuncExample(Scene):
def construct(self):
circ = Circle().scale(1.5)
circ\_ref = circ.copy()
circ.apply\_complex\_function(
lambda x: np.exp(x\*1j)
)
t = ValueTracker(0)
circ.add\_updater(
lambda x: x.become(circ\_ref.copy().apply\_complex\_function(
lambda x: np.exp(x+t.get\_value()\*1j)
)).set\_color(BLUE)
)
self.add(circ\_ref)
self.play(TransformFromCopy(circ\_ref, circ))
self.play(t.animate.set\_value(TAU), run\_time=3)
Parameters:
* **function** (_Callable__\[__\[__complex__\]__,_ _complex__\]_)
* **about\_point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ _None_)
* **about\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
_|_ _None_)
Return type:
Self
apply\_to\_family(_func_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.apply_to_family)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.apply_to_family "Link to this definition")
Apply a function to `self` and every submobject with points recursively.
Parameters:
**func** (_Callable__\[__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]__,_ _None__\]_) – The function to apply to each mobject. `func` gets passed the respective (sub)mobject as parameter.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`family_members_with_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.family_members_with_points "manim.mobject.mobject.Mobject.family_members_with_points")
arrange(_direction\=array(\[1., 0., 0.\])_, _buff\=0.25_, _center\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.arrange)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange "Link to this definition")
Sorts [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
next to each other on screen.
Examples
Example: Example [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#example)

from manim import \*
class Example(Scene):
def construct(self):
s1 \= Square()
s2 \= Square()
s3 \= Square()
s4 \= Square()
x \= VGroup(s1, s2, s3, s4).set\_x(0).arrange(buff\=1.0)
self.add(x)
class Example(Scene):
def construct(self):
s1 = Square()
s2 = Square()
s3 = Square()
s4 = Square()
x = VGroup(s1, s2, s3, s4).set\_x(0).arrange(buff=1.0)
self.add(x)
Parameters:
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
* **center** (_bool_)
Return type:
Self
arrange\_in\_grid(_rows\=None_, _cols\=None_, _buff\=0.25_, _cell\_alignment\=array(\[0., 0., 0.\])_, _row\_alignments\=None_, _col\_alignments\=None_, _row\_heights\=None_, _col\_widths\=None_, _flow\_order\='rd'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.arrange_in_grid)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "Link to this definition")
Arrange submobjects in a grid.
Parameters:
* **rows** (_int_ _|_ _None_) – The number of rows in the grid.
* **cols** (_int_ _|_ _None_) – The number of columns in the grid.
* **buff** (_float_ _|_ _tuple__\[__float__,_ _float__\]_) – The gap between grid cells. To specify a different buffer in the horizontal and vertical directions, a tuple of two values can be given - `(row, col)`.
* **cell\_alignment** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The way each submobject is aligned in its grid cell.
* **row\_alignments** (_str_ _|_ _None_) – The vertical alignment for each row (top to bottom). Accepts the following characters: `"u"` - up, `"c"` - center, `"d"` - down.
* **col\_alignments** (_str_ _|_ _None_) – The horizontal alignment for each column (left to right). Accepts the following characters `"l"` - left, `"c"` - center, `"r"` - right.
* **row\_heights** (_Iterable__\[__float_ _|_ _None__\]_ _|_ _None_) – Defines a list of heights for certain rows (top to bottom). If the list contains `None`, the corresponding row will fit its height automatically based on the highest element in that row.
* **col\_widths** (_Iterable__\[__float_ _|_ _None__\]_ _|_ _None_) – Defines a list of widths for certain columns (left to right). If the list contains `None`, the corresponding column will fit its width automatically based on the widest element in that column.
* **flow\_order** (_str_) – The order in which submobjects fill the grid. Can be one of the following values: “rd”, “dr”, “ld”, “dl”, “ru”, “ur”, “lu”, “ul”. (“rd” -> fill rightwards then downwards)
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Raises:
* **ValueError** – If `rows` and `cols` are too small to fit all submobjects.
* **ValueError** – If `cols`, `col_alignments` and `col_widths` or `rows`, `row_alignments` and `row_heights` have mismatching sizes.
Notes
If only one of `cols` and `rows` is set implicitly, the other one will be chosen big enough to fit all submobjects. If neither is set, they will be chosen to be about the same, tending towards `cols` > `rows` (simply because videos are wider than they are high).
If both `cell_alignment` and `row_alignments` / `col_alignments` are defined, the latter has higher priority.
Examples
Example: ExampleBoxes [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#exampleboxes)

from manim import \*
class ExampleBoxes(Scene):
def construct(self):
boxes\=VGroup(\*\[Square() for s in range(0,6)\])
boxes.arrange\_in\_grid(rows\=2, buff\=0.1)
self.add(boxes)
class ExampleBoxes(Scene):
def construct(self):
boxes=VGroup(\*\[Square() for s in range(0,6)\])
boxes.arrange\_in\_grid(rows=2, buff=0.1)
self.add(boxes)
Example: ArrangeInGrid [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#arrangeingrid)

from manim import \*
class ArrangeInGrid(Scene):
def construct(self):
boxes \= VGroup(\*\[\
Rectangle(WHITE, 0.5, 0.5).add(Text(str(i+1)).scale(0.5))\
for i in range(24)\
\])
self.add(boxes)
boxes.arrange\_in\_grid(
buff\=(0.25,0.5),
col\_alignments\="lccccr",
row\_alignments\="uccd",
col\_widths\=\[1, \*\[None\]\*4, 1\],
row\_heights\=\[1, None, None, 1\],
flow\_order\="dr"
)
class ArrangeInGrid(Scene):
def construct(self):
boxes = VGroup(\*\[\
Rectangle(WHITE, 0.5, 0.5).add(Text(str(i+1)).scale(0.5))\
for i in range(24)\
\])
self.add(boxes)
boxes.arrange\_in\_grid(
buff=(0.25,0.5),
col\_alignments="lccccr",
row\_alignments="uccd",
col\_widths=\[1, \*\[None\]\*4, 1\],
row\_heights=\[1, None, None, 1\],
flow\_order="dr"
)
arrange\_submobjects(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.arrange_submobjects)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_submobjects "Link to this definition")
Arrange the position of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
with a small buffer.
Examples
Example: ArrangeSumobjectsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#arrangesumobjectsexample)

from manim import \*
class ArrangeSumobjectsExample(Scene):
def construct(self):
s\= VGroup(\*\[Dot().shift(i\*0.1\*RIGHT\*np.random.uniform(\-1,1)+UP\*np.random.uniform(\-1,1)) for i in range(0,15)\])
s.shift(UP).set\_color(BLUE)
s2\= s.copy().set\_color(RED)
s2.arrange\_submobjects()
s2.shift(DOWN)
self.add(s,s2)
class ArrangeSumobjectsExample(Scene):
def construct(self):
s= VGroup(\*\[Dot().shift(i\*0.1\*RIGHT\*np.random.uniform(-1,1)+UP\*np.random.uniform(-1,1)) for i in range(0,15)\])
s.shift(UP).set\_color(BLUE)
s2= s.copy().set\_color(RED)
s2.arrange\_submobjects()
s2.shift(DOWN)
self.add(s,s2)
Return type:
Self
become(_mobject_, _match\_height\=False_, _match\_width\=False_, _match\_depth\=False_, _match\_center\=False_, _stretch\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.become)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "Link to this definition")
Edit points, colors and submobjects to be identical to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
If both match\_height and match\_width are `True` then the transformed [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
will match the height first and then the width.
Parameters:
* **match\_height** (_bool_) – Whether or not to preserve the height of the original [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **match\_width** (_bool_) – Whether or not to preserve the width of the original [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **match\_depth** (_bool_) – Whether or not to preserve the depth of the original [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **match\_center** (_bool_) – Whether or not to preserve the center of the original [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **stretch** (_bool_) – Whether or not to stretch the target mobject to match the the proportions of the original [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
Examples
Example: BecomeScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#becomescene)
from manim import \*
class BecomeScene(Scene):
def construct(self):
circ \= Circle(fill\_color\=RED, fill\_opacity\=0.8)
square \= Square(fill\_color\=BLUE, fill\_opacity\=0.2)
self.add(circ)
self.wait(0.5)
circ.become(square)
self.wait(0.5)
class BecomeScene(Scene):
def construct(self):
circ = Circle(fill\_color=RED, fill\_opacity=0.8)
square = Square(fill\_color=BLUE, fill\_opacity=0.2)
self.add(circ)
self.wait(0.5)
circ.become(square)
self.wait(0.5)
The following examples illustrate how mobject measurements change when using the `match_...` and `stretch` arguments. We start with a rectangle that is 2 units high and 4 units wide, which we want to turn into a circle of radius 3:
\>>> from manim import Rectangle, Circle
\>>> import numpy as np
\>>> rect \= Rectangle(height\=2, width\=4)
\>>> circ \= Circle(radius\=3)
With `stretch=True`, the target circle is deformed to match the proportions of the rectangle, which results in the target mobject being an ellipse with height 2 and width 4. We can check that the resulting points satisfy the ellipse equation \\(x^2/a^2 + y^2/b^2 = 1\\) with \\(a = 4/2\\) and \\(b = 2/2\\) being the semi-axes:
\>>> result \= rect.copy().become(circ, stretch\=True)
\>>> result.height, result.width
(np.float64(2.0), np.float64(4.0))
\>>> ellipse\_points \= np.array(result.get\_anchors())
\>>> ellipse\_eq \= np.sum(ellipse\_points\*\*2 \* \[1/4, 1, 0\], axis\=1)
\>>> np.allclose(ellipse\_eq, 1)
True
With `match_height=True` and `match_width=True` the circle is scaled such that the height or the width of the rectangle will be preserved, respectively. The points of the resulting mobject satisfy the circle equation \\(x^2 + y^2 = r^2\\) for the corresponding radius \\(r\\):
\>>> result \= rect.copy().become(circ, match\_height\=True)
\>>> result.height, result.width
(np.float64(2.0), np.float64(2.0))
\>>> circle\_points \= np.array(result.get\_anchors())
\>>> circle\_eq \= np.sum(circle\_points\*\*2, axis\=1)
\>>> np.allclose(circle\_eq, 1)
True
\>>> result \= rect.copy().become(circ, match\_width\=True)
\>>> result.height, result.width
(np.float64(4.0), np.float64(4.0))
\>>> circle\_points \= np.array(result.get\_anchors())
\>>> circle\_eq \= np.sum(circle\_points\*\*2, axis\=1)
\>>> np.allclose(circle\_eq, 2\*\*2)
True
With `match_center=True`, the resulting mobject is moved such that its center is the same as the center of the original mobject:
\>>> rect \= rect.shift(np.array(\[0, 1, 0\]))
\>>> np.allclose(rect.get\_center(), circ.get\_center())
False
\>>> result \= rect.copy().become(circ, match\_center\=True)
\>>> np.allclose(rect.get\_center(), result.get\_center())
True
See also
[`align_data()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_data "manim.mobject.mobject.Mobject.align_data")
, `interpolate_color()`
center()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.center)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.center "Link to this definition")
Moves the center of the mobject to the center of the scene.
Returns:
The centered mobject.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
clear\_updaters(_recursive\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.clear_updaters)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.clear_updaters "Link to this definition")
Remove every updater.
Parameters:
**recursive** (_bool_) – Whether to recursively call `clear_updaters` on all submobjects.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`remove_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove_updater "manim.mobject.mobject.Mobject.remove_updater")
, [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`get_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters")
copy()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.copy)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.copy "Link to this definition")
Create and return an identical copy of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
including all [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
.
Returns:
The copy.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
The clone is initially not visible in the Scene, even if the original was.
property depth: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.depth "Link to this definition")
The depth of the mobject.
Return type:
`float`
See also
[`length_over_dim()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.length_over_dim "manim.mobject.mobject.Mobject.length_over_dim")
family\_members\_with\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.family_members_with_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.family_members_with_points "Link to this definition")
Filters the list of family members (generated by [`get_family()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "manim.mobject.mobject.Mobject.get_family")
) to include only mobjects with points.
Returns:
A list of mobjects that have points.
Return type:
list\[[Mobject](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
\]
Examples
\>>> from manim import Square, Rectangle, VGroup, Group, Mobject, VMobject
\>>> s, r, m, v \= Square(), Rectangle(), Mobject(), VMobject()
\>>> vg \= VGroup(s, r)
\>>> gr \= Group(vg, m, v)
\>>> gr.family\_members\_with\_points()
\[Square, Rectangle\]
See also
[`get_family()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "manim.mobject.mobject.Mobject.get_family")
flip(_axis\=array(\[0., 1., 0.\])_, _\*_, _about\_point\=None_, _about\_edge\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.flip)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.flip "Link to this definition")
Flips/Mirrors an mobject about its center.
Examples
Example: FlipExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#flipexample)

from manim import \*
class FlipExample(Scene):
def construct(self):
s\= Line(LEFT, RIGHT+UP).shift(4\*LEFT)
self.add(s)
s2\= s.copy().flip()
self.add(s2)
class FlipExample(Scene):
def construct(self):
s= Line(LEFT, RIGHT+UP).shift(4\*LEFT)
self.add(s)
s2= s.copy().flip()
self.add(s2)
Parameters:
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **about\_point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ _None_)
* **about\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
_|_ _None_)
Return type:
Self
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.generate_points "Link to this definition")
Initializes [`points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.points "manim.mobject.mobject.Mobject.points")
and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
object
get\_all\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_all_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_all_points "Link to this definition")
Return all points from this mobject and all submobjects.
May contain duplicates; the order is in a depth-first (pre-order) traversal of the submobjects.
Return type:
[_Point3D\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
get\_bottom()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_bottom)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_bottom "Link to this definition")
Get bottom Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_center()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_center)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_center "Link to this definition")
Get center Point3Ds
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_color()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_color "Link to this definition")
Returns the color of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
\>>> from manim import Square, RED
\>>> Square(color\=RED).get\_color() \== RED
True
Return type:
[_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
get\_coord(_dim_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_coord)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_coord "Link to this definition")
Meant to generalize `get_x`, `get_y` and `get_z`
Parameters:
* **dim** (_int_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
float
get\_corner(_direction_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_corner)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_corner "Link to this definition")
Get corner Point3Ds for certain direction.
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_critical\_point(_direction_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_critical_point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_critical_point "Link to this definition")
Picture a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. Such a box has 9 ‘critical points’: 4 corners, 4 edge center, the center. This returns one of them, along the given direction.
sample \= Arc(start\_angle\=PI / 7, angle\=PI / 5)
\# These are all equivalent
max\_y\_1 \= sample.get\_top()\[1\]
max\_y\_2 \= sample.get\_critical\_point(UP)\[1\]
max\_y\_3 \= sample.get\_extremum\_along\_dim(dim\=1, key\=1)
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_edge\_center(_direction_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_edge_center)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_edge_center "Link to this definition")
Get edge Point3Ds for certain direction.
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_end "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_family(_recurse\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_family)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_family "Link to this definition")
Lists all mobjects in the hierarchy (family) of the given mobject, including the mobject itself and all its submobjects recursively.
Parameters:
**recurse** (_bool_) – Just for consistency with get\_family method in OpenGLMobject.
Returns:
A list of mobjects in the family of the given mobject.
Return type:
list\[[Mobject](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
\]
Examples
\>>> from manim import Square, Rectangle, VGroup, Group, Mobject, VMobject
\>>> s, r, m, v \= Square(), Rectangle(), Mobject(), VMobject()
\>>> vg \= VGroup(s, r)
\>>> gr \= Group(vg, m, v)
\>>> gr.get\_family()
\[Group, VGroup(Square, Rectangle), Square, Rectangle, Mobject, VMobject\]
See also
[`family_members_with_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.family_members_with_points "manim.mobject.mobject.Mobject.family_members_with_points")
, [`align_data()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_data "manim.mobject.mobject.Mobject.align_data")
get\_left()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_left)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_left "Link to this definition")
Get left Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_merged\_array(_array\_attr_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_merged_array)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_merged_array "Link to this definition")
Return all of a given attribute from this mobject and all submobjects.
May contain duplicates; the order is in a depth-first (pre-order) traversal of the submobjects.
Parameters:
**array\_attr** (_str_)
Return type:
_ndarray_
get\_midpoint()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_midpoint)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_midpoint "Link to this definition")
Get Point3Ds of the middle of the path that forms the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Examples
Example: AngleMidPoint [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#anglemidpoint)

from manim import \*
class AngleMidPoint(Scene):
def construct(self):
line1 \= Line(ORIGIN, 2\*RIGHT)
line2 \= Line(ORIGIN, 2\*RIGHT).rotate\_about\_origin(80\*DEGREES)
a \= Angle(line1, line2, radius\=1.5, other\_angle\=False)
d \= Dot(a.get\_midpoint()).set\_color(RED)
self.add(line1, line2, a, d)
self.wait()
class AngleMidPoint(Scene):
def construct(self):
line1 = Line(ORIGIN, 2\*RIGHT)
line2 = Line(ORIGIN, 2\*RIGHT).rotate\_about\_origin(80\*DEGREES)
a = Angle(line1, line2, radius=1.5, other\_angle=False)
d = Dot(a.get\_midpoint()).set\_color(RED)
self.add(line1, line2, a, d)
self.wait()
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
static get\_mobject\_type\_class()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_mobject_type_class)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_mobject_type_class "Link to this definition")
Return the base class of this mobject type.
Return type:
type\[[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
\]
get\_nadir()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_nadir)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_nadir "Link to this definition")
Get nadir (opposite the zenith) Point3Ds of a box bounding a 3D [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_point\_mobject(_center\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_point_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_point_mobject "Link to this definition")
The simplest [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to be transformed to or from self. Should by a point of the appropriate type
get\_right()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_right)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_right "Link to this definition")
Get right Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_start()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_start)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_start "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_start\_and\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_start_and_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_start_and_end "Link to this definition")
Returns starting and ending point of a stroke as a `tuple`.
Return type:
tuple\[TypeAliasForwardRef(‘~manim.typing.Point3D’), TypeAliasForwardRef(‘~manim.typing.Point3D’)\]
get\_time\_based\_updaters()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_time_based_updaters)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_time_based_updaters "Link to this definition")
Return all updaters using the `dt` parameter.
The updaters use this parameter as the input for difference in time.
Returns:
The list of time based updaters.
Return type:
List\[`Callable`\]
See also
[`get_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters")
, [`has_time_based_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_time_based_updater "manim.mobject.mobject.Mobject.has_time_based_updater")
get\_top()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_top)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_top "Link to this definition")
Get top Point3Ds of a box bounding the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_updaters()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_updaters)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "Link to this definition")
Return all updaters.
Returns:
The list of updaters.
Return type:
List\[`Callable`\]
See also
[`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`get_time_based_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_time_based_updaters "manim.mobject.mobject.Mobject.get_time_based_updaters")
get\_x(_direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_x)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_x "Link to this definition")
Returns x Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float`
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
float
get\_y(_direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_y)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_y "Link to this definition")
Returns y Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float`
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
float
get\_z(_direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_z)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_z "Link to this definition")
Returns z Point3D of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
as `float`
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
float
get\_zenith()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.get_zenith)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_zenith "Link to this definition")
Get zenith Point3Ds of a box bounding a 3D [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
has\_no\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.has_no_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_no_points "Link to this definition")
Check if [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_does not_ contains points.
Return type:
bool
has\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.has_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_points "Link to this definition")
Check if [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
contains points.
Return type:
bool
has\_time\_based\_updater()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.has_time_based_updater)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.has_time_based_updater "Link to this definition")
Test if `self` has a time based updater.
Returns:
`True` if at least one updater uses the `dt` parameter, `False` otherwise.
Return type:
`bool`
See also
[`get_time_based_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_time_based_updaters "manim.mobject.mobject.Mobject.get_time_based_updaters")
property height: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.height "Link to this definition")
The height of the mobject.
Return type:
`float`
Examples
Example: HeightExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#heightexample)
from manim import \*
class HeightExample(Scene):
def construct(self):
decimal \= DecimalNumber().to\_edge(UP)
rect \= Rectangle(color\=BLUE)
rect\_copy \= rect.copy().set\_stroke(GRAY, opacity\=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.height))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(height\=5))
self.wait()
class HeightExample(Scene):
def construct(self):
decimal = DecimalNumber().to\_edge(UP)
rect = Rectangle(color=BLUE)
rect\_copy = rect.copy().set\_stroke(GRAY, opacity=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.height))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(height=5))
self.wait()
See also
[`length_over_dim()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.length_over_dim "manim.mobject.mobject.Mobject.length_over_dim")
init\_colors()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.init_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.init_colors "Link to this definition")
Initializes the colors.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
object
insert(_index_, _mobject_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.insert)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.insert "Link to this definition")
Inserts a mobject at a specific position into self.submobjects
Effectively just calls `self.submobjects.insert(index, mobject)`, where `self.submobjects` is a list.
Highly adapted from `Mobject.add`.
Parameters:
* **index** (_int_) – The index at which
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject to be inserted.
Return type:
None
interpolate(_mobject1_, _mobject2_, _alpha_, _path\_func\=_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.interpolate)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.interpolate "Link to this definition")
Turns this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
into an interpolation between `mobject1` and `mobject2`.
The interpolation is applied to the points and color of the mobject.
Parameters:
* **mobject1** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The starting Mobject.
* **mobject2** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The target Mobject.
* **alpha** (_float_) – Interpolation factor between 0 (at `mobject1`) and 1 (at `mobject2`).
* **path\_func** ([_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
) – The function defining the interpolation path. Defaults to a straight path.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
* Both mobjects must have the same number of points. If not, this will raise an error. Use [`align_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.align_points "manim.mobject.types.vectorized_mobject.VMobject.align_points")
to match point counts beforehand if needed.
* This method is used internally by the [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
animation to interpolate between two mobjects during a transformation.
Examples
Example: InterpolateExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#interpolateexample)

from manim import \*
class InterpolateExample(Scene):
def construct(self):
\# No need for point alignment:
dotL \= Dot(color\=DARK\_GREY).to\_edge(LEFT)
dotR \= Dot(color\=YELLOW).scale(10).to\_edge(RIGHT)
dotMid1 \= VMobject().interpolate(dotL, dotR, alpha\=0.1)
dotMid2 \= VMobject().interpolate(dotL, dotR, alpha\=0.25)
dotMid3 \= VMobject().interpolate(dotL, dotR, alpha\=0.5)
dotMid4 \= VMobject().interpolate(dotL, dotR, alpha\=0.75)
dots \= VGroup(dotL, dotR, dotMid1, dotMid2, dotMid3, dotMid4)
\# Needs point alignment:
line \= Line(ORIGIN, UP).to\_edge(LEFT)
sq \= Square(color\=RED, fill\_opacity\=1, stroke\_color\=BLUE).to\_edge(RIGHT)
line.align\_points(sq)
mid1 \= VMobject().interpolate(line, sq, alpha\=0.1)
mid2 \= VMobject().interpolate(line, sq, alpha\=0.25)
mid3 \= VMobject().interpolate(line, sq, alpha\=0.5)
mid4 \= VMobject().interpolate(line, sq, alpha\=0.75)
linesquares \= VGroup(line, sq, mid1, mid2, mid3, mid4)
self.add(VGroup(dots, linesquares).arrange(DOWN, buff\=1))
class InterpolateExample(Scene):
def construct(self):
# No need for point alignment:
dotL = Dot(color=DARK\_GREY).to\_edge(LEFT)
dotR = Dot(color=YELLOW).scale(10).to\_edge(RIGHT)
dotMid1 = VMobject().interpolate(dotL, dotR, alpha=0.1)
dotMid2 = VMobject().interpolate(dotL, dotR, alpha=0.25)
dotMid3 = VMobject().interpolate(dotL, dotR, alpha=0.5)
dotMid4 = VMobject().interpolate(dotL, dotR, alpha=0.75)
dots = VGroup(dotL, dotR, dotMid1, dotMid2, dotMid3, dotMid4)
# Needs point alignment:
line = Line(ORIGIN, UP).to\_edge(LEFT)
sq = Square(color=RED, fill\_opacity=1, stroke\_color=BLUE).to\_edge(RIGHT)
line.align\_points(sq)
mid1 = VMobject().interpolate(line, sq, alpha=0.1)
mid2 = VMobject().interpolate(line, sq, alpha=0.25)
mid3 = VMobject().interpolate(line, sq, alpha=0.5)
mid4 = VMobject().interpolate(line, sq, alpha=0.75)
linesquares = VGroup(line, sq, mid1, mid2, mid3, mid4)
self.add(VGroup(dots, linesquares).arrange(DOWN, buff=1))
See also
[`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
, [`align_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.align_points "manim.mobject.types.vectorized_mobject.VMobject.align_points")
, `interpolate_color()`
invert(_recursive\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.invert)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.invert "Link to this definition")
Inverts the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
.
Parameters:
**recursive** (_bool_) – If `True`, all submobject lists of this mobject’s family are inverted.
Return type:
None
Examples
Example: InvertSumobjectsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#invertsumobjectsexample)
from manim import \*
class InvertSumobjectsExample(Scene):
def construct(self):
s \= VGroup(\*\[Dot().shift(i\*0.1\*RIGHT) for i in range(\-20,20)\])
s2 \= s.copy()
s2.invert()
s2.shift(DOWN)
self.play(Write(s), Write(s2))
class InvertSumobjectsExample(Scene):
def construct(self):
s = VGroup(\*\[Dot().shift(i\*0.1\*RIGHT) for i in range(-20,20)\])
s2 = s.copy()
s2.invert()
s2.shift(DOWN)
self.play(Write(s), Write(s2))
length\_over\_dim(_dim_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.length_over_dim)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.length_over_dim "Link to this definition")
Measure the length of an [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in a certain direction.
Parameters:
**dim** (_int_)
Return type:
float
match\_color(_mobject_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_color "Link to this definition")
Match the color with the color of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_coord(_mobject_, _dim_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_coord)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_coord "Link to this definition")
Match the Point3Ds with the Point3Ds of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **dim** (_int_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
match\_depth(_mobject_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_depth)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_depth "Link to this definition")
Match the depth with the depth of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_dim\_size(_mobject_, _dim_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_dim_size)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_dim_size "Link to this definition")
Match the specified dimension with the dimension of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **dim** (_int_)
Return type:
Self
match\_height(_mobject_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_height)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_height "Link to this definition")
Match the height with the height of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_points(_mobject_, _copy\_submobjects\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_points "Link to this definition")
Edit points, positions, and submobjects to be identical to another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, while keeping the style unchanged.
Examples
Example: MatchPointsScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#matchpointsscene)
from manim import \*
class MatchPointsScene(Scene):
def construct(self):
circ \= Circle(fill\_color\=RED, fill\_opacity\=0.8)
square \= Square(fill\_color\=BLUE, fill\_opacity\=0.2)
self.add(circ)
self.wait(0.5)
self.play(circ.animate.match\_points(square))
self.wait(0.5)
class MatchPointsScene(Scene):
def construct(self):
circ = Circle(fill\_color=RED, fill\_opacity=0.8)
square = Square(fill\_color=BLUE, fill\_opacity=0.2)
self.add(circ)
self.wait(0.5)
self.play(circ.animate.match\_points(square))
self.wait(0.5)
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **copy\_submobjects** (_bool_)
Return type:
Self
match\_updaters(_mobject_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_updaters)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_updaters "Link to this definition")
Match the updaters of the given mobject.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject whose updaters get matched.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
All updaters from submobjects are removed, but only updaters of the given mobject are matched, not those of it’s submobjects.
See also
[`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`clear_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.clear_updaters "manim.mobject.mobject.Mobject.clear_updaters")
match\_width(_mobject_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_width)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_width "Link to this definition")
Match the width with the width of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_x(_mobject_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_x)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_x "Link to this definition")
Match x coord. to the x coord. of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_y(_mobject_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_y)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_y "Link to this definition")
Match y coord. to the x coord. of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
match\_z(_mobject_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.match_z)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_z "Link to this definition")
Match z coord. to the x coord. of another [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
Return type:
Self
move\_to(_point\_or\_mobject_, _aligned\_edge\=array(\[0., 0., 0.\])_, _coor\_mask\=array(\[1, 1, 1\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.move_to)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.move_to "Link to this definition")
Move center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to certain Point3D.
Parameters:
* **point\_or\_mobject** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ [_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **aligned\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **coor\_mask** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
next\_to(_mobject\_or\_point_, _direction\=array(\[1., 0., 0.\])_, _buff\=0.25_, _aligned\_edge\=array(\[0., 0., 0.\])_, _submobject\_to\_align\=None_, _index\_of\_submobject\_to\_align\=None_, _coor\_mask\=array(\[1, 1, 1\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.next_to)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.next_to "Link to this definition")
Move this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
next to another’s [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
or Point3D.
Examples
Example: GeometricShapes [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#geometricshapes)

from manim import \*
class GeometricShapes(Scene):
def construct(self):
d \= Dot()
c \= Circle()
s \= Square()
t \= Triangle()
d.next\_to(c, RIGHT)
s.next\_to(c, LEFT)
t.next\_to(c, DOWN)
self.add(d, c, s, t)
class GeometricShapes(Scene):
def construct(self):
d = Dot()
c = Circle()
s = Square()
t = Triangle()
d.next\_to(c, RIGHT)
s.next\_to(c, LEFT)
t.next\_to(c, DOWN)
self.add(d, c, s, t)
Parameters:
* **mobject\_or\_point** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ [_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
* **aligned\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **submobject\_to\_align** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _None_)
* **index\_of\_submobject\_to\_align** (_int_ _|_ _None_)
* **coor\_mask** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
null\_point\_align(_mobject_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.null_point_align)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.null_point_align "Link to this definition")
If a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
with points is being aligned to one without, treat both as groups, and push the one with points into its own submobjects list.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
**mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
reduce\_across\_dimension(_reduce\_func_, _dim_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.reduce_across_dimension)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.reduce_across_dimension "Link to this definition")
Find the min or max value from a dimension across all points in this and submobjects.
Parameters:
* **reduce\_func** (_Callable_)
* **dim** (_int_)
remove(_\*mobjects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.remove)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove "Link to this definition")
Remove [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
.
The mobjects are removed from [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
, if they exist.
Subclasses of mobject may implement `-` and `-=` dunder methods.
Parameters:
**mobjects** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobjects to remove.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`add()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add "manim.mobject.mobject.Mobject.add")
remove\_updater(_update\_function_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.remove_updater)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.remove_updater "Link to this definition")
Remove an updater.
If the same updater is applied multiple times, every instance gets removed.
Parameters:
**update\_function** ([_Updater_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#manim.mobject.mobject.Updater "manim.mobject.mobject.Updater")
) – The update function to be removed.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`clear_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.clear_updaters "manim.mobject.mobject.Mobject.clear_updaters")
, [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`get_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters")
repeat(_count_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.repeat)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.repeat "Link to this definition")
This can make transition animations nicer
Parameters:
**count** (_int_)
Return type:
Self
reset\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.reset_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.reset_points "Link to this definition")
Sets [`points`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.points "manim.mobject.mobject.Mobject.points")
to be an empty array.
Return type:
Self
restore()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.restore)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.restore "Link to this definition")
Restores the state that was previously saved with [`save_state()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_state "manim.mobject.mobject.Mobject.save_state")
.
Return type:
Self
resume\_updating(_recursive\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.resume_updating)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.resume_updating "Link to this definition")
Enable updating from updaters and animations.
Parameters:
**recursive** (_bool_) – Whether to recursively enable updating on all submobjects.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`suspend_updating()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.suspend_updating "manim.mobject.mobject.Mobject.suspend_updating")
, [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
rotate(_angle_, _axis\=array(\[0., 0., 1.\])_, _\*_, _about\_point\=None_, _about\_edge\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.rotate)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "Link to this definition")
Rotates the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
around a specified axis and point.
Parameters:
* **angle** (_float_) – The angle of rotation in radians. Predefined constants such as `DEGREES` can also be used to specify the angle in degrees.
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The rotation axis (see [`Rotating`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotating.html#manim.animation.rotation.Rotating "manim.animation.rotation.Rotating")
for more).
* **about\_point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ _None_) – The point about which the mobject rotates. If `None`, rotation occurs around the center of the mobject.
* **about\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
_|_ _None_) – The edge about which to apply the scaling.
Returns:
`self` (for method chaining)
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Note
To animate a rotation, use [`Rotating`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotating.html#manim.animation.rotation.Rotating "manim.animation.rotation.Rotating")
or [`Rotate`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotate.html#manim.animation.rotation.Rotate "manim.animation.rotation.Rotate")
instead of `.animate.rotate(...)`. The `.animate.rotate(...)` syntax only applies a transformation from the initial state to the final rotated state (interpolation between the two states), without showing proper rotational motion based on the angle (from 0 to the given angle).
Examples
Example: RotateMethodExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#rotatemethodexample)

from manim import \*
class RotateMethodExample(Scene):
def construct(self):
circle \= Circle(radius\=1, color\=BLUE)
line \= Line(start\=ORIGIN, end\=RIGHT)
arrow1 \= Arrow(start\=ORIGIN, end\=RIGHT, buff\=0, color\=GOLD)
group1 \= VGroup(circle, line, arrow1)
group2 \= group1.copy()
arrow2 \= group2\[2\]
arrow2.rotate(angle\=PI / 4, about\_point\=arrow2.get\_start())
group3 \= group1.copy()
arrow3 \= group3\[2\]
arrow3.rotate(angle\=120 \* DEGREES, about\_point\=arrow3.get\_start())
self.add(VGroup(group1, group2, group3).arrange(RIGHT, buff\=1))
class RotateMethodExample(Scene):
def construct(self):
circle = Circle(radius=1, color=BLUE)
line = Line(start=ORIGIN, end=RIGHT)
arrow1 = Arrow(start=ORIGIN, end=RIGHT, buff=0, color=GOLD)
group1 = VGroup(circle, line, arrow1)
group2 = group1.copy()
arrow2 = group2\[2\]
arrow2.rotate(angle=PI / 4, about\_point=arrow2.get\_start())
group3 = group1.copy()
arrow3 = group3\[2\]
arrow3.rotate(angle=120 \* DEGREES, about\_point=arrow3.get\_start())
self.add(VGroup(group1, group2, group3).arrange(RIGHT, buff=1))
See also
[`Rotating`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotating.html#manim.animation.rotation.Rotating "manim.animation.rotation.Rotating")
, [`Rotate`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotate.html#manim.animation.rotation.Rotate "manim.animation.rotation.Rotate")
, [`animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
, `apply_points_function_about_point()`
rotate\_about\_origin(_angle_, _axis\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.rotate_about_origin)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate_about_origin "Link to this definition")
Rotates the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
about the ORIGIN, which is at \[0,0,0\].
Parameters:
* **angle** (_float_)
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
save\_image(_name\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.save_image)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_image "Link to this definition")
Saves an image of only this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
at its position to a png file.
Parameters:
**name** (_str_ _|_ _None_)
Return type:
None
save\_state()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.save_state)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.save_state "Link to this definition")
Save the current state (position, color & size). Can be restored with [`restore()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.restore "manim.mobject.mobject.Mobject.restore")
.
Return type:
Self
scale(_scale\_factor_, _\*_, _about\_point\=None_, _about\_edge\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.scale)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "Link to this definition")
Scale the size by a factor.
Default behavior is to scale about the center of the mobject.
Parameters:
* **scale\_factor** (_float_) – The scaling factor \\(\\alpha\\). If \\(0 < |\\alpha| < 1\\), the mobject will shrink, and for \\(|\\alpha| > 1\\) it will grow. Furthermore, if \\(\\alpha < 0\\), the mobject is also flipped.
* **about\_point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
_|_ _None_) – The point about which to apply the scaling.
* **about\_edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
_|_ _None_) – The edge about which to apply the scaling.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: MobjectScaleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#mobjectscaleexample)

from manim import \*
class MobjectScaleExample(Scene):
def construct(self):
f1 \= Text("F")
f2 \= Text("F").scale(2)
f3 \= Text("F").scale(0.5)
f4 \= Text("F").scale(\-1)
vgroup \= VGroup(f1, f2, f3, f4).arrange(6 \* RIGHT)
self.add(vgroup)
class MobjectScaleExample(Scene):
def construct(self):
f1 = Text("F")
f2 = Text("F").scale(2)
f3 = Text("F").scale(0.5)
f4 = Text("F").scale(-1)
vgroup = VGroup(f1, f2, f3, f4).arrange(6 \* RIGHT)
self.add(vgroup)
See also
[`move_to()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.move_to "manim.mobject.mobject.Mobject.move_to")
scale\_to\_fit\_depth(_depth_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.scale_to_fit_depth)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_depth "Link to this definition")
Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a depth while keeping width/height proportional.
Parameters:
**depth** (_float_)
Return type:
Self
scale\_to\_fit\_height(_height_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.scale_to_fit_height)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_height "Link to this definition")
Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a height while keeping width/depth proportional.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
**height** (_float_)
Examples
\>>> from manim import \*
\>>> sq \= Square()
\>>> sq.width
np.float64(2.0)
\>>> sq.scale\_to\_fit\_height(5)
Square
\>>> sq.height
np.float64(5.0)
\>>> sq.width
np.float64(5.0)
scale\_to\_fit\_width(_width_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.scale_to_fit_width)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale_to_fit_width "Link to this definition")
Scales the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a width while keeping height/depth proportional.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
**width** (_float_)
Examples
\>>> from manim import \*
\>>> sq \= Square()
\>>> sq.height
np.float64(2.0)
\>>> sq.scale\_to\_fit\_width(5)
Square
\>>> sq.width
np.float64(5.0)
\>>> sq.height
np.float64(5.0)
set(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set "Link to this definition")
Sets attributes.
I.e. `my_mobject.set(foo=1)` applies `my_mobject.foo = 1`.
This is a convenience to be used along with [`animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
to animate setting attributes.
In addition to this method, there is a compatibility layer that allows `get_*` and `set_*` methods to get and set generic attributes. For instance:
\>>> mob \= Mobject()
\>>> mob.set\_foo(0)
Mobject
\>>> mob.get\_foo()
0
\>>> mob.foo
0
This compatibility layer does not interfere with any `get_*` or `set_*` methods that are explicitly defined.
Warning
This compatibility layer is for backwards compatibility and is not guaranteed to stay around. Where applicable, please prefer getting/setting attributes normally or with the [`set()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set "manim.mobject.mobject.Mobject.set")
method.
Parameters:
**\*\*kwargs** – The attributes and corresponding values to set.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
\>>> mob \= Mobject()
\>>> mob.set(foo\=0)
Mobject
\>>> mob.foo
0
set\_color(_color\=ManimColor('#FFFF00')_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_color "Link to this definition")
Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings of color
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **family** (_bool_)
Return type:
Self
set\_color\_by\_gradient(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_color_by_gradient)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_color_by_gradient "Link to this definition")
Parameters:
* **colors** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The colors to use for the gradient. Use like set\_color\_by\_gradient(RED, BLUE, GREEN).
* **ManimColor.parse****(****color****)** (_self.color =_)
* **self** (_return_)
Return type:
Self
classmethod set\_default(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_default)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_default "Link to this definition")
Sets the default values of keyword arguments.
If this method is called without any additional keyword arguments, the original default values of the initialization method of this class are restored.
Parameters:
**kwargs** – Passing any keyword argument will update the default values of the keyword arguments of the initialization function of this class.
Return type:
None
Examples
\>>> from manim import Square, GREEN
\>>> Square.set\_default(color\=GREEN, fill\_opacity\=0.25)
\>>> s \= Square(); s.color, s.fill\_opacity
(ManimColor('#83C167'), 0.25)
\>>> Square.set\_default()
\>>> s \= Square(); s.color, s.fill\_opacity
(ManimColor('#FFFFFF'), 0.0)
Example: ChangedDefaultTextcolor [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#changeddefaulttextcolor)

from manim import \*
config.background\_color \= WHITE
class ChangedDefaultTextcolor(Scene):
def construct(self):
Text.set\_default(color\=BLACK)
self.add(Text("Changing default values is easy!"))
\# we revert the colour back to the default to prevent a bug in the docs.
Text.set\_default(color\=WHITE)
config.background\_color = WHITE
class ChangedDefaultTextcolor(Scene):
def construct(self):
Text.set\_default(color=BLACK)
self.add(Text("Changing default values is easy!"))
# we revert the colour back to the default to prevent a bug in the docs.
Text.set\_default(color=WHITE)
set\_x(_x_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_x)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_x "Link to this definition")
Set x value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`)
Parameters:
* **x** (_float_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
set\_y(_y_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_y)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_y "Link to this definition")
Set y value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`)
Parameters:
* **y** (_float_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
set\_z(_z_, _direction\=array(\[0., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_z)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z "Link to this definition")
Set z value of the center of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(`int` or `float`)
Parameters:
* **z** (_float_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
Self
set\_z\_index(_z\_index\_value_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_z_index)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z_index "Link to this definition")
Sets the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
’s `z_index` to the value specified in z\_index\_value.
Parameters:
* **z\_index\_value** (_float_) – The new value of `z_index` set.
* **family** (_bool_) – If `True`, the `z_index` value of all submobjects is also set.
Returns:
The Mobject itself, after `z_index` is set. For chaining purposes. (Returns self.)
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
Example: SetZIndex [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#setzindex)

from manim import \*
class SetZIndex(Scene):
def construct(self):
text \= Text('z\_index = 3', color \= PURE\_RED).shift(UP).set\_z\_index(3)
square \= Square(2, fill\_opacity\=1).set\_z\_index(2)
tex \= Tex(r'zIndex = 1', color \= PURE\_BLUE).shift(DOWN).set\_z\_index(1)
circle \= Circle(radius \= 1.7, color \= GREEN, fill\_opacity \= 1) \# z\_index = 0
\# Displaying order is now defined by z\_index values
self.add(text)
self.add(square)
self.add(tex)
self.add(circle)
class SetZIndex(Scene):
def construct(self):
text = Text('z\_index = 3', color = PURE\_RED).shift(UP).set\_z\_index(3)
square = Square(2, fill\_opacity=1).set\_z\_index(2)
tex = Tex(r'zIndex = 1', color = PURE\_BLUE).shift(DOWN).set\_z\_index(1)
circle = Circle(radius = 1.7, color = GREEN, fill\_opacity = 1) # z\_index = 0
# Displaying order is now defined by z\_index values
self.add(text)
self.add(square)
self.add(tex)
self.add(circle)
set\_z\_index\_by\_z\_Point3D()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.set_z_index_by_z_Point3D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z_index_by_z_Point3D "Link to this definition")
Sets the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
’s z Point3D to the value of `z_index`.
Returns:
The Mobject itself, after `z_index` is set. (Returns self.)
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
shift(_\*vectors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.shift)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shift "Link to this definition")
Shift by the given vectors.
Parameters:
**vectors** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Vectors to shift by. If multiple vectors are given, they are added together.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`move_to()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.move_to "manim.mobject.mobject.Mobject.move_to")
shuffle(_recursive\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.shuffle)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shuffle "Link to this definition")
Shuffles the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
.
Parameters:
**recursive** (_bool_)
Return type:
None
shuffle\_submobjects(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.shuffle_submobjects)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.shuffle_submobjects "Link to this definition")
Shuffles the order of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
Examples
Example: ShuffleSubmobjectsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#shufflesubmobjectsexample)
from manim import \*
class ShuffleSubmobjectsExample(Scene):
def construct(self):
s\= VGroup(\*\[Dot().shift(i\*0.1\*RIGHT) for i in range(\-20,20)\])
s2\= s.copy()
s2.shuffle\_submobjects()
s2.shift(DOWN)
self.play(Write(s), Write(s2))
class ShuffleSubmobjectsExample(Scene):
def construct(self):
s= VGroup(\*\[Dot().shift(i\*0.1\*RIGHT) for i in range(-20,20)\])
s2= s.copy()
s2.shuffle\_submobjects()
s2.shift(DOWN)
self.play(Write(s), Write(s2))
Return type:
None
sort(_point\_to\_num\_func\=>_, _submob\_func\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.sort)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.sort "Link to this definition")
Sorts the list of [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
by a function defined by `submob_func`.
Parameters:
* **point\_to\_num\_func** (_Callable__\[__\[_[_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
_\]__,_ _float__\]_)
* **submob\_func** (_Callable__\[__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]__,_ _Any__\]_ _|_ _None_)
Return type:
Self
sort\_submobjects(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.sort_submobjects)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.sort_submobjects "Link to this definition")
Sort the [`submobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.submobjects "manim.mobject.mobject.Mobject.submobjects")
Return type:
Self
stretch\_to\_fit\_depth(_depth_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.stretch_to_fit_depth)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_depth "Link to this definition")
Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a depth, not keeping width/height proportional.
Parameters:
**depth** (_float_)
Return type:
Self
stretch\_to\_fit\_height(_height_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.stretch_to_fit_height)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_height "Link to this definition")
Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a height, not keeping width/depth proportional.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
**height** (_float_)
Examples
\>>> from manim import \*
\>>> sq \= Square()
\>>> sq.width
np.float64(2.0)
\>>> sq.stretch\_to\_fit\_height(5)
Square
\>>> sq.height
np.float64(5.0)
\>>> sq.width
np.float64(2.0)
stretch\_to\_fit\_width(_width_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.stretch_to_fit_width)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.stretch_to_fit_width "Link to this definition")
Stretches the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to fit a width, not keeping height/depth proportional.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
**width** (_float_)
Examples
\>>> from manim import \*
\>>> sq \= Square()
\>>> sq.height
np.float64(2.0)
\>>> sq.stretch\_to\_fit\_width(5)
Square
\>>> sq.width
np.float64(5.0)
\>>> sq.height
np.float64(2.0)
suspend\_updating(_recursive\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.suspend_updating)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.suspend_updating "Link to this definition")
Disable updating from updaters and animations.
Parameters:
**recursive** (_bool_) – Whether to recursively suspend updating on all submobjects.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`resume_updating()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.resume_updating "manim.mobject.mobject.Mobject.resume_updating")
, [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
to\_corner(_corner\=array(\[-1., \-1., 0.\])_, _buff\=0.5_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.to_corner)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.to_corner "Link to this definition")
Moves this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to the given corner of the screen.
Returns:
The newly positioned mobject.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
* **corner** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
Examples
Example: ToCornerExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#tocornerexample)

from manim import \*
class ToCornerExample(Scene):
def construct(self):
c \= Circle()
c.to\_corner(UR)
t \= Tex("To the corner!")
t2 \= MathTex("x^3").shift(DOWN)
self.add(c,t,t2)
t.to\_corner(DL, buff\=0)
t2.to\_corner(UL, buff\=1.5)
class ToCornerExample(Scene):
def construct(self):
c = Circle()
c.to\_corner(UR)
t = Tex("To the corner!")
t2 = MathTex("x^3").shift(DOWN)
self.add(c,t,t2)
t.to\_corner(DL, buff=0)
t2.to\_corner(UL, buff=1.5)
to\_edge(_edge\=array(\[-1., 0., 0.\])_, _buff\=0.5_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.to_edge)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.to_edge "Link to this definition")
Moves this [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to the given edge of the screen, without affecting its position in the other dimension.
Returns:
The newly positioned mobject.
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Parameters:
* **edge** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **buff** (_float_)
Examples
Example: ToEdgeExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#toedgeexample)

from manim import \*
class ToEdgeExample(Scene):
def construct(self):
tex\_top \= Tex("I am at the top!")
tex\_top.to\_edge(UP)
tex\_side \= Tex("I am moving to the side!")
c \= Circle().shift(2\*DOWN)
self.add(tex\_top, tex\_side, c)
tex\_side.to\_edge(LEFT)
c.to\_edge(RIGHT, buff\=0)
class ToEdgeExample(Scene):
def construct(self):
tex\_top = Tex("I am at the top!")
tex\_top.to\_edge(UP)
tex\_side = Tex("I am moving to the side!")
c = Circle().shift(2\*DOWN)
self.add(tex\_top, tex\_side, c)
tex\_side.to\_edge(LEFT)
c.to\_edge(RIGHT, buff=0)
update(_dt\=0_, _recursive\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/mobject.html#Mobject.update)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.update "Link to this definition")
Apply all updaters.
Does nothing if updating is suspended.
Parameters:
* **dt** (_float_) – The parameter `dt` to pass to the update functions. Usually this is the time in seconds since the last call of `update`.
* **recursive** (_bool_) – Whether to recursively update all submobjects.
Returns:
`self`
Return type:
[`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
See also
[`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`get_updaters()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_updaters "manim.mobject.mobject.Mobject.get_updaters")
property width: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.width "Link to this definition")
The width of the mobject.
Return type:
`float`
Examples
Example: WidthExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#widthexample)
from manim import \*
class WidthExample(Scene):
def construct(self):
decimal \= DecimalNumber().to\_edge(UP)
rect \= Rectangle(color\=BLUE)
rect\_copy \= rect.copy().set\_stroke(GRAY, opacity\=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.width))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(width\=7))
self.wait()
class WidthExample(Scene):
def construct(self):
decimal = DecimalNumber().to\_edge(UP)
rect = Rectangle(color=BLUE)
rect\_copy = rect.copy().set\_stroke(GRAY, opacity=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.width))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(width=7))
self.wait()
See also
[`length_over_dim()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.length_over_dim "manim.mobject.mobject.Mobject.length_over_dim")
---
# v0.4.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.4.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.4.0-changelog.rst "Edit this page")
v0.4.0[¶](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#v0-4-0 "Link to this heading")
===============================================================================================================
Date:
March 3, 2021
The changes since Manim Community release v0.3.0 are listed below.
Breaking Changes[¶](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#breaking-changes "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------
* [PR #915](https://github.com/ManimCommunity/manim/pull/915)
: Manim’s SVG engine has been reworked and is able to handle a wider variations of SVG files. In particular: fill and stroke properties are now retained from the original files. Breaking change: `VMobjectFromSVGPathstring` is deprecated and has been renamed to `SVGPathMobject`.
New Features[¶](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#new-features "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
* [PR #1026](https://github.com/ManimCommunity/manim/pull/1026)
: Add 3D Mobjects: [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
, [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
, [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
, [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D")
and [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
* [PR #1047](https://github.com/ManimCommunity/manim/pull/1047)
: Add documentation and examples for [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
* [PR #1044](https://github.com/ManimCommunity/manim/pull/1044)
: `register_font` is available for macOS
* [PR #995](https://github.com/ManimCommunity/manim/pull/995)
: Add generic `set()` method and compatibility layer between properties and `get_*`/`set_*` methods
Bugfixes and Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html#bugfixes-and-enhancements "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------------
* [PR #981](https://github.com/ManimCommunity/manim/pull/981)
: Fixed hot reload functionality for the WebGL renderer on Windows
* [PR #1053](https://github.com/ManimCommunity/manim/pull/1053)
: Repair links to source code in stable version of documentation
* [PR #1067](https://github.com/ManimCommunity/manim/pull/1067)
: Add ManimPango to ReadTheDocs requirements
* [PR #1058](https://github.com/ManimCommunity/manim/pull/1058)
: Replace `` syntax by Pango’s `` for coloring parts of [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
and allow using colors for underline, overline and strikethrough in MarkupText
* [PR #1063](https://github.com/ManimCommunity/manim/pull/1063)
: Fix documentation related to `.animate`
* [PR #1065](https://github.com/ManimCommunity/manim/pull/1065)
: Remove duplicate word ‘vector’
* [PR #1060](https://github.com/ManimCommunity/manim/pull/1060)
: Update Linux installation instructions to mention the installation of Pango
* [PR #1050](https://github.com/ManimCommunity/manim/pull/1050)
: Ensure that the user-supplied stroke color and width gets applied to [`Cross`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#manim.mobject.geometry.shape_matchers.Cross "manim.mobject.geometry.shape_matchers.Cross")
* [PR #1059](https://github.com/ManimCommunity/manim/pull/1059)
: More descriptive error when accessing an unhandled mobject attribute
* [PR #1048](https://github.com/ManimCommunity/manim/pull/1048)
: Use absolute path in `make_and_open_docs.py`
* [PR #1000](https://github.com/ManimCommunity/manim/pull/1000)
: Remove `MovingCameraScene.setup` and `MovingCameraScene.camera_frame`
* [PR #1051](https://github.com/ManimCommunity/manim/pull/1051)
: Corrections for setting stroke related attributes on [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
* [PR #1043](https://github.com/ManimCommunity/manim/pull/1043)
: Make [`CubicBezier`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.CubicBezier.html#manim.mobject.geometry.arc.CubicBezier "manim.mobject.geometry.arc.CubicBezier")
explicitly accept four points
* [PR #1046](https://github.com/ManimCommunity/manim/pull/1046)
: Use any version of `importlib-metadata`
* [PR #1030](https://github.com/ManimCommunity/manim/pull/1030)
: Parse `.log` file and try to print LaTeX errors if compilation fails
* [PR #1015](https://github.com/ManimCommunity/manim/pull/1015)
: Documentation: Add more explicit instructions related to `tlmgr`
* [PR #1028](https://github.com/ManimCommunity/manim/pull/1028)
: Documentation: Update installation guide on mac with Apple Silicon
* [PR #1032](https://github.com/ManimCommunity/manim/pull/1032)
: Remove `Square.side_length` property
* [PR #1031](https://github.com/ManimCommunity/manim/pull/1031)
: Fix link to wikipedia vector graphics page
* [PR #1021](https://github.com/ManimCommunity/manim/pull/1021)
: Documentation: Added example to [`CubicBezier`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.CubicBezier.html#manim.mobject.geometry.arc.CubicBezier "manim.mobject.geometry.arc.CubicBezier")
* [PR #1017](https://github.com/ManimCommunity/manim/pull/1017)
: Added `progress_bar` to `digest_args` to fix the `--progress_bar` CLI flag
* [PR #1018](https://github.com/ManimCommunity/manim/pull/1018)
: Remove redundancy in [`FunctionGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#manim.mobject.graphing.functions.FunctionGraph "manim.mobject.graphing.functions.FunctionGraph")
arguments
* [PR #1024](https://github.com/ManimCommunity/manim/pull/1024)
: Migrate `width` / `height` / `depth` to properties
* [PR #1022](https://github.com/ManimCommunity/manim/pull/1022)
: Fix `-p` flag when passing `-s`
* [PR #1008](https://github.com/ManimCommunity/manim/pull/1008)
: CI pipeline: fix release asset upload
* [PR #983](https://github.com/ManimCommunity/manim/pull/983)
: Make sure last frame for animations with updaters is correct
* [PR #984](https://github.com/ManimCommunity/manim/pull/984)
: Add manim version to CLI output, append version name for generated `.gif` and `.png` files, add version to metadata of rendered videos, change dark blue terminal text to default green
* [PR #993](https://github.com/ManimCommunity/manim/pull/993)
: Fix setting Mobject color to a gradient by passing a list of colors in [`set_color()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.set_color "manim.mobject.types.vectorized_mobject.VMobject.set_color")
* [PR #1003](https://github.com/ManimCommunity/manim/pull/1003)
: Fix animation [`GrowArrow`](https://docs.manim.community/en/stable/reference/manim.animation.growing.GrowArrow.html#manim.animation.growing.GrowArrow "manim.animation.growing.GrowArrow")
* [PR #1010](https://github.com/ManimCommunity/manim/pull/1010)
: Disable STDIN interaction for ffmpeg concat.
* [PR #969](https://github.com/ManimCommunity/manim/pull/969)
: Fix the `--tex_template` CLI flag
* [PR #989](https://github.com/ManimCommunity/manim/pull/989)
: Fix the `manim cfg export` subcommand
* [PR #1005](https://github.com/ManimCommunity/manim/pull/1005)
: Fix the feature where `-` is used as the filename
* [PR #998](https://github.com/ManimCommunity/manim/pull/998)
: Allow using hexadecimal color codes with 3 characters
* [PR #996](https://github.com/ManimCommunity/manim/pull/996)
: Changed the message of `manim --version` to not include “Edition”
---
# v0.6.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.6.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.6.0-changelog.rst "Edit this page")
v0.6.0[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#v0-6-0 "Link to this heading")
===============================================================================================================
Date:
May 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#contributors "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
A total of 40 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Abel Aebker
* Abhijith Muthyala
* Adam Ryczkowski +
* Alex Lembcke +
* Anton Ballmaier
* Aron
* Benjamin Hackl
* Darylgolden
* Deniz Hasler +
* Devin Neal
* Elisha Hollander +
* Erik Tastepe +
* Jan-Hendrik Müller
* Jason Villanueva
* Laith Bahodi
* Mark Miller
* Mohammad Al-Fetyani
* Naveen M K
* Newell Jensen +
* Nidhal Baccouri +
* Nikhil Garuda +
* Peilonrayz +
* Raghav Goel
* Ricky Chon +
* friedkeenan
* kamilczerwinski22 +
* sparshg
The patches included in this release have been reviewed by the following contributors.
* Aathish Sivasubrahmanian
* Abel Aebker
* Abhijith Muthyala
* Adam Ryczkowski
* Alex Lembcke
* Anton Ballmaier
* Aron
* Benjamin Hackl
* Darylgolden
* Deniz Hasler
* Devin Neal
* Elisha Hollander
* GameDungeon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* KingWampy
* Laith Bahodi
* Mark Miller
* Mohammad Al-Fetyani
* Naveen M K
* Nidhal Baccouri
* Nikhil Garuda
* Oliver
* Philipp Imhof
* Raghav Goel
* Ricky Chon
* friedkeenan
* sparshg
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#pull-requests-merged "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
A total of 112 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#breaking-changes "Link to this heading")
* [PR #1347](https://github.com/ManimCommunity/manim/pull/1347)
: Restructure vector\_field module and add documentation
:class\`~.VectorField\` is renamed to [`ArrowVectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField "manim.mobject.vector_field.ArrowVectorField")
and a new class [`VectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.VectorField.html#manim.mobject.vector_field.VectorField "manim.mobject.vector_field.VectorField")
is added as a superclass for [`ArrowVectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField "manim.mobject.vector_field.ArrowVectorField")
and [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines")
. `AnimatedStreamLines` is removed. It’s functionality is moved to [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines")
. Added a lot of new options when working with vector fields. [`ShowPassingFlashWithThinningStrokeWidth`](https://docs.manim.community/en/stable/reference/manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth.html#manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth "manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth")
was moved to the indication module.
* [PR #1161](https://github.com/ManimCommunity/manim/pull/1161)
: Upgrades to CoordinateSystem and graphing.
Breaking changes were introduced to [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
, [`ThreeDAxes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes")
, [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
and [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
All the above now use lists to construct their ranges as opposed to explicitly defining these values. x\_range has replaced x\_min, x\_max and defining the step is much easier with x\_step –> `x_range` : `[x_min, x_max, x_step]`. There were also many upgrades to these classes which improve their functionality and appearance.
`NumberLineOld` was introduced to continue support for `GraphScene`, although we are moving away from GraphScene and intend to deprecate it in a future release.
* [PR #1013](https://github.com/ManimCommunity/manim/pull/1013)
: Refactored the Command Line Interface to use Click instead of Argparse
This change breaks the CLI API to organize the structure of Manim Community’s commands, options, and arguments.
To be more in line with POSIX compliant CLI conventions, options for commands are given _BEFORE_ their arguments. In Argparse: `manim basic.py -p -ql` With Click: `manim -p -ql basic.py`
Although this is primarily a refactor and most of the common options are still there, some options have been added/removed. Use the `manim` command’s `--help` option, or simply run the command without providing options/arguments to view the help page with the full list of subcommands/options/arguments.
* Added a `--fps`/`--frame_rate` option which allows for custom fps that don’t have to be integer (i.e. 29.97, 23.98, etc.). Users no longer have to specify the FPS from within a config file. Additionally, the `--webgl_renderer_fps` option has been removed. Use `--fps` or `--frame_rate` instead.
* Added a `--renderer` option which you can use to select your choice of renderer (e.g. `--renderer=opengl`). There are currently _THREE_ renderers to choose from!
* Removed the `--background_color` option. Reassigned the `--background_color` option’s shorthand `-c` to `--config_file`.
* Removed the `--leave_progress_bars` option. Use `--progress_bars=leave` instead.
* Removed the deprecated render quality flags, in particular: `-l`, `-m`, `-h`, `-k`.
* Removed the `--sound` option. It lost support long ago with the removal of SoX.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1431](https://github.com/ManimCommunity/manim/pull/1431)
: Fix CLI bugs
* Fixed conflict with `-f` which was previously assigned to both `--show_in_file_browser` and `--format` by removing `-f` from `--format`. A warning is issued that `-f` will soon move to `--format`.
* Added back in flags to render the files as gif/last frame. Deprecated them in favor of `--format`.
* Fixed the broken `--output_file`/`-o` option.
* Fixed an issue where the `-qh` quality option was interpreted as `-q` `-h`, prompting the help page.
* [PR #1354](https://github.com/ManimCommunity/manim/pull/1354)
: Refactored a few functions in space\_ops.py, deprecated `angle_between()`
* [PR #1370](https://github.com/ManimCommunity/manim/pull/1370)
: Remove TexMobject and TextMobject
TexMobject and TextMobject have been deprecated for a while, they are now fully removed. Use Tex or MathTex instead.
* [PR #1349](https://github.com/ManimCommunity/manim/pull/1349)
: Removed the deprecated `SmallDot` mobject
* [PR #1259](https://github.com/ManimCommunity/manim/pull/1259)
: Removed deprecated CairoText class
### New features[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#new-features "Link to this heading")
* [PR #1386](https://github.com/ManimCommunity/manim/pull/1386)
: Implement utility methods for adding/removing vertices and edges of graphs; allow custom mobjects as vertices
* [PR #1385](https://github.com/ManimCommunity/manim/pull/1385)
: Added `get_line_graph()` for plotting a line graph
Added `get_line_graph()` that returns a line graph from lists of points along x, y and z (optional) axes.
* [PR #1381](https://github.com/ManimCommunity/manim/pull/1381)
: Hot reloading for the OpenGL renderer
Rerun scene when the input file is modified
* [PR #1383](https://github.com/ManimCommunity/manim/pull/1383)
: Overhaul of the [`indication`](https://docs.manim.community/en/stable/reference/manim.animation.indication.html#module-manim.animation.indication "manim.animation.indication")
module interfaces
* Added class Circumscribe combining functionality of CircleIndicate, AnimationOnSurroundingRectangle, ShowPassingFlashAround, ShowCreationThenDestructionAround, ShowCreationThenFadeAround, which have all been deprecated.
* Changes to Flash: flash\_radius parameter now defines inner radius of the animation. Added new parameter time\_width.
* ShowCreationThenDestruction has been deprecated in favor of ShowPassingFlash
* Changes to ApplyWave: New implementation giving more flexibility with new parameters wave\_func, time\_width and\`ripples\`
* Renamed WiggleOutThenIn to Wiggle (WiggleOutThenIn has been deprecated)
* Added documentation and examples to all the above
* Other minor enhancements and bug-fixes
* [PR #1348](https://github.com/ManimCommunity/manim/pull/1348)
: Added [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
, and platonic solids [`Tetrahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#manim.mobject.three_d.polyhedra.Tetrahedron "manim.mobject.three_d.polyhedra.Tetrahedron")
, [`Octahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#manim.mobject.three_d.polyhedra.Octahedron "manim.mobject.three_d.polyhedra.Octahedron")
, [`Icosahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#manim.mobject.three_d.polyhedra.Icosahedron "manim.mobject.three_d.polyhedra.Icosahedron")
and [`Dodecahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#manim.mobject.three_d.polyhedra.Dodecahedron "manim.mobject.three_d.polyhedra.Dodecahedron")
* [PR #1285](https://github.com/ManimCommunity/manim/pull/1285)
: Add [`interactive_embed()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.interactive_embed "manim.scene.scene.Scene.interactive_embed")
for OpenGL rendering
[`interactive_embed()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.interactive_embed "manim.scene.scene.Scene.interactive_embed")
allows interaction with Scene via mouse and keyboard as well as dynamic commands via an iPython terminal.
* [PR #1261](https://github.com/ManimCommunity/manim/pull/1261)
: Render image automatically if no animation is played in a scene
* If no animations in scene and asked to preview/render a video, preview/render an image instead of raising a confusing error.
* [PR #1200](https://github.com/ManimCommunity/manim/pull/1200)
: Add text and SVG mobjects to OpenGL
Added OpenGL-compatible text and SVG mobjects
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#enhancements "Link to this heading")
* [PR #1398](https://github.com/ManimCommunity/manim/pull/1398)
: Fix and enhance Mobject.arrange\_in\_grid
arrange\_in\_grid now actually arranges submobjects in a grid. Added new parameters buff, cell\_alignment, row\_alignments, col\_alignments, row\_heights, col\_widths, flow\_order.
* [PR #1407](https://github.com/ManimCommunity/manim/pull/1407)
: Fix bug and rename `vector_coordinate_label()` to [`coordinate_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector.coordinate_label "manim.mobject.geometry.line.Vector.coordinate_label")
and move it to `geometry.py`
* [PR #1380](https://github.com/ManimCommunity/manim/pull/1380)
: Allow image objects as background images
* [PR #1391](https://github.com/ManimCommunity/manim/pull/1391)
: Add path\_arc support to .animate syntax
The parameter path\_arc of [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
now works with the .animate syntax
* [PR #1364](https://github.com/ManimCommunity/manim/pull/1364)
: Added [`match_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.match_points "manim.mobject.mobject.Mobject.match_points")
* Added `match_points()`, which transforms the points, positions and submobjects of a Mobject to match that of the other while keeping style unchanged.
* [PR #1363](https://github.com/ManimCommunity/manim/pull/1363)
: Change of TeX compiler and output file format
* [PR #1359](https://github.com/ManimCommunity/manim/pull/1359)
: Make FILE a required argument
* Make FILE a required argument, manim/cli/render/commands.py:L30
* [PR #1304](https://github.com/ManimCommunity/manim/pull/1304)
: Improve Tex string splitting at double braces: only split for double brace groups
* [PR #1340](https://github.com/ManimCommunity/manim/pull/1340)
: Add OpenGL support to the new transform animations
Made FadeTransform, FadeTransformPieces, TransformMatchingShapes and TransformMatchingTex compatible with OpenGL rendering.
* [PR #1343](https://github.com/ManimCommunity/manim/pull/1343)
: Make TexTemplate() simple, but keep Tex()’s default template
TexTemplate() now returns a simple tex template.
* [PR #1321](https://github.com/ManimCommunity/manim/pull/1321)
: Add OpenGL support to [`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
* [PR #1302](https://github.com/ManimCommunity/manim/pull/1302)
: Raise appropriate errors in [`point_from_proportion()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion "manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion")
* Raise an error if the `alpha` argument is not between 0 and 1.
* Raise an error if the [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
has no points.
* [PR #1315](https://github.com/ManimCommunity/manim/pull/1315)
: Fix performance issues with [`get_arc_length()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.get_arc_length "manim.mobject.types.vectorized_mobject.VMobject.get_arc_length")
, stemming from [PR #1274](https://github.com/ManimCommunity/manim/pull/1274)
* [PR #1320](https://github.com/ManimCommunity/manim/pull/1320)
: Add jpeg extension to the default image extensions
* [PR #1234](https://github.com/ManimCommunity/manim/pull/1234)
: Added new method [`get_midpoint()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_midpoint "manim.mobject.mobject.Mobject.get_midpoint")
Implemented [`get_midpoint()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_midpoint "manim.mobject.mobject.Mobject.get_midpoint")
to return the point that is the middle of the stroke line of an mobject.
* [PR #1237](https://github.com/ManimCommunity/manim/pull/1237)
: Notify user if they are using an outdated version of Manim
* [PR #1308](https://github.com/ManimCommunity/manim/pull/1308)
: Improved [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
animations
* [PR #1275](https://github.com/ManimCommunity/manim/pull/1275)
: Add SVG element support to [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
* [PR #1238](https://github.com/ManimCommunity/manim/pull/1238)
: Add parameter `about_point` for [`rotate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "manim.mobject.mobject.Mobject.rotate")
* [PR #1260](https://github.com/ManimCommunity/manim/pull/1260)
: Change Brace from Tex to SVG (#1258)
* [PR #1122](https://github.com/ManimCommunity/manim/pull/1122)
: Support for specifying the interpolation algorithms for individual ImageMobjects
* [PR #1283](https://github.com/ManimCommunity/manim/pull/1283)
: Set default value of keyword `random_seed` in [`Scene`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene "manim.scene.scene.Scene")
to `None` (was 0 and fixed before)
* [PR #1220](https://github.com/ManimCommunity/manim/pull/1220)
: Added sanity checks to [`add_to_back()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "manim.mobject.mobject.Mobject.add_to_back")
for Mobjects
Add Mobject add\_to\_back sanity checks: - Raises ValueError when Mobject tries to add itself - Raises TypeError when a non-Mobject is added - Filters out incoming duplicate submobjects if at least one instance of that submobject exists in the list
* [PR #1249](https://github.com/ManimCommunity/manim/pull/1249)
: Set corners of [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
in counterclockwise direction
This improves the look of transformations between rectangles and other simple mobjects.
* [PR #1248](https://github.com/ManimCommunity/manim/pull/1248)
: Add Copy function to TexTemplate
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1368](https://github.com/ManimCommunity/manim/pull/1368)
: Added a check to ensure checking for the latest version was successful
* [PR #1413](https://github.com/ManimCommunity/manim/pull/1413)
: Prevent duplication of the same mobject when adding to submobjects via [`add_to_back()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_to_back "manim.mobject.mobject.Mobject.add_to_back")
Fixes #1412
* [PR #1395](https://github.com/ManimCommunity/manim/pull/1395)
: SVG transforms now handle exponent notation (6.02e23)
* [PR #1355](https://github.com/ManimCommunity/manim/pull/1355)
: Rewrite put\_start\_and\_end\_on to work in 3D
* [PR #1346](https://github.com/ManimCommunity/manim/pull/1346)
: Fixed errors introduced by stray print in [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
* [PR #1305](https://github.com/ManimCommunity/manim/pull/1305)
: Automatically remove long tick marks not within the range of the `NumberLine`
* [PR #1296](https://github.com/ManimCommunity/manim/pull/1296)
: Fix random pipeline TeX failures
* [PR #1274](https://github.com/ManimCommunity/manim/pull/1274)
: Fix [`point_from_proportion()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion "manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion")
to account for the length of curves.
* Add [`get_nth_curve_function_with_length()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.get_nth_curve_function_with_length "manim.mobject.types.vectorized_mobject.VMobject.get_nth_curve_function_with_length")
and associated functions.
* Change [`point_from_proportion()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion "manim.mobject.types.vectorized_mobject.VMobject.point_from_proportion")
to use these functions to account for curve length.
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1430](https://github.com/ManimCommunity/manim/pull/1430)
: Un-deprecated GraphScene (will be deprecated later), fixed an old-style call to NumberPlane
* More work is required in order to fully replace GraphScene via Axes, thus GraphScene is not deprecated yet.
* Fixed one example in which the old NumberPlane syntax was used.
* [PR #1425](https://github.com/ManimCommunity/manim/pull/1425)
: Added a “How to Cite Manim” section to the Readme
* [PR #1387](https://github.com/ManimCommunity/manim/pull/1387)
: Added Guide to Contribute Examples from GitHub Wiki to Documentation
Added a Guide
* [PR #1424](https://github.com/ManimCommunity/manim/pull/1424)
: Fixed all current docbuild warnings
* [PR #1389](https://github.com/ManimCommunity/manim/pull/1389)
: Adding Admonitions Tutorial to docs
* [PR #1341](https://github.com/ManimCommunity/manim/pull/1341)
: Reduce complexity of ThreeDSurfacePlot example
* [PR #1362](https://github.com/ManimCommunity/manim/pull/1362)
: Quick reference to modules
* [PR #1376](https://github.com/ManimCommunity/manim/pull/1376)
: Add flake8 and isort in docs
added ‘flake8’ and ‘isort’ usages to docs
* [PR #1360](https://github.com/ManimCommunity/manim/pull/1360)
: Grammatical error corrections in documentation
changed a few sentences in docs/source
* [PR #1351](https://github.com/ManimCommunity/manim/pull/1351)
: Some more typehints
* [PR #1358](https://github.com/ManimCommunity/manim/pull/1358)
: Fixed link to installation instructions for developers
* [PR #1338](https://github.com/ManimCommunity/manim/pull/1338)
: Added documentation guidelines for type hints
* [PR #1342](https://github.com/ManimCommunity/manim/pull/1342)
: Multiple ValueTracker example for docs
* [PR #1210](https://github.com/ManimCommunity/manim/pull/1210)
: Added tutorial chapter on coordinates of an mobject
* [PR #1335](https://github.com/ManimCommunity/manim/pull/1335)
: Added import statements to examples in documentation
* [PR #1245](https://github.com/ManimCommunity/manim/pull/1245)
: Added filled angle Example
* [PR #1328](https://github.com/ManimCommunity/manim/pull/1328)
: Docs: Update Brace example
* [PR #1326](https://github.com/ManimCommunity/manim/pull/1326)
: Improve documentation of [`ManimMagic`](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manim.utils.ipython_magic.ManimMagic "manim.utils.ipython_magic.ManimMagic")
(in particular: fix documented order of CLI flags)
* [PR #1323](https://github.com/ManimCommunity/manim/pull/1323)
: Blacken Docs Strings
* [PR #1300](https://github.com/ManimCommunity/manim/pull/1300)
: Added typehints for [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
* [PR #1301](https://github.com/ManimCommunity/manim/pull/1301)
: Added further docstrings and typehints to [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
* [PR #1298](https://github.com/ManimCommunity/manim/pull/1298)
: Add double backquotes for rst code samples (value\_tracker.py)
* [PR #1297](https://github.com/ManimCommunity/manim/pull/1297)
: Change docs to use viewcode extension instead of linkcode
Switched `sphinx.ext.linkcode` to `sphinx.ext.viewcode` and removed `linkcode_resolve` in `conf.py`.
* [PR #1246](https://github.com/ManimCommunity/manim/pull/1246)
: Added docstrings for [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
* [PR #1251](https://github.com/ManimCommunity/manim/pull/1251)
: Switch documentation from guzzle-sphinx-theme to furo
* [PR #1232](https://github.com/ManimCommunity/manim/pull/1232)
: Further docstrings and examples for [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
* [PR #1291](https://github.com/ManimCommunity/manim/pull/1291)
: Grammar improvements in README.md
* [PR #1269](https://github.com/ManimCommunity/manim/pull/1269)
: Add documentation about `set_color_by_tex()`
* [PR #1284](https://github.com/ManimCommunity/manim/pull/1284)
: Updated readme by providing the correct link to the example\_scenes
* [PR #1029](https://github.com/ManimCommunity/manim/pull/1029)
: Added example jupyter notebook into the examples folders
* [PR #1279](https://github.com/ManimCommunity/manim/pull/1279)
: Added sphinx requirements to pyproject.toml
New contributors who wanted to build the sphinx documentation had an extra step that could be removed by making use of `poetry install`. This removes the developer’s need for `pip install -r requirements.txt`.
* [PR #1268](https://github.com/ManimCommunity/manim/pull/1268)
: Added documentation explaining the differences between manim versions
* [PR #1247](https://github.com/ManimCommunity/manim/pull/1247)
: Added warning for the usage of animate
* [PR #1242](https://github.com/ManimCommunity/manim/pull/1242)
: Added an example for the manim colormap
* [PR #1239](https://github.com/ManimCommunity/manim/pull/1239)
: Add TinyTex installation instructions
* [PR #1231](https://github.com/ManimCommunity/manim/pull/1231)
: Improve changelog generation script
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #1299](https://github.com/ManimCommunity/manim/pull/1299)
: Red pixels (different value) now appear over green pixels (same value) in GraphicalUnitTest
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1436](https://github.com/ManimCommunity/manim/pull/1436)
: Cache poetry venv with pyproject.toml hash in key
Cache poetry venv with pyproject.toml hash in key
* [PR #1435](https://github.com/ManimCommunity/manim/pull/1435)
: CI: Update poetry cache when new version is released
Fix test\_version failure in CI when using cached poetry venv
* [PR #1427](https://github.com/ManimCommunity/manim/pull/1427)
: Add URL’s to pyproject.toml
* [PR #1421](https://github.com/ManimCommunity/manim/pull/1421)
: Updated changelog generator’s labels and removed pre-commit bot from changelog
* [PR #1339](https://github.com/ManimCommunity/manim/pull/1339)
: CI: Fix macOS installation error from creating file in read-only file system
* [PR #1257](https://github.com/ManimCommunity/manim/pull/1257)
: CI: Caching ffmpeg, tinytex dependencies and poetry venv
CI: Caching ffmpeg, tinytex dependencies and poetry venv
* [PR #1294](https://github.com/ManimCommunity/manim/pull/1294)
: Added mixed-line-ending to .pre-commit-config.yaml
* [PR #1278](https://github.com/ManimCommunity/manim/pull/1278)
: Fixed flake8 errors and removed linter/formatter workflows
* [PR #1270](https://github.com/ManimCommunity/manim/pull/1270)
: Added isort to pre\_commit file
* [PR #1263](https://github.com/ManimCommunity/manim/pull/1263)
: CI: Turn off experimental installer for poetry to fix installation errors
* Turn off experimental installer for poetry to prevent manim installation errors for packages.
* Downgrade py39 to py38 for flake checks as pip does not enjoy py39, along with poetry.
* [PR #1255](https://github.com/ManimCommunity/manim/pull/1255)
: CI: Fix macOS pipeline failure
Update ci.yml to update and upgrade brew if necessary before installing dependencies, and remove the unsupported dvisvgm.86\_64-darwin package.
* [PR #1254](https://github.com/ManimCommunity/manim/pull/1254)
: Removed the comment warning that GitHub doesn’t allow uploading video in the issue templates.
* [PR #1216](https://github.com/ManimCommunity/manim/pull/1216)
: Use actions/checkout for cloning repository; black-checks
* [PR #1235](https://github.com/ManimCommunity/manim/pull/1235)
: Fixed version of decorator at <5.0.0
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1411](https://github.com/ManimCommunity/manim/pull/1411)
: Change Union\[float, int\] to just float according to PEP 484
* [PR #1241](https://github.com/ManimCommunity/manim/pull/1241)
: Type Annotations: Fixing errors showing up in static type checking tool mypy
* [PR #1319](https://github.com/ManimCommunity/manim/pull/1319)
: Fix mean/meant typo
Fix typo in docs
* [PR #1313](https://github.com/ManimCommunity/manim/pull/1313)
: Singular typo fix on the Quickstart page in documentation
* [PR #1292](https://github.com/ManimCommunity/manim/pull/1292)
: Remove unnecessary imports from files
Imports reduced in a bunch of files
* [PR #1295](https://github.com/ManimCommunity/manim/pull/1295)
: Fix grammar and typos in the CODE OF CONDUCT
* [PR #1293](https://github.com/ManimCommunity/manim/pull/1293)
: Minor fixes - reduce lines
Remove unnecessary lines
* [PR #1281](https://github.com/ManimCommunity/manim/pull/1281)
: Remove all Carriage Return characters in our files
* [PR #1178](https://github.com/ManimCommunity/manim/pull/1178)
: Format Imports using Isort
* [PR #1233](https://github.com/ManimCommunity/manim/pull/1233)
: Fix deprecation warning for `--use_opengl_renderer` and `--use_webgl_renderer`
* [PR #1282](https://github.com/ManimCommunity/manim/pull/1282)
: Fix typing hints in vectorized\_mobject.py based on mypy
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html#new-releases "Link to this heading")
* [PR #1434](https://github.com/ManimCommunity/manim/pull/1434)
: Prepare v0.6.0
---
# Adding Admonitions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/admonitions.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/admonitions.rst "Edit this page")
Adding Admonitions[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#adding-admonitions "Link to this heading")
===========================================================================================================================================
Adding Blocks for Tip, Note, Important etc. (Admonitions)[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#adding-blocks-for-tip-note-important-etc-admonitions "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The following directives are called Admonitions. You can use them to point out additional or important information. Here are some examples:
### See also[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#see-also "Link to this heading")
.. seealso::
Some ideas at :mod:\`~.tex\_mobject\`, :class:\`~.Mobject\`, :meth:\`~.Mobject.add\_updater\`, :attr:\`~.Mobject.depth\`, :func:\`~.make\_config\_parser\`
See also
Some ideas at [`tex_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#module-manim.mobject.text.tex_mobject "manim.mobject.text.tex_mobject")
, [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, [`add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
, [`depth`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.depth "manim.mobject.mobject.Mobject.depth")
, [`make_config_parser()`](https://docs.manim.community/en/stable/reference/manim._config.utils.html#manim._config.utils.make_config_parser "manim._config.utils.make_config_parser")
### Note[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#note "Link to this heading")
.. note::
A note
Note
A note
### Tip[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#tip "Link to this heading")
.. tip::
A tip
Tip
A tip
You may also use the admonition **hint**, but this is very similar and **tip** is more commonly used in the documentation.
### Important[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#important "Link to this heading")
.. important::
Some important information which should be considered.
Important
Some important information which should be considered.
### Warning[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#warning "Link to this heading")
.. warning::
Some text pointing out something that people should be warned about.
Warning
Some text pointing out something that people should be warned about.
You may also use the admonitions **caution** or even **danger** if the severity of the warning must be stressed.
### Attention[¶](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#attention "Link to this heading")
.. attention::
A attention
Attention
A attention
You can find further information about Admonitions here: [https://pradyunsg.me/furo/reference/admonitions/](https://pradyunsg.me/furo/reference/admonitions/)
---
# v0.7.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.7.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.7.0-changelog.rst "Edit this page")
v0.7.0[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#v0-7-0 "Link to this heading")
===============================================================================================================
Date:
June 01, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#contributors "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
A total of 45 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* André +
* Anton Ballmaier
* Benjamin Hackl
* Clar Fon
* Darylgolden
* Devin Neal
* Hugues Devimeux
* Iced-Tea3 +
* Jan-Hendrik Müller
* Jason Villanueva
* Jerónimo Squartini +
* KingWampy
* Laith Bahodi
* Max Stoumen +
* Mohammad Al-Fetyani
* Naveen M K
* NeoPlato
* Newell Jensen
* Nikhil Garuda
* Nikhil Sharma +
* PaulCMurdoch +
* Philipp Imhof
* Raghav Goel
* Robert West +
* Ryan McCauley +
* Skaft +
* SwiddisZwei +
* e4coder +
* friedkeenan
* malte-v +
* ralphieraccoon
* sparshg
The patches included in this release have been reviewed by the following contributors.
* Aathish Sivasubrahmanian
* Abhijith Muthyala
* Anton Ballmaier
* Aron
* Benjamin Hackl
* Darylgolden
* Devin Neal
* GameDungeon
* Hugues Devimeux
* Iced-Tea3
* Jan-Hendrik Müller
* Jason Villanueva
* Jerónimo Squartini
* KingWampy
* Laith Bahodi
* Mark Miller
* Mohammad Al-Fetyani
* Naveen M K
* Nikhil Garuda
* Oliver
* Philipp Imhof
* Raghav Goel
* Ricky Chon
* Ryan McCauley
* Skaft
* SwiddisZwei
* e4coder
* friedkeenan
* ralphieraccoon
* sparshg
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#pull-requests-merged "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
A total of 87 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#breaking-changes "Link to this heading")
* [PR #1521](https://github.com/ManimCommunity/manim/pull/1521)
: Improve [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
docs
* Improve documentation of the [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
class.
* Unify the signature of `get_all_mobjects`. Now it always returns a sequence of [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. This breaks using `FadeTransform.get_all_mobjects` as `Group`.
* [PR #1470](https://github.com/ManimCommunity/manim/pull/1470)
: Drop support for Python 3.6
Manim won’t work on Python 3.6 anymore.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#highlights "Link to this heading")
* [PR #1447](https://github.com/ManimCommunity/manim/pull/1447)
: Added [`PolarPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.PolarPlane.html#manim.mobject.graphing.coordinate_systems.PolarPlane "manim.mobject.graphing.coordinate_systems.PolarPlane")
for polar coordinates.
* [PR #1490](https://github.com/ManimCommunity/manim/pull/1490)
: Added [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
, rework the polygon inheritance tree, and add [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
* Add [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
, a generalized [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
that allows for disconnected sets of edges.
* Make [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
inherit from [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
.
* Add [`regular_vertices()`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.regular_vertices "manim.utils.space_ops.regular_vertices")
* Add [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
.
* Make [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon")
inherit from [`RegularPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygram.html#manim.mobject.geometry.polygram.RegularPolygram "manim.mobject.geometry.polygram.RegularPolygram")
.
* Add [`Star`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Star.html#manim.mobject.geometry.polygram.Star "manim.mobject.geometry.polygram.Star")
.
* [PR #1462](https://github.com/ManimCommunity/manim/pull/1462)
: OpenGL: Added `Shader`, `Mesh`, and `FullScreenQuad`
Add Shader and Mesh objects
* [PR #1418](https://github.com/ManimCommunity/manim/pull/1418)
: Added project management commands
* `manim init` - quickly sets up default files for a manim project.
* `manim new project` - lets the user set project settings. It also creates the project inside a new folder of name
* `manim new scene` - used to quickly insert new scenes into files. If `file name` is not provided `main.py` is used as default.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1598](https://github.com/ManimCommunity/manim/pull/1598)
: Update examples to use [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
and deprecate `GraphScene`
`GraphScene` has been deprecated and its functionality has been shifted to [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
. See the updated example gallery for sample usage.
* [PR #1454](https://github.com/ManimCommunity/manim/pull/1454)
: Fading module enhancements
Moved functionality of all Fading classes to [`FadeIn`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeIn.html#manim.animation.fading.FadeIn "manim.animation.fading.FadeIn")
and [`FadeOut`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeOut.html#manim.animation.fading.FadeOut "manim.animation.fading.FadeOut")
. All other fading classes have been deprecated.
* [PR #1375](https://github.com/ManimCommunity/manim/pull/1375)
: Deleted the deprecated `ShowCreation` in favor of [`Create`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Create.html#manim.animation.creation.Create "manim.animation.creation.Create")
### New features[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#new-features "Link to this heading")
* [PR #1566](https://github.com/ManimCommunity/manim/pull/1566)
: Added the ability to add gridlines to a [`Rectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
* [PR #1548](https://github.com/ManimCommunity/manim/pull/1548)
: Added [`ArcBrace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "manim.mobject.svg.brace.ArcBrace")
, a subclass of [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
.
* [PR #1559](https://github.com/ManimCommunity/manim/pull/1559)
: Update VGroup to support item assignment (#1530)
Support indexed item-assignment for VGroup
* [PR #1518](https://github.com/ManimCommunity/manim/pull/1518)
: Allow fading multiple Mobjects in one Animation
* [PR #1422](https://github.com/ManimCommunity/manim/pull/1422)
: Added [`override_animation()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.html#manim.animation.animation.override_animation "manim.animation.animation.override_animation")
decorator
* [PR #1504](https://github.com/ManimCommunity/manim/pull/1504)
: Color module enhancements
* Replaced `BLUE_E` with what was previously `DARK_BLUE` and removed `DARK_BLUE`
* Added alias `LIGHTER_GRAY` for `GRAY_A`
* Added `PURE_RED`, `PURE_BLUE` and renamed `GREEN_SCREEN` to `PURE_GREEN`
* All gray colors are now also available using British spelling (including `GREY_BROWN`)
* Replaced color example in the docs. It can now be used as a quick reference for all color names.
* [PR #1272](https://github.com/ManimCommunity/manim/pull/1272)
: Implement metaclass approach in geometry module to make mobjects compatible with cairo and opengl rendering
* [PR #1404](https://github.com/ManimCommunity/manim/pull/1404)
: Added two deprecation decorators
Added two function decorators `deprecated` and `deprecated_params` as a consistent way of deprecating code.
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#enhancements "Link to this heading")
* [PR #1572](https://github.com/ManimCommunity/manim/pull/1572)
: OpenGL compatibility via metaclass: [`TracedPath`](https://docs.manim.community/en/stable/reference/manim.animation.changing.TracedPath.html#manim.animation.changing.TracedPath "manim.animation.changing.TracedPath")
, [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
, [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
* [PR #1472](https://github.com/ManimCommunity/manim/pull/1472)
: Porting methods from `GraphScene` to [`CoordinateSystem`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "manim.mobject.graphing.coordinate_systems.CoordinateSystem")
* [PR #1589](https://github.com/ManimCommunity/manim/pull/1589)
: OpenGL compatibility via metaclass: [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
* [PR #1564](https://github.com/ManimCommunity/manim/pull/1564)
: Add extra notes for TeX compilation errors
Add hint to use custom `TexTemplate` on TeX compilation errors
* [PR #1584](https://github.com/ManimCommunity/manim/pull/1584)
: Added a check for `0` in [`round_corners()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.round_corners "manim.mobject.geometry.polygram.Polygram.round_corners")
* [PR #1586](https://github.com/ManimCommunity/manim/pull/1586)
: Add OpenGLMobject support to all `isinstance` occurrences
This PR increases the support for OpenGL in the remaining animation classes and in other places where appropriate.
* [PR #1577](https://github.com/ManimCommunity/manim/pull/1577)
: Added new metaclass ConvertToOpenGL (replacing MetaVMobject), restore IntelliSense
* [PR #1562](https://github.com/ManimCommunity/manim/pull/1562)
: Improved VectorField’s Nudge Accuracy Per Step
Implemented the Runge-Kutta algorithm in VectorField’s nudge function. This increases the accuracy as an object moves along a vector field. This also increases efficiency as the nudge function requires less loops to achieve accuracy than the previous implementation.
* [PR #1480](https://github.com/ManimCommunity/manim/pull/1480)
: Add logging info to tex errors
* [PR #1567](https://github.com/ManimCommunity/manim/pull/1567)
: Compatibility Fixes with ManimPango v0.3.0
* ManimPango v0.3.0+ is required for Manim now.
* Show errors from Pango when Markup isn’t correct
* [PR #1512](https://github.com/ManimCommunity/manim/pull/1512)
: OpenGL compatibility via metaclass: graph
* [PR #1511](https://github.com/ManimCommunity/manim/pull/1511)
: OpenGL compatibility via metaclass: svg\_mobject, text\_mobject, tex\_mobject
* [PR #1502](https://github.com/ManimCommunity/manim/pull/1502)
: Added `center` parameter to [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
and `point` parameter to [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D")
* [PR #1486](https://github.com/ManimCommunity/manim/pull/1486)
: Update of `rate_functions`
Changed the picture for the non standard rate functions.
* [PR #1495](https://github.com/ManimCommunity/manim/pull/1495)
: Ported value\_tracker to OpenGL
* [PR #1382](https://github.com/ManimCommunity/manim/pull/1382)
: Expand documentation, testing, and functionality of ValueTrackers; remove ExponentialValueTracker
Added more documentation and inline operators to ValueTracker and ComplexValueTracker. Brought coverage for value\_tracker.py to 100%. Removed ExponentialValueTracker.
* [PR #1475](https://github.com/ManimCommunity/manim/pull/1475)
: Add SVG elliptical arc support
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1574](https://github.com/ManimCommunity/manim/pull/1574)
: Fixed error when processing SVG with omitted elliptical arc command
* [PR #1596](https://github.com/ManimCommunity/manim/pull/1596)
: Fix indexing for non-whitespace tex arg separator
Fixes #1568
Fix issue when setting the arg\_separator of a Tex object as a non-whitespace character(s). The method break\_up\_by\_substrings(self) was not accounting for the separator when setting the index.
* [PR #1588](https://github.com/ManimCommunity/manim/pull/1588)
: Fixed multiple animations being saved in the same file
* [PR #1571](https://github.com/ManimCommunity/manim/pull/1571)
: Fix tests after introducing parallelization
* [PR #1545](https://github.com/ManimCommunity/manim/pull/1545)
: Fix outdated parameters for `LinearTransformationScene` and add an example + typing.
* [PR #1513](https://github.com/ManimCommunity/manim/pull/1513)
: Fixed rotation of gradients while rotating a VMobject
* Fixed the direction of gradient which remained the same while rotating VMobjects
* Added `rotate_sheen_direction()` method in VMobject
* [PR #1570](https://github.com/ManimCommunity/manim/pull/1570)
: Output errors to stderr
* [PR #1560](https://github.com/ManimCommunity/manim/pull/1560)
: Declare `*.npz` `*.wav` `*.png` as binary in `.gitattributes`
* [PR #1211](https://github.com/ManimCommunity/manim/pull/1211)
: Refactored scene caching and fixed issue when a different hash was produced when copying a mobject in the scene
Refactored internal scene-caching mechanism and fixed bug when an inconsistent hash was produced when copying a mobject.
* [PR #1527](https://github.com/ManimCommunity/manim/pull/1527)
: Improved handling of substring isolation within sqrt, and fixed a bug with transform\_mismatch for the matching shape transforms
* [PR #1526](https://github.com/ManimCommunity/manim/pull/1526)
: Fix fading
* [PR #1523](https://github.com/ManimCommunity/manim/pull/1523)
: Fix multiple FadeIn / Out only working on VMobjects
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1599](https://github.com/ManimCommunity/manim/pull/1599)
: Added example for [`Annulus`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Annulus.html#manim.mobject.geometry.arc.Annulus "manim.mobject.geometry.arc.Annulus")
* [PR #1415](https://github.com/ManimCommunity/manim/pull/1415)
: New example for gallery and some docs refinements
* [PR #1509](https://github.com/ManimCommunity/manim/pull/1509)
: Copyedited Documentation
Added a link to Manim Community GitHub page in `for_dev.rst`. Fixed [`get_start()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_start "manim.mobject.mobject.Mobject.get_start")
and added `roll` link in `building_blocks-rst` Added language to code blocks in `configuration.rst`
* [PR #1384](https://github.com/ManimCommunity/manim/pull/1384)
: Added typings to space\_ops.py
Added Typehints to most of the functions
* [PR #1500](https://github.com/ManimCommunity/manim/pull/1500)
: Example for [`apply_complex_function()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.apply_complex_function "manim.mobject.mobject.Mobject.apply_complex_function")
* [PR #1551](https://github.com/ManimCommunity/manim/pull/1551)
: Fixed the typo for Admonitions
* [PR #1550](https://github.com/ManimCommunity/manim/pull/1550)
: Restructuring of Contribution Section
* [PR #1541](https://github.com/ManimCommunity/manim/pull/1541)
: Fixing broken links and other minor doc things
* [PR #1516](https://github.com/ManimCommunity/manim/pull/1516)
: Update docs to use `t_range` instead of `t_min` and `t_max` in [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
* [PR #1508](https://github.com/ManimCommunity/manim/pull/1508)
: Update troubleshooting docs
* [PR #1485](https://github.com/ManimCommunity/manim/pull/1485)
: Added [`Title`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#manim.mobject.text.tex_mobject.Title "manim.mobject.text.tex_mobject.Title")
example for the docs
* [PR #1439](https://github.com/ManimCommunity/manim/pull/1439)
: Cleaning `Sequence` typehints
* [PR #1440](https://github.com/ManimCommunity/manim/pull/1440)
: Added Scoop installation docs (Windows)
* [PR #1452](https://github.com/ManimCommunity/manim/pull/1452)
: Refine typehints at [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
* [PR #1458](https://github.com/ManimCommunity/manim/pull/1458)
: Refine docs of [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
( add `disable_ligatures=True` for t2c)
* [PR #1449](https://github.com/ManimCommunity/manim/pull/1449)
: Added [`PointCloudDot`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot "manim.mobject.types.point_cloud_mobject.PointCloudDot")
example
* [PR #1473](https://github.com/ManimCommunity/manim/pull/1473)
: Added easy example for [`arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
* [PR #1402](https://github.com/ManimCommunity/manim/pull/1402)
: Added typestring parser checker
* [PR #1451](https://github.com/ManimCommunity/manim/pull/1451)
: Reduce complexity of AngleExample
* [PR #1441](https://github.com/ManimCommunity/manim/pull/1441)
: Add inheritance diagrams to reference page
Added inheritance diagrams to the reference page as a quick navigation method.
* [PR #1457](https://github.com/ManimCommunity/manim/pull/1457)
: Fixing broken doc links
* [PR #1445](https://github.com/ManimCommunity/manim/pull/1445)
: Remove $ from tutorial commands
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #1556](https://github.com/ManimCommunity/manim/pull/1556)
: Try pytest-xdist for parallelization in tests
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1505](https://github.com/ManimCommunity/manim/pull/1505)
: Add docs reference to PR template
Added documentation link to the Pull Request Template.
* [PR #1499](https://github.com/ManimCommunity/manim/pull/1499)
: Updated Discord links in the docs to point towards a standardized redirect
* [PR #1461](https://github.com/ManimCommunity/manim/pull/1461)
: Build the docs - Logging
* [PR #1481](https://github.com/ManimCommunity/manim/pull/1481)
: pyproject.toml: poetry\_core -> poetry-core
* [PR #1477](https://github.com/ManimCommunity/manim/pull/1477)
: Update RDT sphinx package to version 3.5.3
* [PR #1460](https://github.com/ManimCommunity/manim/pull/1460)
: Create CONTRIBUTING.md
* [PR #1453](https://github.com/ManimCommunity/manim/pull/1453)
: manim\_directive: fix image links in docs - Windows
Use POSIX path on Windows to link images so documentation can build locally.
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1465](https://github.com/ManimCommunity/manim/pull/1465)
: Added typings and description to some functions in [`coordinate_systems`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#module-manim.mobject.graphing.coordinate_systems "manim.mobject.graphing.coordinate_systems")
.
* [PR #1552](https://github.com/ManimCommunity/manim/pull/1552)
: Removed unwanted parameters in geometry
Removed `anchors_span_full_range`, `close_new_points`, `anchors_span_full_range`, `preserve_tip_size_when_scaling`, `mark_paths_closed` and `close_new_points`
* [PR #1597](https://github.com/ManimCommunity/manim/pull/1597)
: Removed hilite\_me and insert\_line\_numbers\_in\_html from global name space
* [PR #1535](https://github.com/ManimCommunity/manim/pull/1535)
: Update dependencies and fix tests
* [PR #1544](https://github.com/ManimCommunity/manim/pull/1544)
: Adding spell checker as a pre-commit hook
* [PR #1542](https://github.com/ManimCommunity/manim/pull/1542)
: Swapping a pango markup link in docs
* [PR #1531](https://github.com/ManimCommunity/manim/pull/1531)
: Don’t use deprecated methods in deprecation.py
* [PR #1492](https://github.com/ManimCommunity/manim/pull/1492)
: Remove stray print statements introduced in #1404
* [PR #1471](https://github.com/ManimCommunity/manim/pull/1471)
: Fix Some Warnings from lgtm
### Changes that needed to be reverted again[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#changes-that-needed-to-be-reverted-again "Link to this heading")
* [PR #1606](https://github.com/ManimCommunity/manim/pull/1606)
: Bring back `DARK_BLUE`
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html#new-releases "Link to this heading")
* [PR #1601](https://github.com/ManimCommunity/manim/pull/1601)
: Preparation for v0.7.0: added changelog and bumped version number
---
# v0.5.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.5.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.5.0-changelog.rst "Edit this page")
v0.5.0[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#v0-5-0 "Link to this heading")
===============================================================================================================
Date:
April 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#contributors "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
A total of 35 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Abel Aebker +
* Abhijith Muthyala
* AntonBallmaier +
* Aron
* Benjamin Hackl
* Bogdan Stăncescu +
* Darylgolden
* Devin Neal
* GameDungeon +
* Hugues Devimeux
* Jason Villanueva
* Kapil Sachdeva
* KingWampy
* Lionel Ray +
* Mark Miller
* Mohammad Al-Fetyani +
* Naveen M K
* Niklas Dewally +
* Oliver +
* Roopesh +
* Seb Pearce +
* aebkea +
* friedkeenan
* hydrobeam +
* kolibril13
* sparshg
* tfglynn +
The patches included in this release have been reviewed by the following contributors.
* Abel Aebker
* Abhijith Muthyala
* Benjamin Hackl
* Bogdan Stăncescu
* Devin Neal
* Hugues Devimeux
* Jason Villanueva
* Kapil Sachdeva
* KingWampy
* Leo Torres
* Lionel Ray
* Mark Miller
* Mohammad Al-Fetyani
* Naveen M K
* Oliver
* Ricky Chon
* vector67
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#pull-requests-merged "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
A total of 64 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#highlights "Link to this heading")
* [PR #1075](https://github.com/ManimCommunity/manim/pull/1075)
: Add OpenGL Renderer
Adds an OpenGLRenderer, OpenGLCamera, OpenGL-enabled Mobjects, and a `--use_opengl_renderer` flag. When this flag is passed, you can pass the `-p` flag to preview animations, the `-w` flag to generate video, and the `-q` flag to specify render quality. If you don’t pass either the `-p` or the `-w` flag, nothing will happen. Scenes rendered with the OpenGL renderer must _only_ use OpenGL-enabled Mobjects.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1124](https://github.com/ManimCommunity/manim/pull/1124)
: Deprecated `ShowCreation` in favor of `Create`
1. Deprecated `ShowCreation` in favor of `Create` across the library with the exception of the show\_creation boolean variable vector\_space\_scene.py
2. Added a deprecation warning in the original `ShowCreation` class.
* [PR #1110](https://github.com/ManimCommunity/manim/pull/1110)
: Deprecated SmallDot + OpenGLSmallDot
SmallDot isn’t necessary and a deprecation warning will be raised. This will be removed in a future release.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#new-features "Link to this heading")
* [PR #1037](https://github.com/ManimCommunity/manim/pull/1037)
: Added new fade and transform animations ([`TransformMatchingShapes`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingShapes.html#manim.animation.transform_matching_parts.TransformMatchingShapes "manim.animation.transform_matching_parts.TransformMatchingShapes")
, [`TransformMatchingTex`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingTex.html#manim.animation.transform_matching_parts.TransformMatchingTex "manim.animation.transform_matching_parts.TransformMatchingTex")
, [`FadeTransform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.FadeTransform.html#manim.animation.transform.FadeTransform "manim.animation.transform.FadeTransform")
) from 3b1b/manim
Added new Fade animation: `FadeOutToPoint` Added `FadeTransform` and `FadeTransformPieces` for transforming mobjects and submobjects with a fade Added `TransformMatchingShapes` and `TransformMatchingTex` for transforming mobjects and tex that have matching parts
* [PR #1097](https://github.com/ManimCommunity/manim/pull/1097)
: Added 3D Mobject [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D")
* [PR #1074](https://github.com/ManimCommunity/manim/pull/1074)
: Added jupyter media\_width option to the config
* [PR #1107](https://github.com/ManimCommunity/manim/pull/1107)
: Added [`Unwrite`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Unwrite.html#manim.animation.creation.Unwrite "manim.animation.creation.Unwrite")
animation class to complement [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
Added `Unwrite` which inherits from [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
. It automatically reverses the animation of [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
by passing the reversed rate function, but it also takes an additional boolean parameter reverse which, if False, renders the animation from left to right (assuming text oriented in the usual way), but if True, it renders right to left.
* [PR #1085](https://github.com/ManimCommunity/manim/pull/1085)
: Added [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
and [`RightAngle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "manim.mobject.geometry.line.RightAngle")
for intersecting lines
[`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
and [`RightAngle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.RightAngle.html#manim.mobject.geometry.line.RightAngle "manim.mobject.geometry.line.RightAngle")
both take two lines as input. If they intersect, or share a common vertex, an angle is drawn between them. Users can customize the look of the angle and also use a dotted right angle.
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#enhancements "Link to this heading")
* [PR #1144](https://github.com/ManimCommunity/manim/pull/1144)
: Improved quality of GIFs
* [PR #1157](https://github.com/ManimCommunity/manim/pull/1157)
: Refresh triangulation on call to `apply_points_function()`
Rotate called apply\_points\_function, which was previous not subclassed by OpenGLMobject - now it is. Then, the vertex normals can be updated too.
Additionally, the old\_points matrix would change after rotating, making the old points / new points test irrelevant. This is addressed with a .copy call.
* [PR #1151](https://github.com/ManimCommunity/manim/pull/1151)
: Added parametric function support to `OpenGLSurface`
* [PR #1139](https://github.com/ManimCommunity/manim/pull/1139)
: In-Code config\[“preview”\] Support
* [PR #1123](https://github.com/ManimCommunity/manim/pull/1123)
: Added caching, skipping, and user-specified background colors to the OpenGL renderer
OpenGL play logic has been improved to support caching and skipping with \-n argument ( it is now similar to Cairo play logic). A random bug was fixed in OpenGLSurface and OpenGL background color can now be changed via background\_color argument.
* [PR #1118](https://github.com/ManimCommunity/manim/pull/1118)
: Allow passing animation arguments with .animate syntax
Users will now be able to do things like obj.animate(run\_time=2).method(arg) if they want to specify animation arguments for an individual .animate call, and can still not specify any arguments like obj.animate.method(arg).
Passing animation arguments is only allowed directly after .animate is accessed, if passed elsewhere then a ValueError is raised.
* [PR #718](https://github.com/ManimCommunity/manim/pull/718)
: Rotating the numbers in y axis
In Axes, the y axis will be rotated 90deg but the numbers are also rotated and shouldn’t be. Fixes this issue.
* [PR #1070](https://github.com/ManimCommunity/manim/pull/1070)
: Raise FileNotFoundError when unable to locate the .cfg file specified via `--config_file`
Raising the error will stop script execution and let the user know that there are problems with the –config\_file location instead of reverting back to the default configuration.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1224](https://github.com/ManimCommunity/manim/pull/1224)
: Fixed [`ShowIncreasingSubsets`](https://docs.manim.community/en/stable/reference/manim.animation.creation.ShowIncreasingSubsets.html#manim.animation.creation.ShowIncreasingSubsets "manim.animation.creation.ShowIncreasingSubsets")
, [`ShowSubmobjectsOneByOne`](https://docs.manim.community/en/stable/reference/manim.animation.creation.ShowSubmobjectsOneByOne.html#manim.animation.creation.ShowSubmobjectsOneByOne "manim.animation.creation.ShowSubmobjectsOneByOne")
, and [`AddTextLetterByLetter`](https://docs.manim.community/en/stable/reference/manim.animation.creation.AddTextLetterByLetter.html#manim.animation.creation.AddTextLetterByLetter "manim.animation.creation.AddTextLetterByLetter")
* [PR #1201](https://github.com/ManimCommunity/manim/pull/1201)
: Prevent crash on `embed()` for empty scenes
* [PR #1192](https://github.com/ManimCommunity/manim/pull/1192)
: Fixed issue when an animation is cached, manim can’t merge the partial movie files.
* [PR #1193](https://github.com/ManimCommunity/manim/pull/1193)
: Fixed using [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
without a child [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
in [`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
AnimationGroup may now take Animation objects which do not have a child Mobject, such as Wait.
* [PR #1170](https://github.com/ManimCommunity/manim/pull/1170)
: Fixed minor SVG parsing bugs
* [PR #1159](https://github.com/ManimCommunity/manim/pull/1159)
: Added support for multiple transforms in the same SVG element
* [PR #1156](https://github.com/ManimCommunity/manim/pull/1156)
: Fixed [`DrawBorderThenFill`](https://docs.manim.community/en/stable/reference/manim.animation.creation.DrawBorderThenFill.html#manim.animation.creation.DrawBorderThenFill "manim.animation.creation.DrawBorderThenFill")
to support OpenGL and improved type hints for some functions
Fixed a bug in [`DrawBorderThenFill`](https://docs.manim.community/en/stable/reference/manim.animation.creation.DrawBorderThenFill.html#manim.animation.creation.DrawBorderThenFill "manim.animation.creation.DrawBorderThenFill")
that prevented [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
animations from working with `OpenGLVMobjects` and slightly improved type hints for some animation functions to include `OpenGLVMobject`.
* [PR #1134](https://github.com/ManimCommunity/manim/pull/1134)
: Fixed the \-a flag.
The `-a` / `--write-all` flag was broken. When used, it would cause Manim to crash just after beginning to render the second scene.
* [PR #1115](https://github.com/ManimCommunity/manim/pull/1115)
: Fixed bugs in `OpenGLMobject` and added `ApplyMethod` support
Fixed undefined variables and converted `Mobject` to `OpenGLMobject`. Also, fixed assert statement in `ApplyMethod`.
* [PR #1092](https://github.com/ManimCommunity/manim/pull/1092)
: Refactored coordinate\_systems.py, fixed bugs, added [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
test
The default behavior of [`rotate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.rotate "manim.mobject.mobject.Mobject.rotate")
is to rotate about the center of [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
is symmetric about the point at the number 0 only when `|x_min|` == `|x_max|`. Ideally, the rotation should coincide with the point at number 0 on the line.
Added a regression test and additionally fixed some bugs introduced in [PR #718](https://github.com/ManimCommunity/manim/pull/718)
.
* [PR #1078](https://github.com/ManimCommunity/manim/pull/1078)
: Removed stray print statements from \_\_main\_\_.py
Uses rich’s print traceback instead and fixes an issue in printing the version twice when manim –version is called.
* [PR #1086](https://github.com/ManimCommunity/manim/pull/1086)
: Fixed broken line spacing in [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
The line\_spacing kwarg was missing when creating `Text` Mobjects; this adds it.
* [PR #1083](https://github.com/ManimCommunity/manim/pull/1083)
: Corrected the shape of [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
`Torus` draws a surface with an elliptical cross-section when minor\_radius is different from 1. This PR ensures the cross-section is always a circle.
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1217](https://github.com/ManimCommunity/manim/pull/1217)
: Copyedited the document on testing in our documentation
* [PR #1206](https://github.com/ManimCommunity/manim/pull/1206)
: Added Docstrings to [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
* [PR #1218](https://github.com/ManimCommunity/manim/pull/1218)
: Removed BezierSpline from the example gallery
* [PR #1219](https://github.com/ManimCommunity/manim/pull/1219)
: Updated Dockerfile (include dependencies for building documentation), moved documentation to main README
* [PR #1209](https://github.com/ManimCommunity/manim/pull/1209)
: Added :ref\_methods: to the manim directive
This allows class methods to be linked in the documentation. Checkout the [example references](https://docs.manim.community/en/latest/examples.html#movingaround)
below the code to see how this is used!
* [PR #1204](https://github.com/ManimCommunity/manim/pull/1204)
: Added rotation example to example gallery
* [PR #1137](https://github.com/ManimCommunity/manim/pull/1137)
: Added GitHub Wiki pages on adding testing/documentation to Sphinx Docs
* [PR #1114](https://github.com/ManimCommunity/manim/pull/1114)
: Added examples for [`Ellipse`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Ellipse.html#manim.mobject.geometry.arc.Ellipse "manim.mobject.geometry.arc.Ellipse")
, [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
, [`RegularPolygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RegularPolygon.html#manim.mobject.geometry.polygram.RegularPolygon "manim.mobject.geometry.polygram.RegularPolygon")
, [`Triangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Triangle.html#manim.mobject.geometry.polygram.Triangle "manim.mobject.geometry.polygram.Triangle")
and [`RoundedRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.RoundedRectangle.html#manim.mobject.geometry.polygram.RoundedRectangle "manim.mobject.geometry.polygram.RoundedRectangle")
* [PR #1195](https://github.com/ManimCommunity/manim/pull/1195)
: Removed SmallDot from example
* [PR #1130](https://github.com/ManimCommunity/manim/pull/1130)
: Added pre-commit to run black and flake8, updated contributing documentation accordingly
* [PR #1138](https://github.com/ManimCommunity/manim/pull/1138)
: Moved previous version changelogs to separate files; Added a Script to generate future changelogs
This script quickly generates a changelog for whoever is making the release.
* [PR #1190](https://github.com/ManimCommunity/manim/pull/1190)
: Added note in contributing guide to read the latest version of the documentation
* [PR #1188](https://github.com/ManimCommunity/manim/pull/1188)
: Added sounds example to docs
* [PR #1165](https://github.com/ManimCommunity/manim/pull/1165)
: Added documentation for installing Manim on Colab
* [PR #1128](https://github.com/ManimCommunity/manim/pull/1128)
: Added examples for [`DashedLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "manim.mobject.geometry.line.DashedLine")
, [`TangentLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.TangentLine.html#manim.mobject.geometry.line.TangentLine "manim.mobject.geometry.line.TangentLine")
, [`Elbow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Elbow.html#manim.mobject.geometry.line.Elbow "manim.mobject.geometry.line.Elbow")
, [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
, [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
, [`DoubleArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#manim.mobject.geometry.line.DoubleArrow "manim.mobject.geometry.line.DoubleArrow")
* [PR #1177](https://github.com/ManimCommunity/manim/pull/1177)
: Replace links to the latest version of the documentation to the stable version
* [PR #1077](https://github.com/ManimCommunity/manim/pull/1077)
: Added details to `get_critical_point()`
* [PR #1154](https://github.com/ManimCommunity/manim/pull/1154)
: Fixed some typing hints. (ints to floats)
* [PR #1036](https://github.com/ManimCommunity/manim/pull/1036)
: Added [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
to the example gallery
* [PR #1103](https://github.com/ManimCommunity/manim/pull/1103)
: Added documentation and examples for Square, Dot, Circle and Rectangle
* [PR #1101](https://github.com/ManimCommunity/manim/pull/1101)
: Added documentation to [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
* [PR #1088](https://github.com/ManimCommunity/manim/pull/1088)
: Added new svg files to documentation and imports
In particular, SVGPathMobject, VMobjectFromPathstring, and the style\_utils functions to manim’s namespace.
* [PR #1076](https://github.com/ManimCommunity/manim/pull/1076)
: Improve documentation for GraphScene
Updated coords\_to\_point and point\_to\_coords under manim/scene/graph\_scene.py as the dosctring of each function confusingly described the opposite of what it is supposed to do.
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #1160](https://github.com/ManimCommunity/manim/pull/1160)
: Enable CI testing for OpenGL
* [PR #1100](https://github.com/ManimCommunity/manim/pull/1100)
: Rewrote test cases to use sys.executable in the command instead of “python”
Tests would fail due to capture() not spawning a subshell in the correct environment, so when python was called, the test would be unable to find necessary packages.
* [PR #1079](https://github.com/ManimCommunity/manim/pull/1079)
: Removed the hardcoded value, manim, in test\_version.py
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1213](https://github.com/ManimCommunity/manim/pull/1213)
: Updated TinyTex dependencies
* [PR #1187](https://github.com/ManimCommunity/manim/pull/1187)
: Add CodeCov to Github Workflow
* [PR #1166](https://github.com/ManimCommunity/manim/pull/1166)
: CI: Use poetry’s cache dir rather than pip
* [PR #1071](https://github.com/ManimCommunity/manim/pull/1071)
: Enable pytest-cov based code coverage
* Include pytest-cov as a python module as part of developer dependencies
* In updating poetry to include pytest-cov, manimpango moved from version 0.2.3 to 0.2.4, and libpango1.0-dev needed to be installed in Ubuntu.
* Add to the CI workflow (ci.yml) to create and upload test coverage.
* [PR #1073](https://github.com/ManimCommunity/manim/pull/1073)
: Removed “one line summary” from PULL\_REQUEST\_TEMPLATE.md
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1167](https://github.com/ManimCommunity/manim/pull/1167)
: Merge `OpenGLMobject` and [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
* [PR #1164](https://github.com/ManimCommunity/manim/pull/1164)
: Fixed single PEP8 style in cairo\_renderer.py
* [PR #1140](https://github.com/ManimCommunity/manim/pull/1140)
: Flake8 Compat & Code Cleanup
* [PR #1019](https://github.com/ManimCommunity/manim/pull/1019)
: Refactored [`play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
* Removed the \_\*\*three\*\*\_ decorators of [`play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
, in particular: caching logic and file writer logic are now included within [`play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
(it wasn’t possible before, because scene.wait and scene.play were two different things).
* Added is\_static\_wait attributes to Wait. (<=> if wait is a frozen frame).
* Renamed and moved scene.add\_static\_frame to renderer.freeze\_current\_frame.
* Now when calling play without animation, it raises ValueError instead of just a warning.
* Fixed [PR #874](https://github.com/ManimCommunity/manim/pull/874)
by modifying renderer.update\_skipping\_status
* renderer starts the animation with scene.begin\_animations (scene.compile\_animation\_data used to do this)
* The run time and the time progression generation is now done in scene.play\_internal although it’d make more sense that renderer processes it later.
* Added a bunch of cool tests thanks to mocks, and thanks to the new syntax scene.render
---
# SetupMetadata - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SetupMetadata.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SetupMetadata.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.docbuild.manim_directive.SetupMetadata.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.docbuild.manim_directive.SetupMetadata.rst "Edit this page")
SetupMetadata[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SetupMetadata.html#setupmetadata "Link to this heading")
================================================================================================================================================================
Qualified name: `manim.utils.docbuild.manim\_directive.SetupMetadata`
class SetupMetadata[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/docbuild/manim_directive.html#SetupMetadata)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SetupMetadata.html#manim.utils.docbuild.manim_directive.SetupMetadata "Link to this definition")
Bases: `TypedDict`
Methods
Attributes
| | |
| --- | --- |
| `parallel_read_safe` | |
| `parallel_write_safe` | |
---
# v0.13.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.13.1-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.13.1-changelog.rst "Edit this page")
v0.13.1[¶](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#v0-13-1 "Link to this heading")
==================================================================================================================
Date:
December 05, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 2 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Benjamin Hackl
The patches included in this release have been reviewed by the following contributors.
* Laith Bahodi
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 2 pull requests were merged for this release.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#fixed-bugs "Link to this heading")
* [PR #2363](https://github.com/ManimCommunity/manim/pull/2363)
: Fixed broken IPython magic command
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html#new-releases "Link to this heading")
* [PR #2364](https://github.com/ManimCommunity/manim/pull/2364)
: Prepared bugfix release `v0.13.1`
---
# SkipManimNode - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SkipManimNode.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SkipManimNode.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.docbuild.manim_directive.SkipManimNode.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.docbuild.manim_directive.SkipManimNode.rst "Edit this page")
SkipManimNode[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SkipManimNode.html#skipmanimnode "Link to this heading")
================================================================================================================================================================
Qualified name: `manim.utils.docbuild.manim\_directive.SkipManimNode`
class SkipManimNode(_rawsource\=''_, _\*children_, _\*\*attributes_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/docbuild/manim_directive.html#SkipManimNode)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SkipManimNode.html#manim.utils.docbuild.manim_directive.SkipManimNode "Link to this definition")
Bases: `Admonition`, `Element`
Auxiliary node class that is used when the `skip-manim` tag is present or `.pot` files are being built.
Skips rendering the manim directive and outputs a placeholder instead.
Methods
Attributes
| | |
| --- | --- |
| `basic_attributes` | Common list attributes. |
| `child_text_separator` | Separator for child nodes, used by astext() method. |
| `common_attributes` | Tuple of [\`common attributes\`\_\_](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.SkipManimNode.html#id1)
known to all Doctree Element classes. |
| `content_model` | Python representation of the element's content model (cf. |
| `document` | Return the document root node of the tree containing this Node. |
| `known_attributes` | Alias for common\_attributes. |
| `line` | The line number (1-based) of the beginning of this Node in source. |
| `list_attributes` | Tuple of attributes that are initialized to empty lists. |
| `local_attributes` | Obsolete. |
| `parent` | Back-reference to the Node immediately containing this Node. |
| `source` | Path or description of the input source which generated this Node. |
| `tagname` | The element generic identifier. |
| `valid_attributes` | Tuple of attributes that are valid for elements of this class. |
| `rawsource` | The raw text from which this element was constructed. |
| `children` | List of child nodes (elements and/or Text). |
| `attributes` | value}. |
Parameters:
* **rawsource** (_str_)
* **attributes** (_Any_)
---
# v0.20.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.20.1-changelog.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.20.1-changelog.md "Edit this page")
v0.20.1[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#v0-20-1 "Link to this heading")
==================================================================================================================
Date
February 27, 2026
What’s Changed[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#what-s-changed "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### Enhancements 🚀[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#enhancements "Link to this heading")
* Cleanup `TipableVMobject`: avoid mutable default and fix `assign_tip_attr` typo by [@josiest](https://github.com/josiest)
in [PR #4503](https://github.com/ManimCommunity/manim/pull/4503)
* enhancement: optimize Docker image build and runtime footprint by [@behackl](https://github.com/behackl)
in [PR #4604](https://github.com/ManimCommunity/manim/pull/4604)
### Bug Fixes 🐛[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#bug-fixes "Link to this heading")
* fix: MathTex double-brace splitting no longer fires on natural LaTeX `}}` by [@behackl](https://github.com/behackl)
in [PR #4602](https://github.com/ManimCommunity/manim/pull/4602)
* Fix creation or animation of a zero-length `DashedLine` by [@SORVER](https://github.com/SORVER)
in [PR #4606](https://github.com/ManimCommunity/manim/pull/4606)
* Fix moving-object detection for nested AnimationGroups with z-indexed mobjects by [@Merzlikin-Matvey](https://github.com/Merzlikin-Matvey)
in [PR #4389](https://github.com/ManimCommunity/manim/pull/4389)
* Fix unintended propagation of `kwargs` in `LaggedStartMap` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4613](https://github.com/ManimCommunity/manim/pull/4613)
### Documentation 📚[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#documentation "Link to this heading")
* Documentation: manual installation of manim as a local package by [@u7920349](https://github.com/u7920349)
in [PR #4456](https://github.com/ManimCommunity/manim/pull/4456)
* Add alt text to all images in `README.md` by [@VerisimilitudeX](https://github.com/VerisimilitudeX)
in [PR #4064](https://github.com/ManimCommunity/manim/pull/4064)
### Code Quality & Refactoring 🧹[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#code-quality-refactoring "Link to this heading")
* Fix publish release workflow by [@behackl](https://github.com/behackl)
in [PR #4600](https://github.com/ManimCommunity/manim/pull/4600)
* Silence pydub ffmpeg/avconv import warning when ffmpeg CLI is absent by [@behackl](https://github.com/behackl)
in [PR #4603](https://github.com/ManimCommunity/manim/pull/4603)
### Type Hints 📝[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#type-hints "Link to this heading")
* Add type annotations to `manim/_config/utils.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4230](https://github.com/ManimCommunity/manim/pull/4230)
New Contributors[¶](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html#new-contributors "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------
* [@SORVER](https://github.com/SORVER)
made their first contribution in [PR #4606](https://github.com/ManimCommunity/manim/pull/4606)
* [@josiest](https://github.com/josiest)
made their first contribution in [PR #4503](https://github.com/ManimCommunity/manim/pull/4503)
* [@u7920349](https://github.com/u7920349)
made their first contribution in [PR #4456](https://github.com/ManimCommunity/manim/pull/4456)
* [@Merzlikin-Matvey](https://github.com/Merzlikin-Matvey)
made their first contribution in [PR #4389](https://github.com/ManimCommunity/manim/pull/4389)
* [@VerisimilitudeX](https://github.com/VerisimilitudeX)
made their first contribution in [PR #4064](https://github.com/ManimCommunity/manim/pull/4064)
**Full Changelog**: [Compare view](https://github.com/ManimCommunity/manim/compare/v0.20.0...v0.20.1)
---
# v0.20.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.20.0-changelog.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.20.0-changelog.md "Edit this page")
v0.20.0[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#v0-20-0 "Link to this heading")
==================================================================================================================
Date
February 20, 2026
What’s Changed[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#what-s-changed "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### Breaking Changes 🚨[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#breaking-changes "Link to this heading")
* Fix `ImageMobject` 3D rotation/flipping and remove resampling algorithms `lanczos` (`antialias`), `box` and `hamming` by [@chopan050](https://github.com/chopan050)
in [PR #4266](https://github.com/ManimCommunity/manim/pull/4266)
* Fix `YELLOW_C` and add `PURE_CYAN`, `PURE_MAGENTA` and `PURE_YELLOW` by [@chopan050](https://github.com/chopan050)
in [PR #4562](https://github.com/ManimCommunity/manim/pull/4562)
### Highlights 🌟[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#highlights "Link to this heading")
* Rewrite MathTex to make it more robust regarding splitting by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4515](https://github.com/ManimCommunity/manim/pull/4515)
The MathTex implementation has been updated to make it more robust and fix a number of issues. A beneficial side effect is that named groups in svg files can now be accessed through SVGMobject.
* Add new Animation Builder `Mobject.always` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #4594](https://github.com/ManimCommunity/manim/pull/4594)
This new feature is a convenience wrapper around `add_updater` that allows adding updaters to a mobject in an intuitive and easy-to-read way. Example usage in a scene:
d \= Dot()
s \= Square()
d.always.next\_to(s, UP)
self.add(s, d)
self.play(s.animate.to\_edge(LEFT))
### New Features ✨[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#new-features "Link to this heading")
* Add a `seed` config option + `--seed` CLI option for reproducible randomness in rendered scenes by [@arnaud-ma](https://github.com/arnaud-ma)
in [PR #4532](https://github.com/ManimCommunity/manim/pull/4532)
### Enhancements 🚀[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#enhancements "Link to this heading")
* Enable `strict=True` for `zip()` where safe by [@Oll-iver](https://github.com/Oll-iver)
in [PR #4547](https://github.com/ManimCommunity/manim/pull/4547)
### Bug Fixes 🐛[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#bug-fixes "Link to this heading")
* using `color` instead of `fill_color` with MathTeX for node labels by [@Schefflera-Arboricola](https://github.com/Schefflera-Arboricola)
in [PR #4501](https://github.com/ManimCommunity/manim/pull/4501)
* fix: infinite recursion caused by accessing color of a highlighted Ta… by [@BHearron](https://github.com/BHearron)
in [PR #4435](https://github.com/ManimCommunity/manim/pull/4435)
* Prevent potential `UnboundLocalError` in `PolarPlane` by [@RinZ27](https://github.com/RinZ27)
in [PR #4557](https://github.com/ManimCommunity/manim/pull/4557)
* Fixed division by 0 in `turn_animation_into_updater` by [@SoldierSacha](https://github.com/SoldierSacha)
in [PR #4567](https://github.com/ManimCommunity/manim/pull/4567)
* Fix TOCTOU Race Conditions when creating directories by [@SoldierSacha](https://github.com/SoldierSacha)
in [PR #4587](https://github.com/ManimCommunity/manim/pull/4587)
* Resolve more race conditions potentially happening during directory creation by [@SoldierSacha](https://github.com/SoldierSacha)
in [PR #4589](https://github.com/ManimCommunity/manim/pull/4589)
* Fix `c2p`/`coords_to_point` method call with single flat list or 1D array input by [@danielalanbates](https://github.com/danielalanbates)
in [PR #4596](https://github.com/ManimCommunity/manim/pull/4596)
### Documentation 📚[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#documentation "Link to this heading")
* Enable rendered documentation of `RandomColorGenerator` by [@arnaud-ma](https://github.com/arnaud-ma)
in [PR #4533](https://github.com/ManimCommunity/manim/pull/4533)
* Remove pin to Python 3.13 in installation docs by [@chopan050](https://github.com/chopan050)
in [PR #4534](https://github.com/ManimCommunity/manim/pull/4534)
* Fix broken aquabeam OpenGL link using Wayback Machine by [@behackl](https://github.com/behackl)
in [PR #4545](https://github.com/ManimCommunity/manim/pull/4545)
* Add type annotations and docstrings in `opengl_renderer.py` by [@arnaud-ma](https://github.com/arnaud-ma)
in [PR #4537](https://github.com/ManimCommunity/manim/pull/4537)
* docs: improve `TransformFromCopy` docstring by [@GoThrones](https://github.com/GoThrones)
in [PR #4597](https://github.com/ManimCommunity/manim/pull/4597)
### Infrastructure & Build 🔨[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#infrastructure-build "Link to this heading")
* Install missing dependencies in release pipeline by [@behackl](https://github.com/behackl)
in [PR #4531](https://github.com/ManimCommunity/manim/pull/4531)
### Code Quality & Refactoring 🧹[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#code-quality-refactoring "Link to this heading")
* Rework and consolidate release changelog script, add previously skipped changelog entries by [@behackl](https://github.com/behackl)
in [PR #4568](https://github.com/ManimCommunity/manim/pull/4568)
* Remove `__future__.annotations` from required imports by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #4571](https://github.com/ManimCommunity/manim/pull/4571)
* Cleaned up `mypy.ini` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4584](https://github.com/ManimCommunity/manim/pull/4584)
* Add `py.typed` to declare manim as having type hints by [@Timmmm](https://github.com/Timmmm)
in [PR #4553](https://github.com/ManimCommunity/manim/pull/4553)
* Fix assertion in `ImageMobjectFromCamera.interpolate_color()` by [@chopan050](https://github.com/chopan050)
in [PR #4593](https://github.com/ManimCommunity/manim/pull/4593)
* Reduce dependency on scipy - replace `scipy.special.comb` with `math.comb` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4598](https://github.com/ManimCommunity/manim/pull/4598)
### Type Hints 📝[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#type-hints "Link to this heading")
* Add type annotations to `rotation.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4535](https://github.com/ManimCommunity/manim/pull/4535)
* Add type annotations to `opengl_compatibility.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4585](https://github.com/ManimCommunity/manim/pull/4585)
* Add type annotations to `image_mobject.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4458](https://github.com/ManimCommunity/manim/pull/4458)
* Add type annotations to `opengl_image_mobject.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4536](https://github.com/ManimCommunity/manim/pull/4536)
* Add type annotations to `point_cloud_mobject.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4586](https://github.com/ManimCommunity/manim/pull/4586)
New Contributors[¶](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html#new-contributors "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------
* [@arnaud-ma](https://github.com/arnaud-ma)
made their first contribution in [PR #4533](https://github.com/ManimCommunity/manim/pull/4533)
* [@Schefflera-Arboricola](https://github.com/Schefflera-Arboricola)
made their first contribution in [PR #4501](https://github.com/ManimCommunity/manim/pull/4501)
* [@BHearron](https://github.com/BHearron)
made their first contribution in [PR #4435](https://github.com/ManimCommunity/manim/pull/4435)
* [@RinZ27](https://github.com/RinZ27)
made their first contribution in [PR #4557](https://github.com/ManimCommunity/manim/pull/4557)
* [@SoldierSacha](https://github.com/SoldierSacha)
made their first contribution in [PR #4567](https://github.com/ManimCommunity/manim/pull/4567)
* [@Oll-iver](https://github.com/Oll-iver)
made their first contribution in [PR #4547](https://github.com/ManimCommunity/manim/pull/4547)
* [@GoThrones](https://github.com/GoThrones)
made their first contribution in [PR #4597](https://github.com/ManimCommunity/manim/pull/4597)
* [@danielalanbates](https://github.com/danielalanbates)
made their first contribution in [PR #4596](https://github.com/ManimCommunity/manim/pull/4596)
**Full Changelog**: [Compare view](https://github.com/ManimCommunity/manim/compare/v0.19.2...v0.20.0)
---
# v0.13.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.13.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.13.0-changelog.rst "Edit this page")
v0.13.0[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#v0-13-0 "Link to this heading")
==================================================================================================================
Date:
December 04, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 27 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* Filip +
* John Ingles +
* Laith Bahodi
* Lucas Ricci +
* Marcin Serwin +
* Mysaa
* Naveen M K
* Ricky +
* Viicos
* ask09ok +
* citrusmunch +
* icedcoffeeee
* mostlyaman +
* vmiezys +
* zhujisheng +
The patches included in this release have been reviewed by the following contributors.
* Alex Lembcke
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* Filip
* Hugues Devimeux
* Jan-Hendrik Müller
* Laith Bahodi
* Lucas Ricci
* Naveen M K
* Oliver
* Ryan McCauley
* Viicos
* ask09ok
* icedcoffeeee
* mostlyaman
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 39 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#highlights "Link to this heading")
* [PR #2313](https://github.com/ManimCommunity/manim/pull/2313)
: Finalized translation process and documentation
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #2331](https://github.com/ManimCommunity/manim/pull/2331)
: Removed deprecations up to `v0.12.0`
* Removed `distance` parameters from [`ThreeDCamera`](https://docs.manim.community/en/stable/reference/manim.camera.three_d_camera.ThreeDCamera.html#manim.camera.three_d_camera.ThreeDCamera "manim.camera.three_d_camera.ThreeDCamera")
(replacement: `focal_distance`)
* Removed `min_distance_to_new_point` parameter from [`TracedPath`](https://docs.manim.community/en/stable/reference/manim.animation.changing.TracedPath.html#manim.animation.changing.TracedPath "manim.animation.changing.TracedPath")
* Removed `positive_space_ratio` and `dash_spacing` parameters from [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
* Removed `_in_place` methods from [`mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#module-manim.mobject.mobject "manim.mobject.mobject")
* Removed `ReconfigurableScene`
* Removed `SampleSpaceScene`
* [PR #2312](https://github.com/ManimCommunity/manim/pull/2312)
: Replaced all occurrences of `set_submobjects`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#new-features "Link to this heading")
* [PR #2314](https://github.com/ManimCommunity/manim/pull/2314)
: Added basic support for adding subcaptions via [`Scene.add_subcaption()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.add_subcaption "manim.scene.scene.Scene.add_subcaption")
* New method [`Scene.add_subcaption()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.add_subcaption "manim.scene.scene.Scene.add_subcaption")
* New keyword arguments `subcaption`, `subcaption_duration`, `subcaption_offset` for [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
* [PR #2267](https://github.com/ManimCommunity/manim/pull/2267)
: Implemented [`CoordinateSystem.plot_antiderivative_graph()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_antiderivative_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_antiderivative_graph")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#enhancements "Link to this heading")
* [PR #2347](https://github.com/ManimCommunity/manim/pull/2347)
: Moved `manim_directive.py` to `manim.utils.docbuild`
* [PR #2340](https://github.com/ManimCommunity/manim/pull/2340)
: Added documentation for [`animation.growing`](https://docs.manim.community/en/stable/reference/manim.animation.growing.html#module-manim.animation.growing "manim.animation.growing")
and improved [`SpinInFromNothing`](https://docs.manim.community/en/stable/reference/manim.animation.growing.SpinInFromNothing.html#manim.animation.growing.SpinInFromNothing "manim.animation.growing.SpinInFromNothing")
* [PR #2343](https://github.com/ManimCommunity/manim/pull/2343)
: Replaced current tree layout algorithm with SageMath’s for improved layout of large trees
* [PR #2351](https://github.com/ManimCommunity/manim/pull/2351)
: Added missing `**kwargs` parameter to [`Table.add_highlighted_cell()`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.add_highlighted_cell "manim.mobject.table.Table.add_highlighted_cell")
* [PR #2344](https://github.com/ManimCommunity/manim/pull/2344)
: Resized SVG logos, fit content to canvas
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2359](https://github.com/ManimCommunity/manim/pull/2359)
: Resolved `ValueError` when calling `manim cfg write`
* [PR #2276](https://github.com/ManimCommunity/manim/pull/2276)
: Fixed bug with alignment of z-axis in [`ThreeDAxes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes")
* [PR #2325](https://github.com/ManimCommunity/manim/pull/2325)
: Several improvements to handling of `quality` argument
* [PR #2335](https://github.com/ManimCommunity/manim/pull/2335)
: Fixed bug with zooming camera and `PointCloud`
* [PR #2328](https://github.com/ManimCommunity/manim/pull/2328)
: Fixed bug causing incorrect RGBA values to be passed to cairo
* [PR #2292](https://github.com/ManimCommunity/manim/pull/2292)
: Fixed positioning of [`Flash`](https://docs.manim.community/en/stable/reference/manim.animation.indication.Flash.html#manim.animation.indication.Flash "manim.animation.indication.Flash")
* [PR #2262](https://github.com/ManimCommunity/manim/pull/2262)
: Fixed wrong cell coordinates with [`Table.get_cell()`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_cell "manim.mobject.table.Table.get_cell")
after scaling
* [PR #2280](https://github.com/ManimCommunity/manim/pull/2280)
: Fixed [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
color when number of displayed digits changes
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2354](https://github.com/ManimCommunity/manim/pull/2354)
: Port over docs and typings from `mobject.py` and `vectorized_mobject.py` to their OpenGL counterparts
* [PR #2350](https://github.com/ManimCommunity/manim/pull/2350)
: Added mention of Manim sideview extension for VS Code
* [PR #2342](https://github.com/ManimCommunity/manim/pull/2342)
: Removed `get_graph()` usage from [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
example
* [PR #2216](https://github.com/ManimCommunity/manim/pull/2216)
: Edited and added new sections to the quickstart tutorial
* [PR #2279](https://github.com/ManimCommunity/manim/pull/2279)
: Added documentation for discontinuous functions
* [PR #2319](https://github.com/ManimCommunity/manim/pull/2319)
: Swapped `dotL` and `dotR` in [`Mobject.interpolate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.interpolate "manim.mobject.mobject.Mobject.interpolate")
example
* [PR #2230](https://github.com/ManimCommunity/manim/pull/2230)
: Copyedited building blocks tutorial
* [PR #2310](https://github.com/ManimCommunity/manim/pull/2310)
: Clarified that Manim does not support Python 3.10 yet in the documentation
* [PR #2294](https://github.com/ManimCommunity/manim/pull/2294)
: Made documentation front page more concise and rearranged order of tutorials
* [PR #2287](https://github.com/ManimCommunity/manim/pull/2287)
: Replace link to old interactive notebook
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #2346](https://github.com/ManimCommunity/manim/pull/2346)
: Made `frames_comparsion` decorator for frame testing a proper module of the library
* [PR #2318](https://github.com/ManimCommunity/manim/pull/2318)
: Added tests for `remover` keyword argument of [`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
* [PR #2301](https://github.com/ManimCommunity/manim/pull/2301)
: Added a test for [`ThreeDScene.add_fixed_in_frame_mobjects()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.add_fixed_in_frame_mobjects "manim.scene.three_d_scene.ThreeDScene.add_fixed_in_frame_mobjects")
* [PR #2274](https://github.com/ManimCommunity/manim/pull/2274)
: Optimized some tests to reduce duration
* [PR #2272](https://github.com/ManimCommunity/manim/pull/2272)
: Added test for [`Broadcast`](https://docs.manim.community/en/stable/reference/manim.animation.specialized.Broadcast.html#manim.animation.specialized.Broadcast "manim.animation.specialized.Broadcast")
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2327](https://github.com/ManimCommunity/manim/pull/2327)
: Corrected type hint for `labels` keyword argument of [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
* [PR #2329](https://github.com/ManimCommunity/manim/pull/2329)
: Remove unintended line break in README
* [PR #2305](https://github.com/ManimCommunity/manim/pull/2305)
: Corrected type hint `discontinuities` argument for [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
* [PR #2300](https://github.com/ManimCommunity/manim/pull/2300)
: Add contact email for PyPi
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#new-releases "Link to this heading")
* [PR #2353](https://github.com/ManimCommunity/manim/pull/2353)
: Prepare new release: `v0.13.0`
### Unclassified changes[¶](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html#unclassified-changes "Link to this heading")
* [PR #2348](https://github.com/ManimCommunity/manim/pull/2348)
: Updated translation source files
---
# module_parsing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.docbuild.module_parsing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.docbuild.module_parsing.rst "Edit this page")
module\_parsing[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#module-manim.utils.docbuild.module_parsing "Link to this heading")
================================================================================================================================================================================
Read and parse all the Manim modules and extract documentation from them.
Type Aliases
class AliasInfo[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasInfo "Link to this definition")
dict\[str, str\]
Dictionary with a definition key containing the definition of a `TypeAlias` as a string, and optionally a doc key containing the documentation for that alias, if it exists.
class AliasCategoryDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasCategoryDict "Link to this definition")
dict\[str, [`AliasInfo`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasInfo "manim.utils.docbuild.module_parsing.AliasInfo")\
\]
Dictionary which holds an [`AliasInfo`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasInfo "manim.utils.docbuild.module_parsing.AliasInfo")
for every alias name in a same category.
class ModuleLevelAliasDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.ModuleLevelAliasDict "Link to this definition")
dict\[str, [`AliasCategoryDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasCategoryDict "manim.utils.docbuild.module_parsing.AliasCategoryDict")\
\]
Dictionary containing every `TypeAlias` defined in a module, classified by category in different [`AliasCategoryDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasCategoryDict "manim.utils.docbuild.module_parsing.AliasCategoryDict")
objects.
class ModuleTypeVarDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.ModuleTypeVarDict "Link to this definition")
dict\[str, str\]
Dictionary containing every `TypeVar` defined in a module.
class AliasDocsDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasDocsDict "Link to this definition")
dict\[str, [`ModuleLevelAliasDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.ModuleLevelAliasDict "manim.utils.docbuild.module_parsing.ModuleLevelAliasDict")\
\]
Dictionary which, for every module in Manim, contains documentation about their module-level attributes which are explicitly defined as `TypeAlias`, separating them from the rest of attributes.
class DataDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.DataDict "Link to this definition")
dict\[str, list\[str\]\]
Type for a dictionary which, for every module, contains a list with the names of all their DOCUMENTED module-level attributes (identified by Sphinx via the `data` role, hence the name) which are NOT explicitly defined as `TypeAlias`.
class TypeVarDict[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.TypeVarDict "Link to this definition")
dict\[str, [`ModuleTypeVarDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.ModuleTypeVarDict "manim.utils.docbuild.module_parsing.ModuleTypeVarDict")\
\]
A dictionary mapping module names to dictionaries of `TypeVar` objects.
Functions
parse\_module\_attributes()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/docbuild/module_parsing.html#parse_module_attributes)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.parse_module_attributes "Link to this definition")
Read all files, generate Abstract Syntax Trees from them, and extract useful information about the type aliases defined in the files: the category they belong to, their definition and their description, separating them from the “regular” module attributes.
Returns:
* **ALIAS\_DOCS\_DICT** ([`AliasDocsDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasDocsDict "manim.utils.docbuild.module_parsing.AliasDocsDict")
) – A dictionary containing the information from all the type aliases in Manim. See [`AliasDocsDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.AliasDocsDict "manim.utils.docbuild.module_parsing.AliasDocsDict")
for more information.
* **DATA\_DICT** ([`DataDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.DataDict "manim.utils.docbuild.module_parsing.DataDict")
) – A dictionary containing the names of all DOCUMENTED module-level attributes which are not a `TypeAlias`.
* **TYPEVAR\_DICT** ([`TypeVarDict`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.module_parsing.html#manim.utils.docbuild.module_parsing.TypeVarDict "manim.utils.docbuild.module_parsing.TypeVarDict")
) – A dictionary containing the definitions of `TypeVar` objects, organized by modules.
Return type:
tuple\[TypeAliasForwardRef(‘~manim.utils.docbuild.module\_parsing.AliasDocsDict’), TypeAliasForwardRef(‘~manim.utils.docbuild.module\_parsing.DataDict’), TypeAliasForwardRef(‘~manim.utils.docbuild.module\_parsing.TypeVarDict’)\]
---
# hashing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.hashing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.hashing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.hashing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.hashing.rst "Edit this page")
hashing[¶](https://docs.manim.community/en/stable/reference/manim.utils.hashing.html#module-manim.utils.hashing "Link to this heading")
========================================================================================================================================
Utilities for scene caching.
Functions
get\_hash\_from\_play\_call(_scene\_object_, _camera\_object_, _animations\_list_, _current\_mobjects\_list_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/hashing.html#get_hash_from_play_call)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.hashing.html#manim.utils.hashing.get_hash_from_play_call "Link to this definition")
Take the list of animations and a list of mobjects and output their hashes. This is meant to be used for scene.play function.
Parameters:
* **scene\_object** ([_Scene_](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene "manim.scene.scene.Scene")
) – The scene object.
* **camera\_object** ([_Camera_](https://docs.manim.community/en/stable/reference/manim.camera.camera.Camera.html#manim.camera.camera.Camera "manim.camera.camera.Camera")
_|_ _OpenGLCamera_) – The camera object used in the scene.
* **animations\_list** (_Iterable__\[_[_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The list of animations.
* **current\_mobjects\_list** (_Iterable__\[_[_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")\
_\]_) – The list of mobjects.
Returns:
A string concatenation of the respective hashes of camera\_object, animations\_list and current\_mobjects\_list, separated by \_.
Return type:
`str`
get\_json(_obj_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/hashing.html#get_json)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.hashing.html#manim.utils.hashing.get_json "Link to this definition")
Recursively serialize object to JSON using the `CustomEncoder` class.
Parameters:
**obj** (_Any_) – The dict to flatten
Returns:
The flattened object
Return type:
`str`
---
# v0.19.2 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.19.2-changelog.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.19.2-changelog.md "Edit this page")
v0.19.2[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#v0-19-2 "Link to this heading")
==================================================================================================================
Date
January 17, 2026
What’s Changed[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#what-s-changed "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### Highlights 🌟[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#highlights "Link to this heading")
* Add support for Python 3.14, bump minimum Python to 3.11 and av to 14.0.1 by [@behackl](https://github.com/behackl)
in [PR #4385](https://github.com/ManimCommunity/manim/pull/4385)
### Bug Fixes 🐛[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#bug-fixes "Link to this heading")
* Fix argument passed to `get_hash_from_play_call` in hashing by [@judenimo](https://github.com/judenimo)
in [PR #4524](https://github.com/ManimCommunity/manim/pull/4524)
* Fix incorrect `Circle.point_at_angle` calculation by [@Swarnlataaa](https://github.com/Swarnlataaa)
in [PR #4438](https://github.com/ManimCommunity/manim/pull/4438)
### Testing 🧪[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#testing "Link to this heading")
* Test on Apple Silicon ARM64 by [@cclauss](https://github.com/cclauss)
in [PR #4496](https://github.com/ManimCommunity/manim/pull/4496)
### Code Quality & Refactoring 🧹[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#code-quality-refactoring "Link to this heading")
* Add ruff rules PERF for performance by [@cclauss](https://github.com/cclauss)
in [PR #4492](https://github.com/ManimCommunity/manim/pull/4492)
* Remove deprecation warning from pytest “np.trapz” -> “np.trapezoid” by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4513](https://github.com/ManimCommunity/manim/pull/4513)
* Bump Python target versions of both mypy and ruff by [@behackl](https://github.com/behackl)
in [PR #4520](https://github.com/ManimCommunity/manim/pull/4520)
* Replace legacy numpy usage – ruff rule NPY002 by [@cclauss](https://github.com/cclauss)
in [PR #4516](https://github.com/ManimCommunity/manim/pull/4516)
* Add `.github/release.yml` for improved classifications in automatically generated changelogs by [@behackl](https://github.com/behackl)
in [PR #4526](https://github.com/ManimCommunity/manim/pull/4526)
* Check and bump lower version requirements for dependencies by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4529](https://github.com/ManimCommunity/manim/pull/4529)
### Type Hints 📝[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#type-hints "Link to this heading")
* Add type annotations to `three_dimensions.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4497](https://github.com/ManimCommunity/manim/pull/4497)
### Other Changes[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#other-changes "Link to this heading")
* Prepare new release `v0.19.2` by [@behackl](https://github.com/behackl)
in [PR #4528](https://github.com/ManimCommunity/manim/pull/4528)
New Contributors[¶](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html#new-contributors "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------
* [@judenimo](https://github.com/judenimo)
made their first contribution in [PR #4524](https://github.com/ManimCommunity/manim/pull/4524)
* [@Swarnlataaa](https://github.com/Swarnlataaa)
made their first contribution in [PR #4438](https://github.com/ManimCommunity/manim/pull/4438)
**Full Changelog**: https://github.com/ManimCommunity/manim/compare/v0.19.1…v0.19.2
---
# v0.19.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.19.1-changelog.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.19.1-changelog.md "Edit this page")
v0.19.1[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#v0-19-1 "Link to this heading")
==================================================================================================================
Date
December 01, 2025
What’s Changed[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#what-s-changed "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### New Features[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#new-features "Link to this heading")
* Introduce seed in `random_color` method to produce colors deterministically by [@ishu9bansal](https://github.com/ishu9bansal)
in [PR #4265](https://github.com/ManimCommunity/manim/pull/4265)
* Add support for arithmetic operators `//`, `%`, `*`, `**` and `/` on `ValueTracker` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4351](https://github.com/ManimCommunity/manim/pull/4351)
* Add `TangentialArc` mobject by [@Brainsucker92](https://github.com/Brainsucker92)
in [PR #4469](https://github.com/ManimCommunity/manim/pull/4469)
### Fixed Bugs and Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#fixed-bugs-and-enhancements "Link to this heading")
* Fix environment formatting for Tex() mobject by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4159](https://github.com/ManimCommunity/manim/pull/4159)
* Improved consistency of rate\_function implementations by [@BenKirkels](https://github.com/BenKirkels)
in [PR #4144](https://github.com/ManimCommunity/manim/pull/4144)
* Make new `Code` mobject compatible with OpenGL renderer by [@behackl](https://github.com/behackl)
in [PR #4164](https://github.com/ManimCommunity/manim/pull/4164)
* Fix HSL color ordering in ManimColor by [@thehugwizard](https://github.com/thehugwizard)
in [PR #4202](https://github.com/ManimCommunity/manim/pull/4202)
* Fix return type of `Polygram.get_vertex_groups()` and rename variables in `.round_corners()` by [@chopan050](https://github.com/chopan050)
in [PR #4063](https://github.com/ManimCommunity/manim/pull/4063)
* Improve `Mobject.align_data` docstring by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4152](https://github.com/ManimCommunity/manim/pull/4152)
* Fix :meth:`VMobject.pointwise_become_partial` failing when `vmobject` is `self` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4193](https://github.com/ManimCommunity/manim/pull/4193)
* Fix `add_points_as_corners` not connecting single point to existing path by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4219](https://github.com/ManimCommunity/manim/pull/4219)
* Complete typing for logger\_utils.py by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4134](https://github.com/ManimCommunity/manim/pull/4134)
* Fix(graph): Allow any Line subclass as edge\_type in Graph/DiGraph by [@Akshat-Mishra-py](https://github.com/Akshat-Mishra-py)
in [PR #4251](https://github.com/ManimCommunity/manim/pull/4251)
* Replace exceptions, remove unused parameters, and fix type hints in `Animation`, `ShowPartial`, `Create`, `ShowPassingFlash`, and `DrawBorderThenFill` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4214](https://github.com/ManimCommunity/manim/pull/4214)
* Fix: `Axes` submobject colors are not being set properly by [@ishu9bansal](https://github.com/ishu9bansal)
in [PR #4291](https://github.com/ManimCommunity/manim/pull/4291)
* Refactor `Rotating` and add docstrings to `Mobject.rotate()` and `Rotating` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4147](https://github.com/ManimCommunity/manim/pull/4147)
* Fix default config of `manim init project` to use correct `pixel_height` and `pixel_width` by [@StevenH34](https://github.com/StevenH34)
in [PR #4213](https://github.com/ManimCommunity/manim/pull/4213)
* Handle opacity and transparent images by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4313](https://github.com/ManimCommunity/manim/pull/4313)
* Gracefully fall back when version metadata is missing by [@mohiuddin-khan-shiam](https://github.com/mohiuddin-khan-shiam)
in [PR #4324](https://github.com/ManimCommunity/manim/pull/4324)
* Fix for issue 4255 - Do not clear points when the number of curves is zero by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4320](https://github.com/ManimCommunity/manim/pull/4320)
* Use utf-8 encoding to read generated .tex files. by [@OliverStrait](https://github.com/OliverStrait)
in [PR #4334](https://github.com/ManimCommunity/manim/pull/4334)
* Add zero to vmobject points to remove negative zeros in `get_mobject_key` by [@elshorbagyx](https://github.com/elshorbagyx)
in [PR #4332](https://github.com/ManimCommunity/manim/pull/4332)
* Ensure `stroke_width` attribute of `SVGMobject` is not set to `None` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4319](https://github.com/ManimCommunity/manim/pull/4319)
* Fix `Prism` incorrectly rendering with `dimensions=[2, 2, 2]` in OpenGL by [@ra1u](https://github.com/ra1u)
in [PR #4003](https://github.com/ManimCommunity/manim/pull/4003)
* Fix `BraceLabel.change_label()` and document `BraceText` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4347](https://github.com/ManimCommunity/manim/pull/4347)
* Include `Text.gradient` in hash to properly regenerate `Text` when its gradient changes by [@AbhilashaTandon](https://github.com/AbhilashaTandon)
in [PR #4099](https://github.com/ManimCommunity/manim/pull/4099)
* Fixed surface animations in OpenGL by [@nubDotDev](https://github.com/nubDotDev)
in [PR #4286](https://github.com/ManimCommunity/manim/pull/4286)
* Add type hints and support for arithmetic operators `+` and `-` on `ValueTracker` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4129](https://github.com/ManimCommunity/manim/pull/4129)
* Fix duplicate references in `Scene.mobjects` after `ReplacementTransform` with existing target mobject by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4242](https://github.com/ManimCommunity/manim/pull/4242)
* Optimize `always_redraw()` by reducing `Mobject` copying in `Mobject.become()` by [@chopan050](https://github.com/chopan050)
in [PR #4357](https://github.com/ManimCommunity/manim/pull/4357)
* Enhance `manim cfg show` output and add info-level logging for config files read by [@xnov18](https://github.com/xnov18)
in [PR #4375](https://github.com/ManimCommunity/manim/pull/4375)
* Let `Cube` use Bevel type line joints by [@nubDotDev](https://github.com/nubDotDev)
in [PR #4361](https://github.com/ManimCommunity/manim/pull/4361)
* Properly define `init_points` methods for use in OpenGL instead of defining `init_points = generate_points` by [@chopan050](https://github.com/chopan050)
in [PR #4360](https://github.com/ManimCommunity/manim/pull/4360)
* Allow passing a tuple to `buff` in `SurroundingRectangle` to specify buffer in x and y direction independently by [@nubDotDev](https://github.com/nubDotDev)
in [PR #4390](https://github.com/ManimCommunity/manim/pull/4390)
* Rewrite `color_gradient` to always return a list of ManimColors by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4380](https://github.com/ManimCommunity/manim/pull/4380)
* Ensure leading whitespace does not change line height for lines in CodeMobject by [@behackl](https://github.com/behackl)
in [PR #4392](https://github.com/ManimCommunity/manim/pull/4392)
* Simplify the function `remove_invisible_chars` in `text_mobject.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4394](https://github.com/ManimCommunity/manim/pull/4394)
* Fix some config options specified via `--config_file` not being respected properly by [@behackl](https://github.com/behackl)
in [PR #4401](https://github.com/ManimCommunity/manim/pull/4401)
* Fix: Correct resolution tuple order to (height, width) by [@Nikhil172913832](https://github.com/Nikhil172913832)
in [PR #4440](https://github.com/ManimCommunity/manim/pull/4440)
* Ensure that start and end points are stored as float values in Line3D by [@SirJamesClarkMaxwell](https://github.com/SirJamesClarkMaxwell)
in [PR #4080](https://github.com/ManimCommunity/manim/pull/4080)
* OpenGL: Fix iterated nesting in `DecimalNumber.set_value` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4373](https://github.com/ManimCommunity/manim/pull/4373)
* Update default resolution in CLI to match Manim’s 1920x1080 default settings by [@SASHAKT1290](https://github.com/SASHAKT1290)
in [PR #4452](https://github.com/ManimCommunity/manim/pull/4452)
* Better parsing of color styles in CodeMobject by [@SirJamesClarkMaxwell](https://github.com/SirJamesClarkMaxwell)
in [PR #4454](https://github.com/ManimCommunity/manim/pull/4454)
* Allow selection of all scenes to render using ‘\*’ by [@NightyStudios](https://github.com/NightyStudios)
in [PR #4470](https://github.com/ManimCommunity/manim/pull/4470)
* Prevent mutation of `about_point` in `apply_points_function_about_point` by [@Morkunas](https://github.com/Morkunas)
in [PR #4478](https://github.com/ManimCommunity/manim/pull/4478)
* Fix behavior of `Mobject.suspend_updating`: when only suspending parent mobject, let children continue updating by [@behackl](https://github.com/behackl)
in [PR #4402](https://github.com/ManimCommunity/manim/pull/4402)
* Allow passing a `buff` to `LabeledDot` by [@nubDotDev](https://github.com/nubDotDev)
in [PR #4403](https://github.com/ManimCommunity/manim/pull/4403)
* Pass ndarrays to `mapbox_earcut.triangulate_float32()` to fix `TypeError` in `mapbox_earcut==2.0.0` by [@GuiCT](https://github.com/GuiCT)
in [PR #4479](https://github.com/ManimCommunity/manim/pull/4479)
* Fix duplicated arrow tips in DashedVMobject (issue #3220) by [@jakekinchen](https://github.com/jakekinchen)
in [PR #4484](https://github.com/ManimCommunity/manim/pull/4484)
### Documentation[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#documentation "Link to this heading")
* Add docstring to :meth:`.Mobject.get_family` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4127](https://github.com/ManimCommunity/manim/pull/4127)
* Fix link formatting and clarify the distinction between Manim versions in index.rst by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4131](https://github.com/ManimCommunity/manim/pull/4131)
* Add instructions for installing system utilities `cairo` and `pkg-config` via Homebrew on MacOS by [@behackl](https://github.com/behackl)
in [PR #4146](https://github.com/ManimCommunity/manim/pull/4146)
* Add missing line break in Code of Conduct’s conflict of interest policy by [@Hasan-Mesbaul-Ali-Taher](https://github.com/Hasan-Mesbaul-Ali-Taher)
in [PR #4185](https://github.com/ManimCommunity/manim/pull/4185)
* Fix links to Pango website by [@ragibson](https://github.com/ragibson)
in [PR #4217](https://github.com/ManimCommunity/manim/pull/4217)
* Replace poetry with uv in the README by [@xinoehp512](https://github.com/xinoehp512)
in [PR #4226](https://github.com/ManimCommunity/manim/pull/4226)
* Improve docstring for `interpolate` method in `Mobject` class by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4149](https://github.com/ManimCommunity/manim/pull/4149)
* Add docstrings to `Line` and remove `None` handling for `path_arc` parameter by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4223](https://github.com/ManimCommunity/manim/pull/4223)
* Add docstring to :meth:`Mobject.family_members_with_points` by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4128](https://github.com/ManimCommunity/manim/pull/4128)
* Update incorrect docstring for :attr:`ManimConfig.gui_location` property by [@SAYAN02-DEV](https://github.com/SAYAN02-DEV)
in [PR #4254](https://github.com/ManimCommunity/manim/pull/4254)
* Fix formatting of color space documentation by [@behackl](https://github.com/behackl)
in [PR #4274](https://github.com/ManimCommunity/manim/pull/4274)
* Enhance and Paraphrase Description of ManimCE in README.md by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4141](https://github.com/ManimCommunity/manim/pull/4141)
* docs: add explanation about the rate\_func in the custom animation by [@pedropxoto](https://github.com/pedropxoto)
in [PR #4278](https://github.com/ManimCommunity/manim/pull/4278)
* Fixed artifact in docstring of Animation by [@barollet](https://github.com/barollet)
in [PR #4283](https://github.com/ManimCommunity/manim/pull/4283)
* Rename update function `dot_position` to `update_label` in `.add_updater` example by [@irvanalhaq9](https://github.com/irvanalhaq9)
in [PR #4196](https://github.com/ManimCommunity/manim/pull/4196)
* Fix Microsoft typo in `TexFontTemplateLibrary` scene in `example_scenes/advanced_tex_fonts.py` by [@alterdim](https://github.com/alterdim)
in [PR #4305](https://github.com/ManimCommunity/manim/pull/4305)
* Improved readability, grammar, as well as added docstrings for consistency by [@NASAnerd05](https://github.com/NASAnerd05)
in [PR #4267](https://github.com/ManimCommunity/manim/pull/4267)
* Add docstrings for `ChangingDecimal` and `ChangeDecimalToValue` by [@haveheartt](https://github.com/haveheartt)
in [PR #4346](https://github.com/ManimCommunity/manim/pull/4346)
* Fix Sphinx exceptions when trying to build documentation via latex / as pdf by [@behackl](https://github.com/behackl)
in [PR #4370](https://github.com/ManimCommunity/manim/pull/4370)
* Added license information to documentation landing page by [@Nikil-D-Gr8](https://github.com/Nikil-D-Gr8)
in [PR #3986](https://github.com/ManimCommunity/manim/pull/3986)
* Set the default Python version to 3.13 in the uv installation guide by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4480](https://github.com/ManimCommunity/manim/pull/4480)
### Maintenance and Testing[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#maintenance-and-testing "Link to this heading")
* Change project management tool from poetry to uv by [@behackl](https://github.com/behackl)
in [PR #4138](https://github.com/ManimCommunity/manim/pull/4138)
* Re-add ffmpeg as dependency within Docker image by [@behackl](https://github.com/behackl)
in [PR #4150](https://github.com/ManimCommunity/manim/pull/4150)
* Add tests for Matrix, DecimalMatrix, IntegerMatrix by [@pdrzan](https://github.com/pdrzan)
in [PR #4279](https://github.com/ManimCommunity/manim/pull/4279)
* Add tests for polylabel utility by [@giolucasd](https://github.com/giolucasd)
in [PR #4269](https://github.com/ManimCommunity/manim/pull/4269)
* Add support for `pycodestyle W` rule in Ruff by [@KaiqueDultra](https://github.com/KaiqueDultra)
in [PR #4276](https://github.com/ManimCommunity/manim/pull/4276)
* Fix files with few MyPy typing errors by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4263](https://github.com/ManimCommunity/manim/pull/4263)
* Explicitly mention all files that mypy should ignore in the `mypy.ini` configuration file by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4306](https://github.com/ManimCommunity/manim/pull/4306)
* Remove dead code from `scene.py` and `vector_space_scene.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4310](https://github.com/ManimCommunity/manim/pull/4310)
* Add type annotations to `scene.py` and `vector_space_scene.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4260](https://github.com/ManimCommunity/manim/pull/4260)
* Replace setup-texlive-action in CI workflow by [@behackl](https://github.com/behackl)
in [PR #4326](https://github.com/ManimCommunity/manim/pull/4326)
* Adding type annotations to polyhedra.py and matrix.py by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4322](https://github.com/ManimCommunity/manim/pull/4322)
* Handling typing errors in text/numbers.py by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4317](https://github.com/ManimCommunity/manim/pull/4317)
* Move `configure_pygui` into a `Scene` method and remove `manim.gui` by [@chopan050](https://github.com/chopan050)
in [PR #4314](https://github.com/ManimCommunity/manim/pull/4314)
* Add typing annotations to svg\_mobject.py by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4318](https://github.com/ManimCommunity/manim/pull/4318)
* Add type annotations to `mobject/svg/brace.py` and default to `label_constructor=Text` in `BraceText` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4309](https://github.com/ManimCommunity/manim/pull/4309)
* Add classes `MethodWithArgs`, `SceneInteractContinue` and `SceneInteractRerun` inside new module `manim.data_structures` by [@chopan050](https://github.com/chopan050)
in [PR #4315](https://github.com/ManimCommunity/manim/pull/4315)
* Fix typo in import of OpenGLCamera in `utils/hashing.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4352](https://github.com/ManimCommunity/manim/pull/4352)
* Add type annotations to `manim/renderer/shader.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4350](https://github.com/ManimCommunity/manim/pull/4350)
* Add type annotations to `tex_mobject.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4355](https://github.com/ManimCommunity/manim/pull/4355)
* Add type annotations to `three_d_camera.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4356](https://github.com/ManimCommunity/manim/pull/4356)
* Revert change of default value for tex\_environment by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4358](https://github.com/ManimCommunity/manim/pull/4358)
* Add type hints to `scene_file_writer.py`, `section.py`, and `zoomed_scene.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4133](https://github.com/ManimCommunity/manim/pull/4133)
* Add type annotations for most of `camera` and `mobject.graphing` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4125](https://github.com/ManimCommunity/manim/pull/4125)
* Add `VectorNDLike` type aliases by [@chopan050](https://github.com/chopan050)
in [PR #4068](https://github.com/ManimCommunity/manim/pull/4068)
* Add type annotations to `dot_cloud.py`, `vectorized_mobject_rendering.py` and `opengl_three_dimensions.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4359](https://github.com/ManimCommunity/manim/pull/4359)
* Add type annotations to `indication.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4367](https://github.com/ManimCommunity/manim/pull/4367)
* Add type annotations to `composition.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4366](https://github.com/ManimCommunity/manim/pull/4366)
* Add type annotations to `growing.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4368](https://github.com/ManimCommunity/manim/pull/4368)
* Add type annotations to `movement.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4371](https://github.com/ManimCommunity/manim/pull/4371)
* Exclude check for cyclic imports by CodeQL by [@behackl](https://github.com/behackl)
in [PR #4384](https://github.com/ManimCommunity/manim/pull/4384)
* Refactor imports from `collections.abc`, `typing` and `typing_extensions` for Python 3.9 by [@chopan050](https://github.com/chopan050)
in [PR #4353](https://github.com/ManimCommunity/manim/pull/4353)
* Add type annotations to `opengl_renderer_window.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4363](https://github.com/ManimCommunity/manim/pull/4363)
* Rename `SceneFileWriter.save_final_image()` to `save_image()` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4378](https://github.com/ManimCommunity/manim/pull/4378)
* Add type annotations to `text_mobject.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4381](https://github.com/ManimCommunity/manim/pull/4381)
* Rename types like `RGBA_Array_Float` to `FloatRGBA` and add types like `FloatRGBA_Array` by [@chopan050](https://github.com/chopan050)
in [PR #4386](https://github.com/ManimCommunity/manim/pull/4386)
* Add type annotations to `opengl_geometry.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4396](https://github.com/ManimCommunity/manim/pull/4396)
* Add type annotations to `moving_camera.py` by [@henrikmidtiby](https://github.com/henrikmidtiby)
in [PR #4397](https://github.com/ManimCommunity/manim/pull/4397)
* Add type annotations to `opengl_mobject.py` by [@RBerga06](https://github.com/RBerga06)
in [PR #4398](https://github.com/ManimCommunity/manim/pull/4398)
* Fix failing pre-commit tests by [@cclauss](https://github.com/cclauss)
in [PR #4434](https://github.com/ManimCommunity/manim/pull/4434)
* Add type annotations to `cairo_renderer.py` by [@fmuenkel](https://github.com/fmuenkel)
in [PR #4393](https://github.com/ManimCommunity/manim/pull/4393)
* Fix type errors and add typings for `Mobject.apply_function()`, its derivatives, and other utility functions by [@godalming123](https://github.com/godalming123)
in [PR #4228](https://github.com/ManimCommunity/manim/pull/4228)
* Bump macOS image from deprecated macos-13 to macos-15-intel by [@chopan050](https://github.com/chopan050)
in [PR #4481](https://github.com/ManimCommunity/manim/pull/4481)
* Prepare new release `v0.19.1` and bump minimum required Python version to 3.10 by [@behackl](https://github.com/behackl)
in [PR #4490](https://github.com/ManimCommunity/manim/pull/4490)
### Dependency Version Changes[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#dependency-version-changes "Link to this heading")
* Bump typing extensions minimum version by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #4121](https://github.com/ManimCommunity/manim/pull/4121)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4122](https://github.com/ManimCommunity/manim/pull/4122)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4140](https://github.com/ManimCommunity/manim/pull/4140)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4148](https://github.com/ManimCommunity/manim/pull/4148)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4181](https://github.com/ManimCommunity/manim/pull/4181)
* Bump astral-sh/setup-uv from 5 to 6 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4234](https://github.com/ManimCommunity/manim/pull/4234)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4204](https://github.com/ManimCommunity/manim/pull/4204)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4391](https://github.com/ManimCommunity/manim/pull/4391)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4405](https://github.com/ManimCommunity/manim/pull/4405)
* Bump actions/setup-python from 5 to 6 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4433](https://github.com/ManimCommunity/manim/pull/4433)
* Bump actions/checkout from 4 to 5 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4418](https://github.com/ManimCommunity/manim/pull/4418)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4409](https://github.com/ManimCommunity/manim/pull/4409)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4460](https://github.com/ManimCommunity/manim/pull/4460)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
\[bot\] in [PR #4467](https://github.com/ManimCommunity/manim/pull/4467)
* Bump github/codeql-action from 3 to 4 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4466](https://github.com/ManimCommunity/manim/pull/4466)
* Bump astral-sh/setup-uv from 6 to 7 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4465](https://github.com/ManimCommunity/manim/pull/4465)
* Bump actions/upload-artifact from 4 to 5 by [@dependabot](https://github.com/dependabot)
\[bot\] in [PR #4464](https://github.com/ManimCommunity/manim/pull/4464)
New Contributors[¶](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html#new-contributors "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------
* [@BenKirkels](https://github.com/BenKirkels)
made their first contribution in [PR #4144](https://github.com/ManimCommunity/manim/pull/4144)
* [@Hasan-Mesbaul-Ali-Taher](https://github.com/Hasan-Mesbaul-Ali-Taher)
made their first contribution in [PR #4185](https://github.com/ManimCommunity/manim/pull/4185)
* [@ragibson](https://github.com/ragibson)
made their first contribution in [PR #4217](https://github.com/ManimCommunity/manim/pull/4217)
* [@thehugwizard](https://github.com/thehugwizard)
made their first contribution in [PR #4202](https://github.com/ManimCommunity/manim/pull/4202)
* [@xinoehp512](https://github.com/xinoehp512)
made their first contribution in [PR #4226](https://github.com/ManimCommunity/manim/pull/4226)
* [@SAYAN02-DEV](https://github.com/SAYAN02-DEV)
made their first contribution in [PR #4254](https://github.com/ManimCommunity/manim/pull/4254)
* [@Akshat-Mishra-py](https://github.com/Akshat-Mishra-py)
made their first contribution in [PR #4251](https://github.com/ManimCommunity/manim/pull/4251)
* [@pdrzan](https://github.com/pdrzan)
made their first contribution in [PR #4279](https://github.com/ManimCommunity/manim/pull/4279)
* [@pedropxoto](https://github.com/pedropxoto)
made their first contribution in [PR #4278](https://github.com/ManimCommunity/manim/pull/4278)
* [@giolucasd](https://github.com/giolucasd)
made their first contribution in [PR #4269](https://github.com/ManimCommunity/manim/pull/4269)
* [@KaiqueDultra](https://github.com/KaiqueDultra)
made their first contribution in [PR #4276](https://github.com/ManimCommunity/manim/pull/4276)
* [@ishu9bansal](https://github.com/ishu9bansal)
made their first contribution in [PR #4291](https://github.com/ManimCommunity/manim/pull/4291)
* [@StevenH34](https://github.com/StevenH34)
made their first contribution in [PR #4213](https://github.com/ManimCommunity/manim/pull/4213)
* [@alterdim](https://github.com/alterdim)
made their first contribution in [PR #4305](https://github.com/ManimCommunity/manim/pull/4305)
* [@mohiuddin-khan-shiam](https://github.com/mohiuddin-khan-shiam)
made their first contribution in [PR #4324](https://github.com/ManimCommunity/manim/pull/4324)
* [@elshorbagyx](https://github.com/elshorbagyx)
made their first contribution in [PR #4332](https://github.com/ManimCommunity/manim/pull/4332)
* [@NASAnerd05](https://github.com/NASAnerd05)
made their first contribution in [PR #4267](https://github.com/ManimCommunity/manim/pull/4267)
* [@ra1u](https://github.com/ra1u)
made their first contribution in [PR #4003](https://github.com/ManimCommunity/manim/pull/4003)
* [@AbhilashaTandon](https://github.com/AbhilashaTandon)
made their first contribution in [PR #4099](https://github.com/ManimCommunity/manim/pull/4099)
* [@nubDotDev](https://github.com/nubDotDev)
made their first contribution in [PR #4286](https://github.com/ManimCommunity/manim/pull/4286)
* [@haveheartt](https://github.com/haveheartt)
made their first contribution in [PR #4346](https://github.com/ManimCommunity/manim/pull/4346)
* [@xnov18](https://github.com/xnov18)
made their first contribution in [PR #4375](https://github.com/ManimCommunity/manim/pull/4375)
* [@Nikil-D-Gr8](https://github.com/Nikil-D-Gr8)
made their first contribution in [PR #3986](https://github.com/ManimCommunity/manim/pull/3986)
* [@RBerga06](https://github.com/RBerga06)
made their first contribution in [PR #4398](https://github.com/ManimCommunity/manim/pull/4398)
* [@Nikhil172913832](https://github.com/Nikhil172913832)
made their first contribution in [PR #4440](https://github.com/ManimCommunity/manim/pull/4440)
* [@SASHAKT1290](https://github.com/SASHAKT1290)
made their first contribution in [PR #4452](https://github.com/ManimCommunity/manim/pull/4452)
* [@Brainsucker92](https://github.com/Brainsucker92)
made their first contribution in [PR #4469](https://github.com/ManimCommunity/manim/pull/4469)
* [@NightyStudios](https://github.com/NightyStudios)
made their first contribution in [PR #4470](https://github.com/ManimCommunity/manim/pull/4470)
* [@Morkunas](https://github.com/Morkunas)
made their first contribution in [PR #4478](https://github.com/ManimCommunity/manim/pull/4478)
* [@GuiCT](https://github.com/GuiCT)
made their first contribution in [PR #4479](https://github.com/ManimCommunity/manim/pull/4479)
* [@godalming123](https://github.com/godalming123)
made their first contribution in [PR #4228](https://github.com/ManimCommunity/manim/pull/4228)
* [@jakekinchen](https://github.com/jakekinchen)
made their first contribution in [PR #4484](https://github.com/ManimCommunity/manim/pull/4484)
**Full Changelog**: https://github.com/ManimCommunity/manim/compare/v0.19.0…v0.19.1
---
# images - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.images.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.images.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.images.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.images.rst "Edit this page")
images[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#module-manim.utils.images "Link to this heading")
=====================================================================================================================================
Image manipulation utilities.
Functions
change\_to\_rgba\_array(_image_, _dtype\='uint8'_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/images.html#change_to_rgba_array)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#manim.utils.images.change_to_rgba_array "Link to this definition")
Converts an RGB array into RGBA with the alpha value opacity maxed.
Parameters:
* **image** ([_RGBPixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.RGBPixelArray "manim.typing.RGBPixelArray")
)
* **dtype** (_str_)
Return type:
[_RGBAPixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.RGBAPixelArray "manim.typing.RGBAPixelArray")
drag\_pixels(_frames_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/images.html#drag_pixels)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#manim.utils.images.drag_pixels "Link to this definition")
Parameters:
**frames** (_Sequence__\[_[_PixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")\
_\]_)
Return type:
list\[np.ndarray\]
get\_full\_raster\_image\_path(_image\_file\_name_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/images.html#get_full_raster_image_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#manim.utils.images.get_full_raster_image_path "Link to this definition")
Parameters:
**image\_file\_name** (_str_ _|_ _PurePath_)
Return type:
_Path_
get\_full\_vector\_image\_path(_image\_file\_name_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/images.html#get_full_vector_image_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#manim.utils.images.get_full_vector_image_path "Link to this definition")
Parameters:
**image\_file\_name** (_str_ _|_ _PurePath_)
Return type:
_Path_
invert\_image(_image_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/images.html#invert_image)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.images.html#manim.utils.images.invert_image "Link to this definition")
Parameters:
**image** ([_PixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
)
Return type:
---
# ipython_magic - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.ipython_magic.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.ipython_magic.rst "Edit this page")
ipython\_magic[¶](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.html#module-manim.utils.ipython_magic "Link to this heading")
===========================================================================================================================================================
Utilities for using Manim with IPython (in particular: Jupyter notebooks)
Classes
| | |
| --- | --- |
| [`ManimMagic`](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manim.utils.ipython_magic.ManimMagic "manim.utils.ipython_magic.ManimMagic") | Create a configurable given a config config. |
---
# v0.18.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.18.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.18.0-changelog.rst "Edit this page")
v0.18.0[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#v0-18-0 "Link to this heading")
==================================================================================================================
Date:
November 11, 2023
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 41 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Abulafia +
* Adhyyan Sekhsaria +
* Adrien Ludwig +
* Alex Kempen +
* Andres Berejnoi +
* Anousheh Moonen +
* Benjamin Hackl
* Francisco Manríquez Novoa
* Harald Schilly +
* Immanuel-Alvaro-Bhirawa +
* Jason Grace +
* Jason Villanueva
* Jinchu Li
* John Lynch +
* Jérome Eertmans
* Matt Turner +
* Narahari Rao +
* Naveen M K
* Nikhil Iyer +
* Ron Li +
* Sujal Singh +
* Tristan Schulz
* Uwe Zimmermann +
* Václav Blažej +
* Zachary Winkeler +
The patches included in this release have been reviewed by the following contributors.
* Alex Lembcke
* Andres Berejnoi
* Axel
* Benjamin Hackl
* Francisco Manríquez Novoa
* Immanuel-Alvaro-Bhirawa
* Jan-Hendrik Müller
* Jason Grace
* Jason Villanueva
* Jinchu Li
* John Lynch
* Jérome Eertmans
* Kevin Lubick
* Narahari Rao
* Naveen M K
* NotWearingPants
* SsNiPeR1
* TheMathematicFanatic
* Tristan Schulz
* Uwe Zimmermann
* Viicos
* icedcoffeeee
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 59 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#breaking-changes "Link to this heading")
* [PR #3020](https://github.com/ManimCommunity/manim/pull/3020)
: Rewrote Manim’s color system
This change removed the `colour` library as a dependency of Manim and replaced the internal handling of colors with the newly added [`ManimColor`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
. This also adds hundreds of new predefined colors, see [`utils.color`](https://docs.manim.community/en/stable/reference/manim.utils.color.html#module-manim.utils.color "manim.utils.color")
for more details. This should only be a breaking change if you have interacted directly with the `colour` module before. The general interface has been kept stable.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#highlights "Link to this heading")
* [PR #3299](https://github.com/ManimCommunity/manim/pull/3299)
: Added new `manim checkhealth` CLI subcommand
This adds a new command line interface subcommand which can be used to check whether a local installation of Manim has been configured correctly, and all required (and optional) dependencies are available. To try it, run it via `manim checkhealth` or `python -m manim checkhealth`.
* [PR #3427](https://github.com/ManimCommunity/manim/pull/3427)
: New feature: rendered examples in documentation can now be run directly via binder
This adds a “Make interactive” button below the examples in our documentation that establishes a connection to binder such that examples can be modified and rerendered directly from your browser.
* [PR #3086](https://github.com/ManimCommunity/manim/pull/3086)
: Introduced a new module [`typing`](https://docs.manim.community/en/stable/reference/manim.typing.html#module-manim.typing "manim.typing")
for type hints
This also adds various type hints to integral parts of the code base.
* [PR #3322](https://github.com/ManimCommunity/manim/pull/3322)
: Implemented auto-removal of auxiliary LaTeX files, enabled by default
This automatically removes auxiliary files creating during the compilation of LaTeX documents like `.aux` or `.dvi` files. This behavior can be controlled via the newly introduced `no_latex_cleanup` config key (`False` by default). On the command line, the autoremoval can be disabled via the `--no_latex_cleanup` CLI flag.
* [PR #3395](https://github.com/ManimCommunity/manim/pull/3395)
: Added support for Python 3.12
### New features[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#new-features "Link to this heading")
* [PR #3361](https://github.com/ManimCommunity/manim/pull/3361)
: Added three new rate functions
This adds the rate functions [`smoothstep()`](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smoothstep "manim.utils.rate_functions.smoothstep")
, [`smootherstep()`](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smootherstep "manim.utils.rate_functions.smootherstep")
, [`smoothererstep()`](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smoothererstep "manim.utils.rate_functions.smoothererstep")
based on the SmoothStep sigmoid functions.
* [PR #3264](https://github.com/ManimCommunity/manim/pull/3264)
: Added new mobjects [`LabeledLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledLine.html#manim.mobject.geometry.labeled.LabeledLine "manim.mobject.geometry.labeled.LabeledLine")
and [`LabeledArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledArrow.html#manim.mobject.geometry.labeled.LabeledArrow "manim.mobject.geometry.labeled.LabeledArrow")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#enhancements "Link to this heading")
* [PR #3190](https://github.com/ManimCommunity/manim/pull/3190)
: Made [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
mobjects compatible with [`input_to_graph_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point")
* [PR #3226](https://github.com/ManimCommunity/manim/pull/3226)
: Avoid using a mobject as a default argument of [`ArcBrace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.ArcBrace.html#manim.mobject.svg.brace.ArcBrace "manim.mobject.svg.brace.ArcBrace")
* [PR #3366](https://github.com/ManimCommunity/manim/pull/3366)
: Added spacing between values and unit in [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
This adds the new keyword argument `unit_buff_per_font_unit` (default: 0, for backwards compatibility). Setting it to some positive number creates additional space between the numeric value and the displayed unit.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #3205](https://github.com/ManimCommunity/manim/pull/3205)
: Fixed type hint of `angle` in [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
* [PR #3210](https://github.com/ManimCommunity/manim/pull/3210)
: Fixed [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
with `show_ellipsis=True` with the OpenGL renderer
* [PR #3211](https://github.com/ManimCommunity/manim/pull/3211)
: Fixed display issues with custom labels for [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
with the OpenGL renderer
* [PR #3298](https://github.com/ManimCommunity/manim/pull/3298)
: Fixed expand animation for [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
* [PR #3306](https://github.com/ManimCommunity/manim/pull/3306)
: Fixed IPython terminal history and embedded shell instantiation for scenes using [`Scene.interactive_embed()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.interactive_embed "manim.scene.scene.Scene.interactive_embed")
* [PR #3315](https://github.com/ManimCommunity/manim/pull/3315)
: Fixed issue with parameter types in [`Scene.add_subcaption()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.add_subcaption "manim.scene.scene.Scene.add_subcaption")
* [PR #3423](https://github.com/ManimCommunity/manim/pull/3423)
: Fixed incorrect submobject count of multi-part [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
mobjects
This resolves various issues where formulas were not displayed completely, like it was the case with `MathTex("1", "^{", "0")`.
* [PR #3284](https://github.com/ManimCommunity/manim/pull/3284)
: Fixed `LinearTransformationSceneExample` in Jupyter notebooks
* [PR #3302](https://github.com/ManimCommunity/manim/pull/3302)
: Fixed typo in comparison in `OpenGLVMobject.interpolate()`
* [PR #3340](https://github.com/ManimCommunity/manim/pull/3340)
: Fixed incorrect computation of bounding box for rotated [`ImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject "manim.mobject.types.image_mobject.ImageMobject")
* [PR #3343](https://github.com/ManimCommunity/manim/pull/3343)
: Fixed return value of [`TexTemplate.add_to_preamble()`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_preamble "manim.utils.tex.TexTemplate.add_to_preamble")
and [`TexTemplate.add_to_document()`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_document "manim.utils.tex.TexTemplate.add_to_document")
* [PR #3282](https://github.com/ManimCommunity/manim/pull/3282)
: Ensure that [`ArrowVectorField.get_vector()`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField.get_vector "manim.mobject.vector_field.ArrowVectorField.get_vector")
does not modify the passed inputs
* [PR #3392](https://github.com/ManimCommunity/manim/pull/3392)
: Fixed behavior of elongated tick lines for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
* [PR #3430](https://github.com/ManimCommunity/manim/pull/3430)
: Fixed CSV reader adding empty lists in rendering summary during documentation build
* [PR #3404](https://github.com/ManimCommunity/manim/pull/3404)
: Properly raise an exception on empty inputs to [`AddTextLetterByLetter`](https://docs.manim.community/en/stable/reference/manim.animation.creation.AddTextLetterByLetter.html#manim.animation.creation.AddTextLetterByLetter "manim.animation.creation.AddTextLetterByLetter")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #3219](https://github.com/ManimCommunity/manim/pull/3219)
: Enabled social cards for links to documentation
* [PR #3274](https://github.com/ManimCommunity/manim/pull/3274)
: Replaced incorrect mentions of Python 3.7 as the minimally required version
* [PR #3297](https://github.com/ManimCommunity/manim/pull/3297)
: Improved arrow tip sowcase example for [`ArrowTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTip.html#manim.mobject.geometry.tips.ArrowTip "manim.mobject.geometry.tips.ArrowTip")
* [PR #3312](https://github.com/ManimCommunity/manim/pull/3312)
: Added documentation for [`always_redraw()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.always_redraw "manim.animation.updaters.mobject_update_utils.always_redraw")
* [PR #3218](https://github.com/ManimCommunity/manim/pull/3218)
: Improved grammar in the [deep dive guide](https://docs.manim.community/en/stable/guides/deep_dive.html)
* [PR #3251](https://github.com/ManimCommunity/manim/pull/3251)
: Add LaTeX installation instructions for Fedora
* [PR #3290](https://github.com/ManimCommunity/manim/pull/3290)
: Updated required dependencies for MacOS installations
* [PR #3325](https://github.com/ManimCommunity/manim/pull/3325)
: Added documentation for functions in [`mobject_update_utils`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#module-manim.animation.updaters.mobject_update_utils "manim.animation.updaters.mobject_update_utils")
This adds docstrings and typehints to [`always_rotate()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.always_rotate "manim.animation.updaters.mobject_update_utils.always_rotate")
, [`always_shift()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.always_shift "manim.animation.updaters.mobject_update_utils.always_shift")
, [`turn_animation_into_updater()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.turn_animation_into_updater "manim.animation.updaters.mobject_update_utils.turn_animation_into_updater")
* [PR #3353](https://github.com/ManimCommunity/manim/pull/3353)
: Added documentation for [`Mobject.center()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.center "manim.mobject.mobject.Mobject.center")
* [PR #3355](https://github.com/ManimCommunity/manim/pull/3355)
: Temporarily enabled `htmlzip` build on ReadTheDocs
* [PR #3377](https://github.com/ManimCommunity/manim/pull/3377)
: Fixed a typo in the [deep dive guide](https://docs.manim.community/en/stable/guides/deep_dive.html)
* [PR #3389](https://github.com/ManimCommunity/manim/pull/3389)
: Removed superfluous curly braces in a LaTeX expression
* [PR #3417](https://github.com/ManimCommunity/manim/pull/3417)
: Replaced `htmlzip` ReadTheDocs build with workflow attaching downloadable documentation to GitHub releases
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #3416](https://github.com/ManimCommunity/manim/pull/3416)
: Fixed tests to run on Cairo 1.18.0
* [PR #3257](https://github.com/ManimCommunity/manim/pull/3257)
: Fix a configuration error concerning poetry
* [PR #3419](https://github.com/ManimCommunity/manim/pull/3419)
: Fixed caching of Cairo builds on CI runners
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #3229](https://github.com/ManimCommunity/manim/pull/3229)
: Made docbuild errors easier to debug and fixed error from changed exception class
* [PR #3231](https://github.com/ManimCommunity/manim/pull/3231)
: Fixed errors reported by `flake8`
* [PR #3232](https://github.com/ManimCommunity/manim/pull/3232)
: Upgrade ReadTheDocs build environment to use newer image
* [PR #3286](https://github.com/ManimCommunity/manim/pull/3286)
: Optimized [`Axes.coords_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.coords_to_point "manim.mobject.graphing.coordinate_systems.Axes.coords_to_point")
* [PR #3224](https://github.com/ManimCommunity/manim/pull/3224)
: Replace final few occurrences of `os.path` by `pathlib.Path`
* [PR #3236](https://github.com/ManimCommunity/manim/pull/3236)
: Return self in [`AbstractImageMobject.set_resampling_algorithm()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.set_resampling_algorithm "manim.mobject.types.image_mobject.AbstractImageMobject.set_resampling_algorithm")
* [PR #3253](https://github.com/ManimCommunity/manim/pull/3253)
: Bump tornado from 6.3.1 to 6.3.2
* [PR #3272](https://github.com/ManimCommunity/manim/pull/3272)
: Bump docker/build-push-action from 3 to 4
* [PR #3287](https://github.com/ManimCommunity/manim/pull/3287)
: Bump cryptography from 41.0.1 to 41.0.2
* [PR #3350](https://github.com/ManimCommunity/manim/pull/3350)
: Added missing dependency `typing-extensions`
* [PR #3431](https://github.com/ManimCommunity/manim/pull/3431)
: Bump teatimeguest/setup-texlive-action from 2 to 3
* [PR #3433](https://github.com/ManimCommunity/manim/pull/3433)
: Bump dependencies
* [PR #3399](https://github.com/ManimCommunity/manim/pull/3399)
: Updated several dependencies
* [PR #3397](https://github.com/ManimCommunity/manim/pull/3397)
: Several GitHub actions updates
* [PR #3405](https://github.com/ManimCommunity/manim/pull/3405)
: Updated manimpango version to fix error regarding type strictness
* [PR #3421](https://github.com/ManimCommunity/manim/pull/3421)
: Improved order of input checks when creating a tree graph
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html#new-releases "Link to this heading")
* [PR #3439](https://github.com/ManimCommunity/manim/pull/3439)
: Prepared new release: v0.18.0
---
# iterables - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.iterables.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.iterables.rst "Edit this page")
iterables[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#module-manim.utils.iterables "Link to this heading")
==============================================================================================================================================
Operations on iterables.
TypeVar’s
class T[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "Link to this definition")
TypeVar('T')
class U[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "Link to this definition")
TypeVar('U')
class F[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "Link to this definition")
TypeVar('F', np.float64, np.int\_)
class H[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.H "Link to this definition")
TypeVar('H', bound\=Hashable)
Functions
adjacent\_n\_tuples(_objects_, _n_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#adjacent_n_tuples)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.adjacent_n_tuples "Link to this definition")
Returns the Sequence objects cyclically split into n length tuples.
See also
[`adjacent_pairs`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.adjacent_pairs "manim.utils.iterables.adjacent_pairs")
alias with n=2
Examples
\>>> list(adjacent\_n\_tuples(\[1, 2, 3, 4\], 2))
\[(1, 2), (2, 3), (3, 4), (4, 1)\]
\>>> list(adjacent\_n\_tuples(\[1, 2, 3, 4\], 3))
\[(1, 2, 3), (2, 3, 4), (3, 4, 1), (4, 1, 2)\]
Parameters:
* **objects** (_Sequence__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **n** (_int_)
Return type:
zip\[tuple\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
, …\]\]
adjacent\_pairs(_objects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#adjacent_pairs)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.adjacent_pairs "Link to this definition")
Alias for `adjacent_n_tuples(objects, 2)`.
See also
[`adjacent_n_tuples`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.adjacent_n_tuples "manim.utils.iterables.adjacent_n_tuples")
Examples
\>>> list(adjacent\_pairs(\[1, 2, 3, 4\]))
\[(1, 2), (2, 3), (3, 4), (4, 1)\]
Parameters:
**objects** (_Sequence__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
Return type:
zip\[tuple\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
, …\]\]
all\_elements\_are\_instances(_iterable_, _Class_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#all_elements_are_instances)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.all_elements_are_instances "Link to this definition")
Returns `True` if all elements of iterable are instances of Class. False otherwise.
Parameters:
* **iterable** (_Iterable__\[__object__\]_)
* **Class** (_type__\[__object__\]_)
Return type:
bool
batch\_by\_property(_items_, _property\_func_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#batch_by_property)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.batch_by_property "Link to this definition")
Takes in a Sequence, and returns a list of tuples, (batch, prop) such that all items in a batch have the same output when put into the Callable property\_func, and such that chaining all these batches together would give the original Sequence (i.e. order is preserved).
Examples
\>>> batch\_by\_property(\[(1, 2), (3, 4), (5, 6, 7), (8, 9)\], len)
\[(\[(1, 2), (3, 4)\], 2), (\[(5, 6, 7)\], 3), (\[(8, 9)\], 2)\]
Parameters:
* **items** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **property\_func** (_Callable__\[__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]__,_ [_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
_\]_)
Return type:
list\[tuple\[list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\], [_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
| None\]\]
concatenate\_lists(_\*list\_of\_lists_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#concatenate_lists)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.concatenate_lists "Link to this definition")
Combines the Iterables provided as arguments into one list.
Examples
\>>> concatenate\_lists(\[1, 2\], \[3, 4\], \[5\])
\[1, 2, 3, 4, 5\]
Parameters:
**list\_of\_lists** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
Return type:
list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
hash\_obj(_obj_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#hash_obj)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.hash_obj "Link to this definition")
Determines a hash, even of potentially mutable objects.
Parameters:
**obj** (_object_)
Return type:
int
list\_difference\_update(_l1_, _l2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#list_difference_update)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.list_difference_update "Link to this definition")
Returns a list containing all the elements of l1 not in l2.
Examples
\>>> list\_difference\_update(\[1, 2, 3, 4\], \[2, 4\])
\[1, 3\]
Parameters:
* **l1** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **l2** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
Return type:
list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
list\_update(_l1_, _l2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#list_update)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.list_update "Link to this definition")
Used instead of `set.update()` to maintain order,
making sure duplicates are removed from l1, not l2. Removes overlap of l1 and l2 and then concatenates l2 unchanged.
Examples
\>>> list\_update(\[1, 2, 3\], \[2, 4, 4\])
\[1, 3, 2, 4, 4\]
Parameters:
* **l1** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **l2** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
Return type:
list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
listify(_obj: str_) → list\[str\][\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#listify)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.listify "Link to this definition")
listify(_obj: Iterable\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]_) → list\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
listify(_obj: [T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")
_) → list\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
Converts obj to a list intelligently.
Examples
\>>> listify("str")
\['str'\]
\>>> listify((1, 2))
\[1, 2\]
\>>> listify(len)
\[\]
Parameters:
**obj** (_str_ _|_ _Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_ _|_ [_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")
)
Return type:
list\[str\] | list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
make\_even(_iterable\_1_, _iterable\_2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#make_even)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even "Link to this definition")
Extends the shorter of the two iterables with duplicate values until its
length is equal to the longer iterable (favours earlier elements).
See also
[`make_even_by_cycling`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even_by_cycling "manim.utils.iterables.make_even_by_cycling")
cycles elements instead of favouring earlier ones
Examples
\>>> make\_even(\[1, 2\], \[3, 4, 5, 6\])
(\[1, 1, 2, 2\], \[3, 4, 5, 6\])
\>>> make\_even(\[1, 2\], \[3, 4, 5, 6, 7\])
(\[1, 1, 1, 2, 2\], \[3, 4, 5, 6, 7\])
Parameters:
* **iterable\_1** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **iterable\_2** (_Iterable__\[_[_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
_\]_)
Return type:
tuple\[list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\], list\[[_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
\]\]
make\_even\_by\_cycling(_iterable\_1_, _iterable\_2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#make_even_by_cycling)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even_by_cycling "Link to this definition")
Extends the shorter of the two iterables with duplicate values until its
length is equal to the longer iterable (cycles over shorter iterable).
See also
[`make_even`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even "manim.utils.iterables.make_even")
favours earlier elements instead of cycling them
Examples
\>>> make\_even\_by\_cycling(\[1, 2\], \[3, 4, 5, 6\])
(\[1, 2, 1, 2\], \[3, 4, 5, 6\])
\>>> make\_even\_by\_cycling(\[1, 2\], \[3, 4, 5, 6, 7\])
(\[1, 2, 1, 2, 1\], \[3, 4, 5, 6, 7\])
Parameters:
* **iterable\_1** (_Collection__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
* **iterable\_2** (_Collection__\[_[_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
_\]_)
Return type:
tuple\[list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\], list\[[_U_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.U "manim.utils.iterables.U")\
\]\]
remove\_list\_redundancies(_lst_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#remove_list_redundancies)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.remove_list_redundancies "Link to this definition")
Used instead of `list(set(l))` to maintain order. Keeps the last occurrence of each element.
Parameters:
**lst** (_Reversible__\[_[_H_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.H "manim.utils.iterables.H")\
_\]_)
Return type:
list\[[_H_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.H "manim.utils.iterables.H")\
\]
remove\_nones(_sequence_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#remove_nones)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.remove_nones "Link to this definition")
Removes elements where bool(x) evaluates to False.
Examples
\>>> remove\_nones(\["m", "", "l", 0, 42, False, True\])
\['m', 'l', 42, True\]
Parameters:
**sequence** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_|_ _None__\]_)
Return type:
list\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
resize\_array(_nparray_, _length_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#resize_array)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_array "Link to this definition")
Extends/truncates nparray so that `len(result) == length`.
The elements of nparray are cycled to achieve the desired length.
See also
[`resize_preserving_order`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_preserving_order "manim.utils.iterables.resize_preserving_order")
favours earlier elements instead of cycling them
[`make_even_by_cycling`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even_by_cycling "manim.utils.iterables.make_even_by_cycling")
similar cycling behaviour for balancing 2 iterables
Examples
\>>> points \= np.array(\[\[1, 2\], \[3, 4\]\])
\>>> resize\_array(points, 1)
array(\[\[1, 2\]\])
\>>> resize\_array(points, 3)
array(\[\[1, 2\],\
\[3, 4\],\
\[1, 2\]\])
\>>> resize\_array(points, 2)
array(\[\[1, 2\],\
\[3, 4\]\])
Parameters:
* **nparray** (_npt.NDArray__\[_[_F_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
_\]_)
* **length** (_int_)
Return type:
npt.NDArray\[[F](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
\]
resize\_preserving\_order(_nparray_, _length_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#resize_preserving_order)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_preserving_order "Link to this definition")
Extends/truncates nparray so that `len(result) == length`.
The elements of nparray are duplicated to achieve the desired length (favours earlier elements).
Constructs a zeroes array of length if nparray is empty.
See also
[`resize_array`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_array "manim.utils.iterables.resize_array")
cycles elements instead of favouring earlier ones
[`make_even`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.make_even "manim.utils.iterables.make_even")
similar earlier-favouring behaviour for balancing 2 iterables
Examples
\>>> resize\_preserving\_order(np.array(\[\]), 5)
array(\[0., 0., 0., 0., 0.\])
\>>> nparray \= np.array(\[\[1, 2\], \[3, 4\]\])
\>>> resize\_preserving\_order(nparray, 1)
array(\[\[1, 2\]\])
\>>> resize\_preserving\_order(nparray, 3)
array(\[\[1, 2\],\
\[1, 2\],\
\[3, 4\]\])
Parameters:
* **nparray** (_npt.NDArray__\[__np.float64__\]_)
* **length** (_int_)
Return type:
npt.NDArray\[np.float64\]
resize\_with\_interpolation(_nparray_, _length_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#resize_with_interpolation)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_with_interpolation "Link to this definition")
Extends/truncates nparray so that `len(result) == length`.
New elements are interpolated to achieve the desired length.
Note that if nparray’s length changes, its dtype may too (e.g. int -> float: see Examples)
See also
[`resize_array`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_array "manim.utils.iterables.resize_array")
cycles elements instead of interpolating
[`resize_preserving_order`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.resize_preserving_order "manim.utils.iterables.resize_preserving_order")
favours earlier elements instead of interpolating
Examples
\>>> nparray \= np.array(\[\[1, 2\], \[3, 4\]\])
\>>> resize\_with\_interpolation(nparray, 1)
array(\[\[1., 2.\]\])
\>>> resize\_with\_interpolation(nparray, 4)
array(\[\[1. , 2. \],\
\[1.66666667, 2.66666667\],\
\[2.33333333, 3.33333333\],\
\[3. , 4. \]\])
\>>> nparray \= np.array(\[\[\[1, 2\], \[3, 4\]\]\])
\>>> nparray \= np.array(\[\[1, 2\], \[3, 4\], \[5, 6\]\])
\>>> resize\_with\_interpolation(nparray, 4)
array(\[\[1. , 2. \],\
\[2.33333333, 3.33333333\],\
\[3.66666667, 4.66666667\],\
\[5. , 6. \]\])
\>>> nparray \= np.array(\[\[1, 2\], \[3, 4\], \[1, 2\]\])
\>>> resize\_with\_interpolation(nparray, 4)
array(\[\[1. , 2. \],\
\[2.33333333, 3.33333333\],\
\[2.33333333, 3.33333333\],\
\[1. , 2. \]\])
Parameters:
* **nparray** (_npt.NDArray__\[_[_F_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
_\]_)
* **length** (_int_)
Return type:
npt.NDArray\[[F](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
\]
stretch\_array\_to\_length(_nparray_, _length_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#stretch_array_to_length)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.stretch_array_to_length "Link to this definition")
Parameters:
* **nparray** (_npt.NDArray__\[_[_F_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
_\]_)
* **length** (_int_)
Return type:
npt.NDArray\[[F](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.F "manim.utils.iterables.F")\
\]
tuplify(_obj: str_) → tuple\[str\][\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#tuplify)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.tuplify "Link to this definition")
tuplify(_obj: Iterable\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]_) → tuple\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
tuplify(_obj: [T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")
_) → tuple\[[T](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
Converts obj to a tuple intelligently.
Examples
\>>> tuplify("str")
('str',)
\>>> tuplify(\[1, 2\])
(1, 2)
\>>> tuplify(len)
(,)
Parameters:
**obj** (_str_ _|_ _Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_ _|_ [_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")
)
Return type:
tuple\[str\] | tuple\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
\]
uniq\_chain(_\*args_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/iterables.html#uniq_chain)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.uniq_chain "Link to this definition")
Returns a generator that yields all unique elements of the Iterables
provided via args in the order provided.
Examples
\>>> gen \= uniq\_chain(\[1, 2\], \[2, 3\], \[1, 4, 4\])
\>>> from collections.abc import Generator
\>>> isinstance(gen, Generator)
True
\>>> tuple(gen)
(1, 2, 3, 4)
Parameters:
**args** (_Iterable__\[_[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
_\]_)
Return type:
_Generator_\[[_T_](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#manim.utils.iterables.T "manim.utils.iterables.T")\
, None, None\]
---
# v0.17.2 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.17.2-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.17.2-changelog.rst "Edit this page")
v0.17.2[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#v0-17-2 "Link to this heading")
==================================================================================================================
Date:
December 26, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 5 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* CaftBotti +
* Tristan Schulz
* lgtm-com\[bot\] +
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Naveen M K
* Tristan Schulz
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 7 pull requests were merged for this release.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#fixed-bugs "Link to this heading")
* [PR #3089](https://github.com/ManimCommunity/manim/pull/3089)
: Fixed OpenGL mobjects like [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
by reordering init calls
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#documentation-related-changes "Link to this heading")
* [PR #3073](https://github.com/ManimCommunity/manim/pull/3073)
: Fixed typo: “Whetherer” to “Whether”
* [PR #3074](https://github.com/ManimCommunity/manim/pull/3074)
: Fixed typo in a comment
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #3024](https://github.com/ManimCommunity/manim/pull/3024)
: Add CodeQL workflow for GitHub code scanning
* [PR #3079](https://github.com/ManimCommunity/manim/pull/3079)
: Updated CI syntax for runner version >= 2.298.2
* [PR #3084](https://github.com/ManimCommunity/manim/pull/3084)
: Properly setup CodeQL
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html#new-releases "Link to this heading")
* [PR #3090](https://github.com/ManimCommunity/manim/pull/3090)
: Prepared new Hotfix Release: `v0.17.2`
---
# RateFunction - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.rate_functions.RateFunction.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.rate_functions.RateFunction.rst "Edit this page")
RateFunction[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#ratefunction "Link to this heading")
===================================================================================================================================================
Qualified name: `manim.utils.rate\_functions.RateFunction`
class RateFunction(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#RateFunction)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "Link to this definition")
Bases: `Protocol`
Methods
---
# v0.17.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.17.1-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.17.1-changelog.rst "Edit this page")
v0.17.1[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#v0-17-1 "Link to this heading")
==================================================================================================================
Date:
December 08, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 5 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Benjamin Hackl
* Naveen M K
* Onur Solmaz
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Naveen M K
* Sparsh Goenka
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 6 pull requests were merged for this release.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#fixed-bugs "Link to this heading")
* [PR #3061](https://github.com/ManimCommunity/manim/pull/3061)
: Always expand file paths using `/` when calling LaTeX
* [PR #3062](https://github.com/ManimCommunity/manim/pull/3062)
: Added Unicode encoding in [`Scene.add_subcaption()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.add_subcaption "manim.scene.scene.Scene.add_subcaption")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2953](https://github.com/ManimCommunity/manim/pull/2953)
: Added documentation for lagged animations in [`animation.composition`](https://docs.manim.community/en/stable/reference/manim.animation.composition.html#module-manim.animation.composition "manim.animation.composition")
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #3064](https://github.com/ManimCommunity/manim/pull/3064)
: Increased minimal required version of `svgelements`
* [PR #3066](https://github.com/ManimCommunity/manim/pull/3066)
: Increased minimal version of `pytest`
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html#new-releases "Link to this heading")
* [PR #3065](https://github.com/ManimCommunity/manim/pull/3065)
: Prepared new release: `v0.17.1`
---
# Comparable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.Comparable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.Comparable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.simple_functions.Comparable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.simple_functions.Comparable.rst "Edit this page")
Comparable[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.Comparable.html#comparable "Link to this heading")
===============================================================================================================================================
Qualified name: `manim.utils.simple\_functions.Comparable`
class Comparable(_\*args_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/simple_functions.html#Comparable)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.Comparable.html#manim.utils.simple_functions.Comparable "Link to this definition")
Bases: `Protocol`
Methods
---
# v0.10.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.10.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.10.0-changelog.rst "Edit this page")
v0.10.0[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#v0-10-0 "Link to this heading")
==================================================================================================================
Date:
September 01, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 40 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Animfysyk +
* Benjamin Hackl
* Christian Clauss
* Daniel Adelodun +
* Darigov Research
* Darylgolden
* Eric Biedert +
* Harivinay
* Jan-Hendrik Müller
* Jephian Lin +
* Joy Bhalla +
* Laith Bahodi
* Lalourche +
* Max Stoumen
* Naveen M K
* Oliver
* Partha Das +
* Raj Dandekar +
* Rohan Sharma +
* Ryan McCauley
* Václav Hlaváč +
* asjadaugust +
* ccn
* icedcoffeeee
* sparshg
* vinnniii15 +
* vladislav doster +
* xia0long +
The patches included in this release have been reviewed by the following contributors.
* Aathish Sivasubrahmanian
* Benjamin Hackl
* Darylgolden
* Devin Neal
* Eric Biedert
* GameDungeon
* Harivinay
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Jephian Lin
* Joy Bhalla
* KingWampy
* Laith Bahodi
* Naveen M K
* Oliver
* Raghav Goel
* Raj Dandekar
* Ryan McCauley
* ccn
* icedcoffeeee
* ralphieraccoon
* sparshg
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 59 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#breaking-changes "Link to this heading")
* [PR #1843](https://github.com/ManimCommunity/manim/pull/1843)
: Dropped redundant OpenGL files and add metaclass support for [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
* `OpenGL` classes from `opengl_geometry.py`, `opengl_text_mobject.py`, `opengl_tex_mobject.py`, `opengl_svg_path.py`, `opengl_svg_mobject.py` and most of `opengl_three_dimensions.py` have been removed.
* `ParametricSurface` has been renamed to [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1941](https://github.com/ManimCommunity/manim/pull/1941)
: Added examples, tests and improved documentation for [`coordinate_systems`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#module-manim.mobject.graphing.coordinate_systems "manim.mobject.graphing.coordinate_systems")
* [PR #1694](https://github.com/ManimCommunity/manim/pull/1694)
: Added `font_size` parameter for [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
and [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
, replaced `scale` parameters with `font_size`
* [PR #1860](https://github.com/ManimCommunity/manim/pull/1860)
: Removed `GraphScene`, `NumberLineOld` and parameters for [`ChangingDecimal`](https://docs.manim.community/en/stable/reference/manim.animation.numbers.ChangingDecimal.html#manim.animation.numbers.ChangingDecimal "manim.animation.numbers.ChangingDecimal")
### New features[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#new-features "Link to this heading")
* [PR #1929](https://github.com/ManimCommunity/manim/pull/1929)
: Implementing a `zoom` parameter for [`ThreeDScene.move_camera()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.move_camera "manim.scene.three_d_scene.ThreeDScene.move_camera")
Zooming into a [`ThreeDScene`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene "manim.scene.three_d_scene.ThreeDScene")
can now be done by calling, for example, `self.move_camera(zoom=2)` in the `construct` method.
* [PR #1980](https://github.com/ManimCommunity/manim/pull/1980)
: Added a `dissipating_time` keyword argument to [`TracedPath`](https://docs.manim.community/en/stable/reference/manim.animation.changing.TracedPath.html#manim.animation.changing.TracedPath "manim.animation.changing.TracedPath")
to allow animating a dissipating path
* [PR #1899](https://github.com/ManimCommunity/manim/pull/1899)
: Allow switching the renderer to OpenGL at runtime
Previously, the metaclass approach only changed the inheritance chain to switch between OpenGL and cairo mobjects when the class objects are initialized, i.e., at import time. This PR also triggers the changes to the inheritance chain when the value of `config.renderer` is changed.
* [PR #1828](https://github.com/ManimCommunity/manim/pull/1828)
: Added configuration option `zero_pad` for zero padding PNG file names
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#enhancements "Link to this heading")
* [PR #1882](https://github.com/ManimCommunity/manim/pull/1882)
: Added OpenGL support for [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
and its subclasses
* [PR #1881](https://github.com/ManimCommunity/manim/pull/1881)
: Added methods [`Angle.get_lines()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_lines "manim.mobject.geometry.line.Angle.get_lines")
and [`Angle.get_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.get_value "manim.mobject.geometry.line.Angle.get_value")
to [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
* [PR #1952](https://github.com/ManimCommunity/manim/pull/1952)
: Added the option to save last frame for OpenGL
* [PR #1922](https://github.com/ManimCommunity/manim/pull/1922)
: Fixed IPython interface to exit cleanly when OpenGL renderer raises an error
* [PR #1923](https://github.com/ManimCommunity/manim/pull/1923)
: Fixed CLI help text for `manim init` subcommand so that it is not truncated
* [PR #1868](https://github.com/ManimCommunity/manim/pull/1868)
: Added OpenGL support to IPython magic
The OpenGL renderer can now be used in jupyter notebooks when using the `%%manim` magic command.
* [PR #1841](https://github.com/ManimCommunity/manim/pull/1841)
: Reduced default resolution of [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D")
* [PR #1866](https://github.com/ManimCommunity/manim/pull/1866)
: Allow passing keyword argument `corner_radius` to [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
* [PR #1847](https://github.com/ManimCommunity/manim/pull/1847)
: Allow [`Cross`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Cross.html#manim.mobject.geometry.shape_matchers.Cross "manim.mobject.geometry.shape_matchers.Cross")
to be created without requiring a mobject
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1985](https://github.com/ManimCommunity/manim/pull/1985)
: Use `height` to determine `font_size` instead of the `_font_size` attribute
* [PR #1758](https://github.com/ManimCommunity/manim/pull/1758)
: Fixed scene selection being ignored when using the OpenGL renderer
* [PR #1871](https://github.com/ManimCommunity/manim/pull/1871)
: Fixed broken [`VectorScene.vector_to_coords()`](https://docs.manim.community/en/stable/reference/manim.scene.vector_space_scene.VectorScene.html#manim.scene.vector_space_scene.VectorScene.vector_to_coords "manim.scene.vector_space_scene.VectorScene.vector_to_coords")
* [PR #1973](https://github.com/ManimCommunity/manim/pull/1973)
: Fixed indexing of [`Table.get_entries()`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_entries "manim.mobject.table.Table.get_entries")
to respect row length
* [PR #1950](https://github.com/ManimCommunity/manim/pull/1950)
: Fixed passing custom arrow shapes to [`CurvedArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.CurvedArrow.html#manim.mobject.geometry.arc.CurvedArrow "manim.mobject.geometry.arc.CurvedArrow")
* [PR #1967](https://github.com/ManimCommunity/manim/pull/1967)
: Fixed `Axes.coordinate_labels` referring to the entire axis, not just its labels
* [PR #1951](https://github.com/ManimCommunity/manim/pull/1951)
: Fixed `Axes.get_line_graph()` returning a graph rendered below the axes
* [PR #1943](https://github.com/ManimCommunity/manim/pull/1943)
: Added `buff` keyword argument to [`BraceLabel`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel "manim.mobject.svg.brace.BraceLabel")
* [PR #1938](https://github.com/ManimCommunity/manim/pull/1938)
: Fixed [`Rotate`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotate.html#manim.animation.rotation.Rotate "manim.animation.rotation.Rotate")
for angles that are multiples of 2𝜋
* [PR #1924](https://github.com/ManimCommunity/manim/pull/1924)
: Made arrow tips rotate `IN` and `OUT` properly
* [PR #1931](https://github.com/ManimCommunity/manim/pull/1931)
: Fixed `row_heights` in [`Mobject.arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
* [PR #1893](https://github.com/ManimCommunity/manim/pull/1893)
: Fixed CLI error when rendering a file containing a single scene without specifying the scene name
* [PR #1744](https://github.com/ManimCommunity/manim/pull/1744)
: Fixed bug in [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
with strictly positive or strictly negative values for `x_range` and `y_range`
* [PR #1887](https://github.com/ManimCommunity/manim/pull/1887)
: Fixed `custom_config` not working in `frames_comparison`
* [PR #1879](https://github.com/ManimCommunity/manim/pull/1879)
: Fixed how the installed version is determined by Poetry
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1979](https://github.com/ManimCommunity/manim/pull/1979)
: Corrected Japanese phrases in documentation
* [PR #1976](https://github.com/ManimCommunity/manim/pull/1976)
: Fixed labelling of languages in documentation example
* [PR #1949](https://github.com/ManimCommunity/manim/pull/1949)
: Rewrite installation instructions from scratch
* [PR #1963](https://github.com/ManimCommunity/manim/pull/1963)
: Added sitemap to `robots.txt`
* [PR #1939](https://github.com/ManimCommunity/manim/pull/1939)
: Fixed formatting of parameter description of [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
* [PR #1918](https://github.com/ManimCommunity/manim/pull/1918)
: Fixed a typo in the text tutorial
* [PR #1915](https://github.com/ManimCommunity/manim/pull/1915)
: Improved the wording of the installation instructions for Google Colab
* [PR #1906](https://github.com/ManimCommunity/manim/pull/1906)
: Improved language and overall consistency in `README`
* [PR #1880](https://github.com/ManimCommunity/manim/pull/1880)
: Updated tutorials to use `.animate` instead of [`ApplyMethod`](https://docs.manim.community/en/stable/reference/manim.animation.transform.ApplyMethod.html#manim.animation.transform.ApplyMethod "manim.animation.transform.ApplyMethod")
* [PR #1877](https://github.com/ManimCommunity/manim/pull/1877)
: Remove duplicated imports in some documentation examples
* [PR #1869](https://github.com/ManimCommunity/manim/pull/1869)
: Fixed duplicated Parameters section in [`Mobject.arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #1894](https://github.com/ManimCommunity/manim/pull/1894)
: Fixed an OpenGL test
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1987](https://github.com/ManimCommunity/manim/pull/1987)
: Added support for using OpenGL in subprocess in Windows pipeline
* [PR #1964](https://github.com/ManimCommunity/manim/pull/1964)
: Added `CITATION.cff` and a method to automatically update this citation with new releases
* [PR #1856](https://github.com/ManimCommunity/manim/pull/1856)
: Modified Dockerfile to support multi-platform builds via `docker buildx`
* [PR #1955](https://github.com/ManimCommunity/manim/pull/1955)
: Partially support OpenGL rendering with Docker
* [PR #1896](https://github.com/ManimCommunity/manim/pull/1896)
: Made RTD apt install FFMPEG instead of installing a Python binding
* [PR #1864](https://github.com/ManimCommunity/manim/pull/1864)
: Shortened and simplified PR template
* [PR #1853](https://github.com/ManimCommunity/manim/pull/1853)
: Updated Sphinx to 4.1.2
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1960](https://github.com/ManimCommunity/manim/pull/1960)
: Ignore fewer flake8 errors
* [PR #1947](https://github.com/ManimCommunity/manim/pull/1947)
: Set flake8 not to ignore undefined names in Python code
* [PR #1948](https://github.com/ManimCommunity/manim/pull/1948)
: flake8: Set max-line-length instead of ignoring long lines
* [PR #1956](https://github.com/ManimCommunity/manim/pull/1956)
: Upgrade to modern Python syntax
* This pull request was created [with the command](https://github.com/asottile/pyupgrade#readme)
`pyupgrade --py36-plus **/*.py`
* Python f-strings simplify the code and [should speed up execution](https://www.scivision.dev/python-f-string-speed)
.
* [PR #1898](https://github.com/ManimCommunity/manim/pull/1898)
: Replaced `self.data["attr"]` and `self.uniforms["attr"]` with `self.attr`
In particular, `OpenGLVMobject.points` can now be accessed directly.
* [PR #1934](https://github.com/ManimCommunity/manim/pull/1934)
: Improved code quality by implementing suggestions from LGTM
* [PR #1861](https://github.com/ManimCommunity/manim/pull/1861)
: Updated `dearpygui` version to 0.8.x
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html#new-releases "Link to this heading")
* [PR #1989](https://github.com/ManimCommunity/manim/pull/1989)
: Prepare new release v0.10.0
---
# sounds - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.sounds.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.sounds.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.sounds.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.sounds.rst "Edit this page")
sounds[¶](https://docs.manim.community/en/stable/reference/manim.utils.sounds.html#module-manim.utils.sounds "Link to this heading")
=====================================================================================================================================
Sound-related utility functions.
Functions
get\_full\_sound\_file\_path(_sound\_file\_name_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/sounds.html#get_full_sound_file_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.sounds.html#manim.utils.sounds.get_full_sound_file_path "Link to this definition")
Parameters:
**sound\_file\_name** ([_StrPath_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "manim.typing.StrPath")
)
Return type:
Path
---
# testing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.testing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.testing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.testing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.testing.rst "Edit this page")
testing[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing.html#module-manim.utils.testing "Link to this heading")
========================================================================================================================================
Utilities for Manim tests using [pytest](https://pytest.org/)
.
For more information about Manim testing, see:
* [Manim Development Process](https://docs.manim.community/en/stable/contributing/development.html)
, specifically the `Tests` bullet point under [Polishing Changes and Submitting a Pull Request](https://docs.manim.community/en/stable/contributing/development.html#polishing-changes-and-submitting-a-pull-request)
* [Adding Tests](https://docs.manim.community/en/stable/contributing/testing.html)
| | |
| --- | --- |
| [`_frames_testers`](https://docs.manim.community/en/stable/reference/manim.utils.testing._frames_testers.html#module-manim.utils.testing._frames_testers "manim.utils.testing._frames_testers") | |
| [`_show_diff`](https://docs.manim.community/en/stable/reference/manim.utils.testing._show_diff.html#module-manim.utils.testing._show_diff "manim.utils.testing._show_diff") | |
| [`_test_class_makers`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.html#module-manim.utils.testing._test_class_makers "manim.utils.testing._test_class_makers") | |
---
# space_ops - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.space_ops.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.space_ops.rst "Edit this page")
space\_ops[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#module-manim.utils.space_ops "Link to this heading")
===============================================================================================================================================
Utility functions for two- and three-dimensional vectors.
Functions
R3\_to\_complex(_point_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#R3_to_complex)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.R3_to_complex "Link to this definition")
Parameters:
**point** (_Sequence__\[__float__\]_)
Return type:
_ndarray_
angle\_axis\_from\_quaternion(_quaternion_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#angle_axis_from_quaternion)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.angle_axis_from_quaternion "Link to this definition")
Gets angle and axis from a quaternion.
Parameters:
**quaternion** (_Sequence__\[__float__\]_) – The quaternion from which we get the angle and axis.
Returns:
Gives the angle and axis
Return type:
Sequence\[float\]
angle\_between\_vectors(_v1_, _v2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#angle_between_vectors)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.angle_between_vectors "Link to this definition")
Returns the angle between two vectors. This angle will always be between 0 and pi
Parameters:
* **v1** (_ndarray_) – The first vector.
* **v2** (_ndarray_) – The second vector.
Returns:
The angle between the vectors.
Return type:
float
angle\_of\_vector(_vector_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#angle_of_vector)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.angle_of_vector "Link to this definition")
Returns polar coordinate theta when vector is projected on xy plane.
Parameters:
**vector** (_Sequence__\[__float__\]_ _|_ _ndarray_) – The vector to find the angle for.
Returns:
The angle of the vector projected.
Return type:
float
cartesian\_to\_spherical(_vec_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#cartesian_to_spherical)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.cartesian_to_spherical "Link to this definition")
Returns an array of numbers corresponding to each polar coordinate value (distance, phi, theta).
Parameters:
**vec** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – A numpy array or a sequence of floats `[x, y, z]`.
Return type:
_ndarray_
center\_of\_mass(_points_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#center_of_mass)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.center_of_mass "Link to this definition")
Gets the center of mass of the points in space.
Parameters:
**points** ([_PointNDLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointNDLike_Array "manim.typing.PointNDLike_Array")
) – The points to find the center of mass from.
Returns:
The center of mass of the points.
Return type:
np.ndarray
compass\_directions(_n\=4_, _start\_vect\=array(\[1., 0., 0.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#compass_directions)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.compass_directions "Link to this definition")
Finds the cardinal directions using tau.
Parameters:
* **n** (_int_) – The amount to be rotated, by default 4
* **start\_vect** (_ndarray_) – The direction for the angle to start with, by default RIGHT
Returns:
The angle which has been rotated.
Return type:
np.ndarray
complex\_func\_to\_R3\_func(_complex\_func_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#complex_func_to_R3_func)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.complex_func_to_R3_func "Link to this definition")
Parameters:
**complex\_func** (_Callable__\[__\[__complex__\]__,_ _complex__\]_)
Return type:
_Callable_\[\[TypeAliasForwardRef(‘~manim.typing.Point3DLike’)\], TypeAliasForwardRef(‘~manim.typing.Point3D’)\]
complex\_to\_R3(_complex\_num_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#complex_to_R3)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.complex_to_R3 "Link to this definition")
Parameters:
**complex\_num** (_complex_)
Return type:
_ndarray_
cross(_v1_, _v2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#cross)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.cross "Link to this definition")
Parameters:
* **v1** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **v2** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
[_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
cross2d(_a_, _b_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#cross2d)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.cross2d "Link to this definition")
Compute the determinant(s) of the passed vector (sequences).
Parameters:
* **a** ([_Vector2D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "manim.typing.Vector2D")
_|_ [_Vector2D\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D_Array "manim.typing.Vector2D_Array")
) – A vector or a sequence of vectors.
* **b** ([_Vector2D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "manim.typing.Vector2D")
_|_ [_Vector2D\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D_Array "manim.typing.Vector2D_Array")
) – A vector or a sequence of vectors.
Returns:
The determinant or sequence of determinants of the first two components of the specified vectors.
Return type:
Sequence\[float\] | float
Examples
\>>> cross2d(np.array(\[1, 2\]), np.array(\[3, 4\]))
np.int64(-2)
\>>> cross2d(
... np.array(\[\[1, 2, 0\], \[1, 0, 0\]\]),
... np.array(\[\[3, 4, 0\], \[0, 1, 0\]\]),
... )
array(\[-2, 1\])
earclip\_triangulation(_verts_, _ring\_ends_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#earclip_triangulation)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.earclip_triangulation "Link to this definition")
Returns a list of indices giving a triangulation of a polygon, potentially with holes.
Parameters:
* **verts** (_ndarray_) – verts is a numpy array of points.
* **ring\_ends** (_list_) – ring\_ends is a list of indices indicating where the ends of new paths are.
Returns:
A list of indices giving a triangulation of a polygon.
Return type:
list
find\_intersection(_p0s_, _v0s_, _p1s_, _v1s_, _threshold\=1e-05_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#find_intersection)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.find_intersection "Link to this definition")
Return the intersection of a line passing through p0 in direction v0 with one passing through p1 in direction v1 (or array of intersections from arrays of such points/directions). For 3d values, it returns the point on the ray p0 + v0 \* t closest to the ray p1 + v1 \* t
Parameters:
* **p0s** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **v0s** ([_Vector3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike_Array "manim.typing.Vector3DLike_Array")
)
* **p1s** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **v1s** ([_Vector3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike_Array "manim.typing.Vector3DLike_Array")
)
* **threshold** (_float_)
Return type:
list\[TypeAliasForwardRef(‘~manim.typing.Point3D’)\]
get\_unit\_normal(_v1_, _v2_, _tol\=1e-06_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#get_unit_normal)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.get_unit_normal "Link to this definition")
Gets the unit normal of the vectors.
Parameters:
* **v1** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The first vector.
* **v2** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The second vector
* **tol** (_float_) – \[description\], by default 1e-6
Returns:
The normal of the two vectors.
Return type:
np.ndarray
get\_winding\_number(_points_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#get_winding_number)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.get_winding_number "Link to this definition")
Determine the number of times a polygon winds around the origin.
The orientation is measured mathematically positively, i.e., counterclockwise.
Parameters:
**points** (_Sequence__\[__ndarray__\]_) – The vertices of the polygon being queried.
Return type:
float
Examples
\>>> from manim import Square, UP, get\_winding\_number
\>>> polygon \= Square()
\>>> get\_winding\_number(polygon.get\_vertices())
np.float64(1.0)
\>>> polygon.shift(2 \* UP)
Square
\>>> get\_winding\_number(polygon.get\_vertices())
np.float64(0.0)
line\_intersection(_line1_, _line2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#line_intersection)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.line_intersection "Link to this definition")
Returns the intersection point of two lines, each defined by a pair of distinct points lying on the line.
Parameters:
* **line1** (_Sequence__\[__ndarray__\]_) – A list of two points that determine the first line.
* **line2** (_Sequence__\[__ndarray__\]_) – A list of two points that determine the second line.
Returns:
The intersection points of the two lines which are intersecting.
Return type:
np.ndarray
Raises:
**ValueError** – Error is produced if the two lines don’t intersect with each other or if the coordinates don’t lie on the xy-plane.
midpoint(_point1_, _point2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#midpoint)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.midpoint "Link to this definition")
Gets the midpoint of two points.
Parameters:
* **point1** (_Sequence__\[__float__\]_) – The first point.
* **point2** (_Sequence__\[__float__\]_) – The second point.
Returns:
The midpoint of the points
Return type:
[Union](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "manim.mobject.geometry.boolean_ops.Union")
\[float, np.ndarray\]
norm\_squared(_v_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#norm_squared)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.norm_squared "Link to this definition")
Parameters:
**v** (_float_)
Return type:
float
normalize(_vect_, _fall\_back\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#normalize)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.normalize "Link to this definition")
Parameters:
* **vect** (_ndarray_ _|_ _tuple__\[__float__\]_)
* **fall\_back** (_ndarray_ _|_ _None_)
Return type:
_ndarray_
normalize\_along\_axis(_array_, _axis_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#normalize_along_axis)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.normalize_along_axis "Link to this definition")
Normalizes an array with the provided axis.
Parameters:
* **array** (_ndarray_) – The array which has to be normalized.
* **axis** (_ndarray_) – The axis to be normalized to.
Returns:
Array which has been normalized according to the axis.
Return type:
np.ndarray
perpendicular\_bisector(_line_, _norm\_vector\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#perpendicular_bisector)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.perpendicular_bisector "Link to this definition")
Returns a list of two points that correspond to the ends of the perpendicular bisector of the two points given.
Parameters:
* **line** (_Sequence__\[__ndarray__\]_) – a list of two numpy array points (corresponding to the ends of a line).
* **norm\_vector** ([_Vector3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
) – the vector perpendicular to both the line given and the perpendicular bisector.
Returns:
A list of two numpy array points that correspond to the ends of the perpendicular bisector
Return type:
list
quaternion\_conjugate(_quaternion_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#quaternion_conjugate)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.quaternion_conjugate "Link to this definition")
Used for finding the conjugate of the quaternion
Parameters:
**quaternion** (_Sequence__\[__float__\]_) – The quaternion for which you want to find the conjugate for.
Returns:
The conjugate of the quaternion.
Return type:
np.ndarray
quaternion\_from\_angle\_axis(_angle_, _axis_, _axis\_normalized\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#quaternion_from_angle_axis)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.quaternion_from_angle_axis "Link to this definition")
Gets a quaternion from an angle and an axis. For more information, check [this Wikipedia page](https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles)
.
Parameters:
* **angle** (_float_) – The angle for the quaternion.
* **axis** (_ndarray_) – The axis for the quaternion
* **axis\_normalized** (_bool_) – Checks whether the axis is normalized, by default False
Returns:
Gives back a quaternion from the angle and axis
Return type:
list\[float\]
quaternion\_mult(_\*quats_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#quaternion_mult)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.quaternion_mult "Link to this definition")
Gets the Hamilton product of the quaternions provided. For more information, check [this Wikipedia page](https://en.wikipedia.org/wiki/Quaternion)
.
Returns:
Returns a list of product of two quaternions.
Return type:
[Union](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "manim.mobject.geometry.boolean_ops.Union")
\[np.ndarray, List\[[Union](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "manim.mobject.geometry.boolean_ops.Union")\
\[float, np.ndarray\]\]\]
Parameters:
**quats** (_Sequence__\[__float__\]_)
regular\_vertices(_n_, _\*_, _radius\=1_, _start\_angle\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#regular_vertices)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.regular_vertices "Link to this definition")
Generates regularly spaced vertices around a circle centered at the origin.
Parameters:
* **n** (_int_) – The number of vertices
* **radius** (_float_) – The radius of the circle that the vertices are placed on.
* **start\_angle** (_float_ _|_ _None_) –
The angle the vertices start at.
If unspecified, for even `n` values, `0` will be used. For odd `n` values, 90 degrees is used.
Returns:
* **vertices** (`numpy.ndarray`) – The regularly spaced vertices.
* **start\_angle** (`float`) – The angle the vertices start at.
Return type:
tuple\[_ndarray_, float\]
rotate\_vector(_vector_, _angle_, _axis\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotate_vector)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotate_vector "Link to this definition")
Function for rotating a vector.
Parameters:
* **vector** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The vector to be rotated.
* **angle** (_float_) – The angle to be rotated by.
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis to be rotated, by default OUT
Returns:
The rotated vector with provided angle and axis.
Return type:
np.ndarray
Raises:
**ValueError** – If vector is not of dimension 2 or 3.
rotation\_about\_z(_angle_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotation_about_z)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotation_about_z "Link to this definition")
Returns a rotation matrix for a given angle.
Parameters:
**angle** (_float_) – Angle for the rotation matrix.
Returns:
Gives back the rotated matrix.
Return type:
np.ndarray
rotation\_matrix(_angle_, _axis_, _homogeneous\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotation_matrix)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotation_matrix "Link to this definition")
Rotation in R^3 about a specified axis of rotation.
Parameters:
* **angle** (_float_)
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **homogeneous** (_bool_)
Return type:
_ndarray_
rotation\_matrix\_from\_quaternion(_quat_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotation_matrix_from_quaternion)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotation_matrix_from_quaternion "Link to this definition")
Parameters:
**quat** (_ndarray_)
Return type:
_ndarray_
rotation\_matrix\_transpose(_angle_, _axis_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotation_matrix_transpose)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotation_matrix_transpose "Link to this definition")
Parameters:
* **angle** (_float_)
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
Return type:
_ndarray_
rotation\_matrix\_transpose\_from\_quaternion(_quat_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#rotation_matrix_transpose_from_quaternion)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.rotation_matrix_transpose_from_quaternion "Link to this definition")
Converts the quaternion, quat, to an equivalent rotation matrix representation. For more information, check [this page](https://in.mathworks.com/help/driving/ref/quaternion.rotmat.html)
.
Parameters:
**quat** (_ndarray_) – The quaternion which is to be converted.
Returns:
Gives back the Rotation matrix representation, returned as a 3-by-3 matrix or 3-by-3-by-N multidimensional array.
Return type:
List\[np.ndarray\]
shoelace(_x\_y_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#shoelace)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.shoelace "Link to this definition")
2D implementation of the shoelace formula.
Returns:
Returns signed area.
Return type:
`float`
Parameters:
**x\_y** ([_Point2D\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "manim.typing.Point2D_Array")
)
shoelace\_direction(_x\_y_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#shoelace_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.shoelace_direction "Link to this definition")
Uses the area determined by the shoelace method to determine whether the input set of points is directed clockwise or counterclockwise.
Returns:
Either `"CW"` or `"CCW"`.
Return type:
`str`
Parameters:
**x\_y** ([_Point2D\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "manim.typing.Point2D_Array")
)
spherical\_to\_cartesian(_spherical_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#spherical_to_cartesian)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.spherical_to_cartesian "Link to this definition")
Returns a numpy array `[x, y, z]` based on the spherical coordinates given.
Parameters:
**spherical** (_Sequence__\[__float__\]_) –
A list of three floats that correspond to the following:
r - The distance between the point and the origin.
theta - The azimuthal angle of the point to the positive x-axis.
phi - The vertical angle of the point to the positive z-axis.
Return type:
_ndarray_
thick\_diagonal(_dim_, _thickness\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#thick_diagonal)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.thick_diagonal "Link to this definition")
Parameters:
* **dim** (_int_)
* **thickness** (_int_)
Return type:
[_MatrixMN_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MatrixMN "manim.typing.MatrixMN")
z\_to\_vector(_vector_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/space_ops.html#z_to_vector)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.z_to_vector "Link to this definition")
Returns some matrix in SO(3) which takes the z-axis to the (normalized) vector provided as an argument
Parameters:
**vector** (_ndarray_)
Return type:
_ndarray_
---
# _frames_testers - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.testing._frames_testers.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.testing._frames_testers.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.testing._frames_testers.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.testing._frames_testers.rst "Edit this page")
\_frames\_testers[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._frames_testers.html#module-manim.utils.testing._frames_testers "Link to this heading")
==================================================================================================================================================================================
---
# _show_diff - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.testing._show_diff.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.testing._show_diff.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.testing._show_diff.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.testing._show_diff.rst "Edit this page")
\_show\_diff[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._show_diff.html#module-manim.utils.testing._show_diff "Link to this heading")
===================================================================================================================================================================
Functions
show\_diff\_helper(_frame\_number_, _frame\_data_, _expected\_frame\_data_, _control\_data\_filename_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_show_diff.html#show_diff_helper)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._show_diff.html#manim.utils.testing._show_diff.show_diff_helper "Link to this definition")
Will visually display with matplotlib differences between frame generated and the one expected.
Parameters:
* **frame\_number** (_int_)
* **frame\_data** ([_PixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
)
* **expected\_frame\_data** ([_PixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
)
* **control\_data\_filename** (_str_)
Return type:
None
---
# v0.18.0.post0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.18.0.post0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.18.0.post0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.18.0.post0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.18.0.post0-changelog.rst "Edit this page")
v0.18.0.post0[¶](https://docs.manim.community/en/stable/changelog/0.18.0.post0-changelog.html#v0-18-0-post0 "Link to this heading")
====================================================================================================================================
Date:
April 08, 2024
This release is a post-release fixing [#3676](https://github.com/ManimCommunity/manim/issues/3676)
, a bug caused by a recent change introduced to the way how SVG files of text are generated by Pango.
---
# ManimMagic - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.ipython_magic.ManimMagic.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.ipython_magic.ManimMagic.rst "Edit this page")
ManimMagic[¶](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manimmagic "Link to this heading")
============================================================================================================================================
Qualified name: `manim.utils.ipython\_magic.ManimMagic`
class ManimMagic(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/ipython_magic.html#ManimMagic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manim.utils.ipython_magic.ManimMagic "Link to this definition")
Bases: `Magics`
Create a configurable given a config config.
Parameters:
* **config** (_Config_) – If this is empty, default values are used. If config is a `Config` instance, it will be used to configure the instance.
* **parent** (_Configurable instance__,_ _optional_) – The parent Configurable instance of this object.
* **shell** (_InteractiveShell_)
Notes
Subclasses of Configurable must call the `__init__()` method of `Configurable` _before_ doing anything else and using `super()`:
class MyConfigurable(Configurable):
def \_\_init\_\_(self, config\=None):
super(MyConfigurable, self).\_\_init\_\_(config\=config)
\# Then any other code you need to finish initialization.
This ensures that instances will be configured properly.
Methods
| | |
| --- | --- |
| `add_additional_args` | |
| [`manim`](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manim.utils.ipython_magic.ManimMagic.manim "manim.utils.ipython_magic.ManimMagic.manim") | Render Manim scenes contained in IPython cells. |
Attributes
| | |
| --- | --- |
| `config` | A trait whose value must be an instance of a specified class. |
| `cross_validation_lock` | A contextmanager for running a block with our cross validation lock set to True. |
| `magics` | |
| `options_table` | |
| `parent` | A trait whose value must be an instance of a specified class. |
| `registered` | |
| `shell` | |
manim(_line_, _cell\=None_, _local\_ns\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/ipython_magic.html#ManimMagic.manim)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html#manim.utils.ipython_magic.ManimMagic.manim "Link to this definition")
Render Manim scenes contained in IPython cells. Works as a line or cell magic.
Hint
This line and cell magic works best when used in a JupyterLab environment: while all of the functionality is available for classic Jupyter notebooks as well, it is possible that videos sometimes don’t update on repeated execution of the same cell if the scene name stays the same.
This problem does not occur when using JupyterLab.
Please refer to [https://jupyter.org/](https://jupyter.org/)
for more information about JupyterLab and Jupyter notebooks.
Usage in line mode:
%manim \[CLI options\] MyAwesomeScene
Usage in cell mode:
%%manim \[CLI options\] MyAwesomeScene
class MyAweseomeScene(Scene):
def construct(self):
...
Run `%manim --help` and `%manim render --help` for possible command line interface options.
Note
The maximal width of the rendered videos that are displayed in the notebook can be configured via the `media_width` configuration option. The default is set to `25vw`, which is 25% of your current viewport width. To allow the output to become as large as possible, set `config.media_width = "100%"`.
The `media_embed` option will embed the image/video output in the notebook. This is generally undesirable as it makes the notebooks very large, but is required on some platforms (notably Google’s CoLab, where it is automatically enabled unless suppressed by `config.embed = False`) and needed in cases when the notebook (or converted HTML file) will be moved relative to the video locations. Use-cases include building documentation with Sphinx and JupyterBook. See also the [`manim directive for Sphinx`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.html#module-manim.utils.docbuild.manim_directive "manim.utils.docbuild.manim_directive")
.
Examples
First make sure to put `import manim`, or even `from manim import *` in a cell and evaluate it. Then, a typical Jupyter notebook cell for Manim could look as follows:
%%manim \-v WARNING \--disable\_caching \-qm BannerExample
config.media\_width \= "75%"
config.media\_embed \= True
class BannerExample(Scene):
def construct(self):
self.camera.background\_color \= "#ece6e2"
banner\_large \= ManimBanner(dark\_theme\=False).scale(0.7)
self.play(banner\_large.create())
self.play(banner\_large.expand())
Evaluating this cell will render and display the `BannerExample` scene defined in the body of the cell.
Note
In case you want to hide the red box containing the output progress bar, the `progress_bar` config option should be set to `None`. This can also be done by passing `--progress_bar None` as a CLI flag.
Parameters:
* **line** (_str_)
* **cell** (_str_ _|_ _None_)
* **local\_ns** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
Return type:
None
---
# v0.17.3 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.17.3-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.17.3-changelog.rst "Edit this page")
v0.17.3[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#v0-17-3 "Link to this heading")
==================================================================================================================
Date:
April 06, 2023
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 35 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Benjamin Hackl
* DegrangeM +
* Elyanah Aco +
* Francisco Manríquez Novoa
* Fredrik Lundström +
* Frédéric Crozatier
* Ikko Eltociear Ashimine +
* ItIsJoeyG +
* JinchuLi2002 +
* Kevin Lubick
* KingAndCross +
* 13. 1. Ali +
* Matthew Lee +
* Max Coplan +
* Naveen M K
* NotWearingPants
* Oscar Rangel +
* Papierkorb2292 +
* Phoenix2157 +
* Tristan Schulz
* ciobaca +
* coreyp1 +
* davidot +
* icedcoffeeee
* karpfediem +
* vahndi
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Fredrik Lundström
* Frédéric Crozatier
* Hugues Devimeux
* Kevin Lubick
* KingAndCross
* Matthew Lee
* Naveen M K
* Tristan Schulz
* coreyp1
* davidot
* strager
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 42 pull requests were merged for this release.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #3103](https://github.com/ManimCommunity/manim/pull/3103)
: Removed deprecated function `OpenGLSurface.set_fill_by_value`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#new-features "Link to this heading")
* [PR #2974](https://github.com/ManimCommunity/manim/pull/2974)
: Added [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
, a mobject representing directed graphs
* [PR #3042](https://github.com/ManimCommunity/manim/pull/3042)
: Added [`Scene.replace()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.replace "manim.scene.scene.Scene.replace")
and use in [`ReplacementTransform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.ReplacementTransform.html#manim.animation.transform.ReplacementTransform "manim.animation.transform.ReplacementTransform")
* [PR #3155](https://github.com/ManimCommunity/manim/pull/3155)
: Added support for individualized radius values in [`Polygram.round_corners()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram.round_corners "manim.mobject.geometry.polygram.Polygram.round_corners")
* [PR #3159](https://github.com/ManimCommunity/manim/pull/3159)
: Added [`set_opacity_by_tex()`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex.set_opacity_by_tex "manim.mobject.text.tex_mobject.MathTex.set_opacity_by_tex")
method for setting the opacity of parts of Tex mobjects
* [PR #3201](https://github.com/ManimCommunity/manim/pull/3201)
: New tip shape [`StealthTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.StealthTip.html#manim.mobject.geometry.tips.StealthTip "manim.mobject.geometry.tips.StealthTip")
, allow specifying tip shape of [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#enhancements "Link to this heading")
* [PR #3046](https://github.com/ManimCommunity/manim/pull/3046)
: Add warning if font is not found for Text, Code, and MarkupText
* [PR #3083](https://github.com/ManimCommunity/manim/pull/3083)
: Minor performance improvement in [`bezier`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#module-manim.utils.bezier "manim.utils.bezier")
with preallocating array
* [PR #3092](https://github.com/ManimCommunity/manim/pull/3092)
: Improved [`Mobject.add()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add "manim.mobject.mobject.Mobject.add")
performance by checking for redundancy only once
* [PR #3134](https://github.com/ManimCommunity/manim/pull/3134)
: Performance: Store color data of `OpenGLSurface` to prevent OpenGL embed lag
* [PR #3180](https://github.com/ManimCommunity/manim/pull/3180)
: Performance: Speed up width/height/depth calculations by reducing copying
* [PR #3181](https://github.com/ManimCommunity/manim/pull/3181)
: Improved creation time for large [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
mobjects
* [PR #3182](https://github.com/ManimCommunity/manim/pull/3182)
: Reduce memory allocations when building [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
* [PR #3191](https://github.com/ManimCommunity/manim/pull/3191)
: Fixed OpenGL rendering in named threads
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#fixed-bugs "Link to this heading")
* [PR #3015](https://github.com/ManimCommunity/manim/pull/3015)
: Fixed bug with `label_constructor` in [`NumberLine.add_labels()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_labels "manim.mobject.graphing.number_line.NumberLine.add_labels")
* [PR #3095](https://github.com/ManimCommunity/manim/pull/3095)
: Fixed `get_axis_labels` for [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
and [`ThreeDAxes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes")
* [PR #3106](https://github.com/ManimCommunity/manim/pull/3106)
: Fixed ignored `depth_test` argument for `OpenGLVMobjects`
* [PR #3149](https://github.com/ManimCommunity/manim/pull/3149)
: Allow to use `call_updater=True` in [`Mobject.add_updater()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.add_updater "manim.mobject.mobject.Mobject.add_updater")
with non-timebased updaters too
* [PR #3152](https://github.com/ManimCommunity/manim/pull/3152)
: Fixed behavior of [`Wait`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Wait.html#manim.animation.animation.Wait "manim.animation.animation.Wait")
and [`Scene.wait()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.wait "manim.scene.scene.Scene.wait")
with specified `stop_condition`
* [PR #3163](https://github.com/ManimCommunity/manim/pull/3163)
: Fixed [`BraceLabel`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel "manim.mobject.svg.brace.BraceLabel")
not passing additional keyword arguments to [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
* [PR #3195](https://github.com/ManimCommunity/manim/pull/3195)
: Fixed [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
scaling for [`plot_implicit_curve()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_implicit_curve "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_implicit_curve")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#documentation-related-changes "Link to this heading")
* [PR #3105](https://github.com/ManimCommunity/manim/pull/3105)
: Converted types specified in docstrings to proper type hints in [`three_dimensions`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#module-manim.mobject.three_d.three_dimensions "manim.mobject.three_d.three_dimensions")
* [PR #3108](https://github.com/ManimCommunity/manim/pull/3108)
: Clarified documentation for `--resolution` command line flag
* [PR #3109](https://github.com/ManimCommunity/manim/pull/3109)
: Clean-up, type-hints and documentation for [`three_dimensions`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#module-manim.mobject.three_d.three_dimensions "manim.mobject.three_d.three_dimensions")
* [PR #3124](https://github.com/ManimCommunity/manim/pull/3124)
: Fixed docstring of [`ThreeDCamera.get_value_trackers()`](https://docs.manim.community/en/stable/reference/manim.camera.three_d_camera.ThreeDCamera.html#manim.camera.three_d_camera.ThreeDCamera.get_value_trackers "manim.camera.three_d_camera.ThreeDCamera.get_value_trackers")
* [PR #3126](https://github.com/ManimCommunity/manim/pull/3126)
: Fixed dead links to troubleshooting page
* [PR #3137](https://github.com/ManimCommunity/manim/pull/3137)
: Fixed example using `reverse=True` with [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
* [PR #3160](https://github.com/ManimCommunity/manim/pull/3160)
: Fixed a typo
* [PR #3189](https://github.com/ManimCommunity/manim/pull/3189)
: Corrected the hinted return type for `angle_between_vectors()`
* [PR #3199](https://github.com/ManimCommunity/manim/pull/3199)
: Updated `winget` command for installing MiKTeX in documentation
* [PR #3204](https://github.com/ManimCommunity/manim/pull/3204)
: Fixed docstring formatting of [`Scene.replace()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.replace "manim.scene.scene.Scene.replace")
and improved its error handling
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #3144](https://github.com/ManimCommunity/manim/pull/3144)
: Fixed typo in `stripUntranslatable.awk`
* [PR #3154](https://github.com/ManimCommunity/manim/pull/3154)
: Bump ipython from 8.7.0 to 8.10.0
* [PR #3156](https://github.com/ManimCommunity/manim/pull/3156)
: CI: Remove actions using self-hosted runners
* [PR #3164](https://github.com/ManimCommunity/manim/pull/3164)
: Bump markdown-it-py from 2.1.0 to 2.2.0
* [PR #3165](https://github.com/ManimCommunity/manim/pull/3165)
: Removed deprecated keyword argument in [`Mobject.align_to()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.align_to "manim.mobject.mobject.Mobject.align_to")
* [PR #3166](https://github.com/ManimCommunity/manim/pull/3166)
: Made [`ArrowTriangleTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleTip.html#manim.mobject.geometry.tips.ArrowTriangleTip "manim.mobject.geometry.tips.ArrowTriangleTip")
, [`ArrowTriangleFilledTip`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.tips.ArrowTriangleFilledTip.html#manim.mobject.geometry.tips.ArrowTriangleFilledTip "manim.mobject.geometry.tips.ArrowTriangleFilledTip")
available to module namespace
* [PR #3179](https://github.com/ManimCommunity/manim/pull/3179)
: Fixed deprecation warning in [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
with `use_vectorized=True`
* [PR #3186](https://github.com/ManimCommunity/manim/pull/3186)
: Updated extlinks to work with latest version of Sphinx
* [PR #3196](https://github.com/ManimCommunity/manim/pull/3196)
: CI: updated PATH for recent changed in TinyTex
* [PR #3200](https://github.com/ManimCommunity/manim/pull/3200)
: Made import from `moderngl` compatible with more recent versions
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html#new-releases "Link to this heading")
* [PR #3198](https://github.com/ManimCommunity/manim/pull/3198)
: Prepare new release: v0.17.3
---
# paths - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.paths.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.paths.rst "Edit this page")
paths[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#module-manim.utils.paths "Link to this heading")
==================================================================================================================================
Functions determining transformation paths between sets of points.
Functions
clockwise\_path()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#clockwise_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.clockwise_path "Link to this definition")
This function transforms each point by moving clockwise around a half circle.
Examples
Example: ClockwisePathExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#clockwisepathexample)
from manim import \*
class ClockwisePathExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.clockwise\_path(),
run\_time\=2,
)
)
self.wait()
class ClockwisePathExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.clockwise\_path(),
run\_time=2,
)
)
self.wait()
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
counterclockwise\_path()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#counterclockwise_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.counterclockwise_path "Link to this definition")
This function transforms each point by moving counterclockwise around a half circle.
Examples
Example: CounterclockwisePathExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#counterclockwisepathexample)
from manim import \*
class CounterclockwisePathExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.counterclockwise\_path(),
run\_time\=2,
)
)
self.wait()
class CounterclockwisePathExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.counterclockwise\_path(),
run\_time=2,
)
)
self.wait()
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
path\_along\_arc(_arc\_angle_, _axis\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#path_along_arc)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.path_along_arc "Link to this definition")
This function transforms each point by moving it along a circular arc.
Parameters:
* **arc\_angle** (_float_) – The angle each point traverses around a circular arc.
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis of rotation.
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
Examples
Example: PathAlongArcExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#pathalongarcexample)
from manim import \*
class PathAlongArcExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.path\_along\_arc(TAU \* 2 / 3),
run\_time\=3,
)
)
self.wait()
class PathAlongArcExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.path\_along\_arc(TAU \* 2 / 3),
run\_time=3,
)
)
self.wait()
path\_along\_circles(_arc\_angle_, _circles\_centers_, _axis\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#path_along_circles)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.path_along_circles "Link to this definition")
This function transforms each point by moving it roughly along a circle, each with its own specified center.
The path may be seen as each point smoothly changing its orbit from its starting position to its destination.
Parameters:
* **arc\_angle** (_float_) – The angle each point traverses around the quasicircle.
* **circles\_centers** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
) – The centers of each point’s quasicircle to rotate around.
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis of rotation.
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
Examples
Example: PathAlongCirclesExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#pathalongcirclesexample)
from manim import \*
class PathAlongCirclesExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
circle\_center \= Dot(3 \* LEFT)
self.add(circle\_center)
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.path\_along\_circles(
2 \* PI, circle\_center.get\_center()
),
run\_time\=3,
)
)
self.wait()
class PathAlongCirclesExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
circle\_center = Dot(3 \* LEFT)
self.add(circle\_center)
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.path\_along\_circles(
2 \* PI, circle\_center.get\_center()
),
run\_time=3,
)
)
self.wait()
spiral\_path(_angle_, _axis\=array(\[0., 0., 1.\])_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#spiral_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.spiral_path "Link to this definition")
This function transforms each point by moving along a spiral to its destination.
Parameters:
* **angle** (_float_) – The angle each point traverses around a spiral.
* **axis** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The axis of rotation.
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
Examples
Example: SpiralPathExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#spiralpathexample)
from manim import \*
class SpiralPathExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.spiral\_path(2 \* TAU),
run\_time\=5,
)
)
self.wait()
class SpiralPathExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.spiral\_path(2 \* TAU),
run\_time=5,
)
)
self.wait()
straight\_path()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/paths.html#straight_path)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#manim.utils.paths.straight_path "Link to this definition")
Simplest path function. Each point in a set goes in a straight path toward its destination.
Examples
Example: StraightPathExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.paths.html#straightpathexample)
from manim import \*
class StraightPathExample(Scene):
def construct(self):
colors \= \[RED, GREEN, BLUE\]
starting\_points \= VGroup(
\*\[\
Dot(LEFT + pos, color\=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points \= VGroup(
\*\[\
Dot(RIGHT + pos, color\=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color\=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func\=utils.paths.straight\_path(),
run\_time\=2,
)
)
self.wait()
class StraightPathExample(Scene):
def construct(self):
colors = \[RED, GREEN, BLUE\]
starting\_points = VGroup(
\*\[\
Dot(LEFT + pos, color=color)\
for pos, color in zip(\[UP, DOWN, LEFT\], colors)\
\]
)
finish\_points = VGroup(
\*\[\
Dot(RIGHT + pos, color=color)\
for pos, color in zip(\[ORIGIN, UP, DOWN\], colors)\
\]
)
self.add(starting\_points)
self.add(finish\_points)
for dot in starting\_points:
self.add(TracedPath(dot.get\_center, stroke\_color=dot.get\_color()))
self.wait()
self.play(
Transform(
starting\_points,
finish\_points,
path\_func=utils.paths.straight\_path(),
run\_time=2,
)
)
self.wait()
Return type:
[_PathFuncType_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
---
# rate_functions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.rate_functions.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.rate_functions.rst "Edit this page")
rate\_functions[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#module-manim.utils.rate_functions "Link to this heading")
==============================================================================================================================================================
A selection of rate functions, i.e., _speed curves_ for animations. Please find a standard list at [https://easings.net/](https://easings.net/)
. Here is a picture for the non-standard ones
Example: RateFuncExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#ratefuncexample)

from manim import \*
class RateFuncExample(Scene):
def construct(self):
x \= VGroup()
for k, v in rate\_functions.\_\_dict\_\_.items():
if "function" in str(v):
if (
not k.startswith("\_\_")
and not k.startswith("sqrt")
and not k.startswith("bezier")
):
try:
rate\_func \= v
plot \= (
ParametricFunction(
lambda x: \[x, rate\_func(x), 0\],
t\_range\=\[0, 1, .01\],
use\_smoothing\=False,
color\=YELLOW,
)
.stretch\_to\_fit\_width(1.5)
.stretch\_to\_fit\_height(1)
)
plot\_bg \= SurroundingRectangle(plot).set\_color(WHITE)
plot\_title \= (
Text(rate\_func.\_\_name\_\_, weight\=BOLD)
.scale(0.5)
.next\_to(plot\_bg, UP, buff\=0.1)
)
x.add(VGroup(plot\_bg, plot, plot\_title))
except: \# because functions \`not\_quite\_there\`, \`function squish\_rate\_func\` are not working.
pass
x.arrange\_in\_grid(cols\=8)
x.height \= config.frame\_height
x.width \= config.frame\_width
x.move\_to(ORIGIN).scale(0.95)
self.add(x)
class RateFuncExample(Scene):
def construct(self):
x = VGroup()
for k, v in rate\_functions.\_\_dict\_\_.items():
if "function" in str(v):
if (
not k.startswith("\_\_")
and not k.startswith("sqrt")
and not k.startswith("bezier")
):
try:
rate\_func = v
plot = (
ParametricFunction(
lambda x: \[x, rate\_func(x), 0\],
t\_range=\[0, 1, .01\],
use\_smoothing=False,
color=YELLOW,
)
.stretch\_to\_fit\_width(1.5)
.stretch\_to\_fit\_height(1)
)
plot\_bg = SurroundingRectangle(plot).set\_color(WHITE)
plot\_title = (
Text(rate\_func.\_\_name\_\_, weight=BOLD)
.scale(0.5)
.next\_to(plot\_bg, UP, buff=0.1)
)
x.add(VGroup(plot\_bg, plot, plot\_title))
except: # because functions \`not\_quite\_there\`, \`function squish\_rate\_func\` are not working.
pass
x.arrange\_in\_grid(cols=8)
x.height = config.frame\_height
x.width = config.frame\_width
x.move\_to(ORIGIN).scale(0.95)
self.add(x)
There are primarily 3 kinds of standard easing functions:
1. Ease In - The animation has a smooth start.
2. Ease Out - The animation has a smooth end.
3. Ease In Out - The animation has a smooth start as well as smooth end.
Note
The standard functions are not exported, so to use them you do something like this: rate\_func=rate\_functions.ease\_in\_sine On the other hand, the non-standard functions, which are used more commonly, are exported and can be used directly.
Example: RateFunctions1Example [¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#ratefunctions1example)
from manim import \*
class RateFunctions1Example(Scene):
def construct(self):
line1 \= Line(3\*LEFT, 3\*RIGHT).shift(UP).set\_color(RED)
line2 \= Line(3\*LEFT, 3\*RIGHT).set\_color(GREEN)
line3 \= Line(3\*LEFT, 3\*RIGHT).shift(DOWN).set\_color(BLUE)
dot1 \= Dot().move\_to(line1.get\_left())
dot2 \= Dot().move\_to(line2.get\_left())
dot3 \= Dot().move\_to(line3.get\_left())
label1 \= Tex("Ease In").next\_to(line1, RIGHT)
label2 \= Tex("Ease out").next\_to(line2, RIGHT)
label3 \= Tex("Ease In Out").next\_to(line3, RIGHT)
self.play(
FadeIn(VGroup(line1, line2, line3)),
FadeIn(VGroup(dot1, dot2, dot3)),
Write(VGroup(label1, label2, label3)),
)
self.play(
MoveAlongPath(dot1, line1, rate\_func\=rate\_functions.ease\_in\_sine),
MoveAlongPath(dot2, line2, rate\_func\=rate\_functions.ease\_out\_sine),
MoveAlongPath(dot3, line3, rate\_func\=rate\_functions.ease\_in\_out\_sine),
run\_time\=7
)
self.wait()
class RateFunctions1Example(Scene):
def construct(self):
line1 = Line(3\*LEFT, 3\*RIGHT).shift(UP).set\_color(RED)
line2 = Line(3\*LEFT, 3\*RIGHT).set\_color(GREEN)
line3 = Line(3\*LEFT, 3\*RIGHT).shift(DOWN).set\_color(BLUE)
dot1 = Dot().move\_to(line1.get\_left())
dot2 = Dot().move\_to(line2.get\_left())
dot3 = Dot().move\_to(line3.get\_left())
label1 = Tex("Ease In").next\_to(line1, RIGHT)
label2 = Tex("Ease out").next\_to(line2, RIGHT)
label3 = Tex("Ease In Out").next\_to(line3, RIGHT)
self.play(
FadeIn(VGroup(line1, line2, line3)),
FadeIn(VGroup(dot1, dot2, dot3)),
Write(VGroup(label1, label2, label3)),
)
self.play(
MoveAlongPath(dot1, line1, rate\_func=rate\_functions.ease\_in\_sine),
MoveAlongPath(dot2, line2, rate\_func=rate\_functions.ease\_out\_sine),
MoveAlongPath(dot3, line3, rate\_func=rate\_functions.ease\_in\_out\_sine),
run\_time=7
)
self.wait()
Classes
| | |
| --- | --- |
| [`RateFunction`](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction") | |
Functions
double\_smooth(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#double_smooth)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.double_smooth "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_back(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_back)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_back "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_bounce(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_bounce)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_bounce "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_circ(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_circ)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_circ "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_cubic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_cubic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_cubic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_elastic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_elastic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_elastic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_expo(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_expo)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_expo "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_back(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_back)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_back "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_bounce(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_bounce)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_bounce "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_circ(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_circ)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_circ "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_cubic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_cubic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_cubic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_elastic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_elastic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_elastic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_expo(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_expo)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_expo "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_quad(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_quad)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_quad "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_quart(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_quart)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_quart "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_quint(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_quint)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_quint "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_out\_sine(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_out_sine)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_out_sine "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_quad(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_quad)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_quad "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_quart(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_quart)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_quart "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_quint(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_quint)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_quint "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_in\_sine(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_in_sine)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_in_sine "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_back(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_back)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_back "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_bounce(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_bounce)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_bounce "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_circ(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_circ)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_circ "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_cubic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_cubic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_cubic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_elastic(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_elastic)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_elastic "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_expo(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_expo)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_expo "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_quad(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_quad)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_quad "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_quart(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_quart)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_quart "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_quint(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_quint)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_quint "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
ease\_out\_sine(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#ease_out_sine)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.ease_out_sine "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
exponential\_decay(_t_, _half\_life\=0.1_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#exponential_decay)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.exponential_decay "Link to this definition")
Parameters:
* **t** (_float_)
* **half\_life** (_float_)
Return type:
float
linear(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#linear)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.linear "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
lingering(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#lingering)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.lingering "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
not\_quite\_there(_func\=_, _proportion\=0.7_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#not_quite_there)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.not_quite_there "Link to this definition")
Parameters:
* **func** ([_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
)
* **proportion** (_float_)
Return type:
[_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
running\_start(_t_, _pull\_factor\=\-0.5_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#running_start)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.running_start "Link to this definition")
Parameters:
* **t** (_float_)
* **pull\_factor** (_float_)
Return type:
float
rush\_from(_t_, _inflection\=10.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#rush_from)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.rush_from "Link to this definition")
Parameters:
* **t** (_float_)
* **inflection** (_float_)
Return type:
float
rush\_into(_t_, _inflection\=10.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#rush_into)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.rush_into "Link to this definition")
Parameters:
* **t** (_float_)
* **inflection** (_float_)
Return type:
float
slow\_into(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#slow_into)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.slow_into "Link to this definition")
Parameters:
**t** (_float_)
Return type:
float
smooth(_t_, _inflection\=10.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#smooth)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smooth "Link to this definition")
Parameters:
* **t** (_float_)
* **inflection** (_float_)
Return type:
float
smoothererstep(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#smoothererstep)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smoothererstep "Link to this definition")
Implementation of the 3rd order SmoothStep sigmoid function. The 1st, 2nd and 3rd derivatives (speed, acceleration and jerk) are zero at the endpoints. [https://en.wikipedia.org/wiki/Smoothstep](https://en.wikipedia.org/wiki/Smoothstep)
Parameters:
**t** (_float_)
Return type:
float
smootherstep(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#smootherstep)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smootherstep "Link to this definition")
Implementation of the 2nd order SmoothStep sigmoid function. The 1st and 2nd derivatives (speed and acceleration) are zero at the endpoints. [https://en.wikipedia.org/wiki/Smoothstep](https://en.wikipedia.org/wiki/Smoothstep)
Parameters:
**t** (_float_)
Return type:
float
smoothstep(_t_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#smoothstep)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.smoothstep "Link to this definition")
Implementation of the 1st order SmoothStep sigmoid function. The 1st derivative (speed) is zero at the endpoints. [https://en.wikipedia.org/wiki/Smoothstep](https://en.wikipedia.org/wiki/Smoothstep)
Parameters:
**t** (_float_)
Return type:
float
squish\_rate\_func(_func_, _a\=0.4_, _b\=0.6_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#squish_rate_func)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.squish_rate_func "Link to this definition")
Parameters:
* **func** ([_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
)
* **a** (_float_)
* **b** (_float_)
Return type:
[_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
there\_and\_back(_t_, _inflection\=10.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#there_and_back)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.there_and_back "Link to this definition")
Parameters:
* **t** (_float_)
* **inflection** (_float_)
Return type:
float
there\_and\_back\_with\_pause(_t_, _pause\_ratio\=0.3333333333333333_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#there_and_back_with_pause)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.there_and_back_with_pause "Link to this definition")
Parameters:
* **t** (_float_)
* **pause\_ratio** (_float_)
Return type:
float
unit\_interval(_function_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#unit_interval)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.unit_interval "Link to this definition")
Parameters:
**function** ([_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
)
Return type:
[_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
wiggle(_t_, _wiggles\=2_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#wiggle)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.wiggle "Link to this definition")
Parameters:
* **t** (_float_)
* **wiggles** (_float_)
Return type:
float
zero(_function_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/rate_functions.html#zero)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.zero "Link to this definition")
Parameters:
**function** ([_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
)
Return type:
[_RateFunction_](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.RateFunction.html#manim.utils.rate_functions.RateFunction "manim.utils.rate_functions.RateFunction")
---
# simple_functions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.simple_functions.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.simple_functions.rst "Edit this page")
simple\_functions[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#module-manim.utils.simple_functions "Link to this heading")
====================================================================================================================================================================
A collection of simple functions.
TypeVar’s
class ComparableT[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.ComparableT "Link to this definition")
TypeVar('ComparableT', bound\=Comparable)
Classes
| | |
| --- | --- |
| [`Comparable`](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.Comparable.html#manim.utils.simple_functions.Comparable "manim.utils.simple_functions.Comparable") | |
Functions
binary\_search(_function_, _target_, _lower\_bound_, _upper\_bound_, _tolerance\=0.0001_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/simple_functions.html#binary_search)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.binary_search "Link to this definition")
Searches for a value in a range by repeatedly dividing the range in half.
To be more precise, performs numerical binary search to determine the input to `function`, between the bounds given, that outputs `target` to within `tolerance` (default of 0.0001). Returns `None` if no input can be found within the bounds.
Examples
Consider the polynomial \\(x^2 + 3x + 1\\) where we search for a target value of \\(11\\). An exact solution is \\(x = 2\\).
\>>> solution \= binary\_search(lambda x: x\*\*2 + 3\*x + 1, 11, 0, 5)
\>>> bool(abs(solution \- 2) < 1e-4)
True
\>>> solution \= binary\_search(lambda x: x\*\*2 + 3\*x + 1, 11, 0, 5, tolerance\=0.01)
\>>> bool(abs(solution \- 2) < 0.01)
True
Searching in the interval \\(\[0, 5\]\\) for a target value of \\(71\\) does not yield a solution:
\>>> binary\_search(lambda x: x\*\*2 + 3\*x + 1, 71, 0, 5) is None
True
Parameters:
* **function** (_Callable__\[__\[__float__\]__,_ _float__\]_)
* **target** (_float_)
* **lower\_bound** (_float_)
* **upper\_bound** (_float_)
* **tolerance** (_float_)
Return type:
float | None
choose(_n_, _k_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/simple_functions.html#choose)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.choose "Link to this definition")
The binomial coefficient n choose k.
\\(\\binom{n}{k}\\) describes the number of possible choices of \\(k\\) elements from a set of \\(n\\) elements.
References
* [https://en.wikipedia.org/wiki/Combination](https://en.wikipedia.org/wiki/Combination)
* [https://docs.python.org/3/library/math.html#math.comb](https://docs.python.org/3/library/math.html#math.comb)
Parameters:
* **n** (_int_)
* **k** (_int_)
Return type:
int
clip(_a_, _min\_a_, _max\_a_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/simple_functions.html#clip)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.clip "Link to this definition")
Clips `a` to the interval \[`min_a`, `max_a`\].
Accepts any comparable objects (i.e. those that support <, >). Returns `a` if it is between `min_a` and `max_a`. Otherwise, whichever of `min_a` and `max_a` is closest.
Examples
\>>> clip(15, 11, 20)
15
\>>> clip('a', 'h', 'k')
'h'
Parameters:
* **a** ([_ComparableT_](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.ComparableT "manim.utils.simple_functions.ComparableT")
)
* **min\_a** ([_ComparableT_](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.ComparableT "manim.utils.simple_functions.ComparableT")
)
* **max\_a** ([_ComparableT_](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.ComparableT "manim.utils.simple_functions.ComparableT")
)
Return type:
[_ComparableT_](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.ComparableT "manim.utils.simple_functions.ComparableT")
sigmoid(_x_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/simple_functions.html#sigmoid)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#manim.utils.simple_functions.sigmoid "Link to this definition")
Returns the output of the logistic function.
The logistic function, a common example of a sigmoid function, is defined as \\(\\frac{1}{1 + e^{-x}}\\).
References
* [https://en.wikipedia.org/wiki/Sigmoid\_function](https://en.wikipedia.org/wiki/Sigmoid_function)
* [https://en.wikipedia.org/wiki/Logistic\_function](https://en.wikipedia.org/wiki/Logistic_function)
Parameters:
**x** (_float_)
Return type:
float
---
# v0.17.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.17.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.17.0-changelog.rst "Edit this page")
v0.17.0[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#v0-17-0 "Link to this heading")
==================================================================================================================
Date:
December 02, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 32 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Alexander Vázquez
* Benjamin Hackl
* Duc Phat +
* Hugues Devimeux
* Ievgen Pyrogov +
* Isaac Beh +
* Jeff Hanke +
* John Hammond +
* Jérome Eertmans +
* Kevin Lubick
* Kian-Meng Ang +
* Naveen M K
* Nick Skriloff +
* NotWearingPants
* Onur Solmaz +
* OpenRefactory, Inc +
* Owen Samuel +
* Pavel Zwerschke +
* Sparsh Goenka
* Taxo Rubio
* ad-chaos +
* fcrozatier
* mostly documentation +
* vahndi +
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Darylgolden
* Hugues Devimeux
* Jan-Hendrik Müller
* Kevin Lubick
* Mohammed Belgoumri
* Naveen M K
* NotWearingPants
* Raghav Goel
* Sparsh Goenka
* Tristan Schulz
* ad-chaos
* friedkeenan
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 63 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#breaking-changes "Link to this heading")
* [PR #2898](https://github.com/ManimCommunity/manim/pull/2898)
: Ported improved implementation of [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
from 3b1b/manim
The implementation of [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
is completely changed in this release. Manim now uses the Python library `svgelements` to parse SVGs, instead of trying to do it itself. The former class for SVG path objects, `SVGPathMobject` has been replaced (without deprecation) with [`VMobjectFromSVGPath`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath")
.
If you need to create a mobject from an SVG path string, you can do so via:
import svgelements as se
my\_path\_mobject \= VMobjectFromSVGPath(se.Path(my\_path\_string))
The unused class `TexSymbol` has been removed. The modules `manim.mobject.svg.svg_path` and `manim.mobject.svg.style_utils` became superfluous due to the rework and have been removed.
* [PR #3030](https://github.com/ManimCommunity/manim/pull/3030)
: Added support for Python 3.11, dropped support for Python 3.7
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#highlights "Link to this heading")
* [PR #3049](https://github.com/ManimCommunity/manim/pull/3049)
: Added thematic guide for the `manim-voiceover` plugin
This new [thematic guide](https://docs.manim.community/en/stable/guides/add_voiceovers.html)
provides a brief introduction to `manim-voiceover`, a plugin that helps to add voiceovers to your manimations. Supports both working with your own voice as well as synthetically generated voices.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#new-features "Link to this heading")
* [PR #2883](https://github.com/ManimCommunity/manim/pull/2883)
: Added animation [`RemoveTextLetterByLetter`](https://docs.manim.community/en/stable/reference/manim.animation.creation.RemoveTextLetterByLetter.html#manim.animation.creation.RemoveTextLetterByLetter "manim.animation.creation.RemoveTextLetterByLetter")
* [PR #3016](https://github.com/ManimCommunity/manim/pull/3016)
: Implemented `LineJointTypes` for both Cairo and OpenGL renderer
* [PR #3017](https://github.com/ManimCommunity/manim/pull/3017)
: Replaced renderer strings with [`RendererType`](https://docs.manim.community/en/stable/reference/manim.constants.RendererType.html#manim.constants.RendererType "manim.constants.RendererType")
enum entries
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#enhancements "Link to this heading")
* [PR #2927](https://github.com/ManimCommunity/manim/pull/2927)
: Allowed `networkx` to return 3D layouts when passing `dim=3` in the `layout_config` of a [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
* [PR #3014](https://github.com/ManimCommunity/manim/pull/3014)
: Enabled code completion for [`Mobject.animate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
for some IDEs
Uses a Union of the existing Generic Mobject Type T and \_Animation Builder as the declared return type from Mobject.animate to improve code completion.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2846](https://github.com/ManimCommunity/manim/pull/2846)
: Prevent [`TransformMatchingTex`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingTex.html#manim.animation.transform_matching_parts.TransformMatchingTex "manim.animation.transform_matching_parts.TransformMatchingTex")
from crashing when there is nothing to fade
* [PR #2885](https://github.com/ManimCommunity/manim/pull/2885)
: Always expand user when validating file-paths
* [PR #2888](https://github.com/ManimCommunity/manim/pull/2888)
: Fixed bug with propagation of `tex_template` value when using `tempconfig`
* [PR #2895](https://github.com/ManimCommunity/manim/pull/2895)
: Fixed broken [`ShowPassingFlashWithThinningStrokeWidth`](https://docs.manim.community/en/stable/reference/manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth.html#manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth "manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth")
* [PR #2920](https://github.com/ManimCommunity/manim/pull/2920)
: Fixed alignment of faded lines when passing `faded_line_ratio` to [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
* [PR #2977](https://github.com/ManimCommunity/manim/pull/2977)
: Allow rendering of empty text strings
* [PR #2992](https://github.com/ManimCommunity/manim/pull/2992)
: Fixed `CLI.tex_template_file` config file setting
* [PR #3003](https://github.com/ManimCommunity/manim/pull/3003)
: Fixed setting `run_time` of [`Succession`](https://docs.manim.community/en/stable/reference/manim.animation.composition.Succession.html#manim.animation.composition.Succession "manim.animation.composition.Succession")
after creating the animation object
* [PR #3019](https://github.com/ManimCommunity/manim/pull/3019)
: Fixed rendering SVG paths with multiple move commands
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2881](https://github.com/ManimCommunity/manim/pull/2881)
: Fixed small typo in deep dive guide
* [PR #2886](https://github.com/ManimCommunity/manim/pull/2886)
: Added docstring to and fixed type hint of [`get_winding_number()`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.get_winding_number "manim.utils.space_ops.get_winding_number")
* [PR #2892](https://github.com/ManimCommunity/manim/pull/2892)
: Corrected error in the `PolygonOnAxes` example
* [PR #2903](https://github.com/ManimCommunity/manim/pull/2903)
: Fixed minor grammar issues in [FAQ: General Usage](https://docs.manim.community/en/stable/faq/general.html)
* [PR #2904](https://github.com/ManimCommunity/manim/pull/2904)
: Fixed formatting and grammar issues in [Manim Development Process](https://docs.manim.community/en/stable/contributing/development.html)
* [PR #2911](https://github.com/ManimCommunity/manim/pull/2911)
: Disabled autoplay for `SoundExample` in documentation
* [PR #2914](https://github.com/ManimCommunity/manim/pull/2914)
: Added conda installation instructions
* [PR #2915](https://github.com/ManimCommunity/manim/pull/2915)
: Added documentation to [`three_dimensions`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#module-manim.mobject.three_d.three_dimensions "manim.mobject.three_d.three_dimensions")
* [PR #2919](https://github.com/ManimCommunity/manim/pull/2919)
: Corrected parameters and enhanced the description of [`ImageMobject.interpolate_color()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.interpolate_color "manim.mobject.types.image_mobject.ImageMobject.interpolate_color")
* [PR #2932](https://github.com/ManimCommunity/manim/pull/2932)
: Fixed whitespace formatting issue
* [PR #2933](https://github.com/ManimCommunity/manim/pull/2933)
: Improved answer to the “no scenes in this module” error
* [PR #2936](https://github.com/ManimCommunity/manim/pull/2936)
: Added installation instructions for Windows via `winget`
* [PR #2962](https://github.com/ManimCommunity/manim/pull/2962)
: Disabled “Edit on GitHub” button in documentation
* [PR #2978](https://github.com/ManimCommunity/manim/pull/2978)
: Added documentation and example for [`CyclicReplace`](https://docs.manim.community/en/stable/reference/manim.animation.transform.CyclicReplace.html#manim.animation.transform.CyclicReplace "manim.animation.transform.CyclicReplace")
* [PR #3001](https://github.com/ManimCommunity/manim/pull/3001)
: Added FAQ entry regarding failed `manimpango` build
* [PR #3004](https://github.com/ManimCommunity/manim/pull/3004)
: Fixed docbuild warnings
* [PR #3018](https://github.com/ManimCommunity/manim/pull/3018)
: Follow-up to [PR #2988](https://github.com/ManimCommunity/manim/pull/2988)
– fixes and improvements to some docstrings
* [PR #3022](https://github.com/ManimCommunity/manim/pull/3022)
: Corrected type hint in `Axes.coords_to_point()`
* [PR #3035](https://github.com/ManimCommunity/manim/pull/3035)
: Include latex install instructions on ubuntu
* [PR #3044](https://github.com/ManimCommunity/manim/pull/3044)
: Added Debian dependencies required for pycairo and manimpango
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #2893](https://github.com/ManimCommunity/manim/pull/2893)
: Improved performance of `test_threed.py`
* [PR #2981](https://github.com/ManimCommunity/manim/pull/2981)
: Implemented fallback save behavior for `pytest --show_diff`
* [PR #2982](https://github.com/ManimCommunity/manim/pull/2982)
: Rewrote unstable tests for [`text_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject "manim.mobject.text.text_mobject")
to be non-graphical
* [PR #2991](https://github.com/ManimCommunity/manim/pull/2991)
: Migrated `os.path` to `pathlib.Path` in tests
* [PR #3053](https://github.com/ManimCommunity/manim/pull/3053)
: Added threshold for pixel value errors in frame comparison tests
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2925](https://github.com/ManimCommunity/manim/pull/2925)
: CI (test-arm): Updated python version to `3.10.6`
* [PR #2963](https://github.com/ManimCommunity/manim/pull/2963)
: CI (test-arm): Always select the correct python version
* [PR #3029](https://github.com/ManimCommunity/manim/pull/3029)
: CI: Updated actions version and added dependabot config
* [PR #3045](https://github.com/ManimCommunity/manim/pull/3045)
: Updated python-opengl -> python3-opengl for Ubuntu CI task
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2872](https://github.com/ManimCommunity/manim/pull/2872)
: Add `extract_frames.py` utility script to help visualize test control data
* [PR #2877](https://github.com/ManimCommunity/manim/pull/2877)
: Fixed binder launch problem by adding missing optional `notebook` dependency
* [PR #2887](https://github.com/ManimCommunity/manim/pull/2887)
: Removed empty i18n files that caused filename clashes
* [PR #2931](https://github.com/ManimCommunity/manim/pull/2931)
: Updated `mapbox-earcut`
* [PR #2938](https://github.com/ManimCommunity/manim/pull/2938)
: Suggested fixes by iCR, OpenRefactory, Inc.
* [PR #2954](https://github.com/ManimCommunity/manim/pull/2954)
: Fixed click version string in `pyproject.toml`
* [PR #2958](https://github.com/ManimCommunity/manim/pull/2958)
: Fix missing stub packages for mypy
* [PR #2975](https://github.com/ManimCommunity/manim/pull/2975)
: Fixed broken links in README
* [PR #2980](https://github.com/ManimCommunity/manim/pull/2980)
: Migrate more `os.path` to `pathlib.Path`
* [PR #2983](https://github.com/ManimCommunity/manim/pull/2983)
: Fixed Windows CI Pipeline
* [PR #2988](https://github.com/ManimCommunity/manim/pull/2988)
: Converted all types of parameters in docstrings to proper type annotations
* [PR #2994](https://github.com/ManimCommunity/manim/pull/2994)
: Fixed segmentation faults from doctests under Python 3.10
* [PR #2995](https://github.com/ManimCommunity/manim/pull/2995)
: Added encoding to `open` in `utils.text_file_writing`
* [PR #3032](https://github.com/ManimCommunity/manim/pull/3032)
: Bump jupyter-core from 4.11.1 to 4.11.2
* [PR #3033](https://github.com/ManimCommunity/manim/pull/3033)
: Bump pillow from 9.2.0 to 9.3.0
* [PR #3054](https://github.com/ManimCommunity/manim/pull/3054)
: Removed unused `GraphicalUnitTester`
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html#new-releases "Link to this heading")
* [PR #3023](https://github.com/ManimCommunity/manim/pull/3023)
: Prepared new release: v0.17.0
---
# _test_class_makers - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.testing._test_class_makers.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.testing._test_class_makers.rst "Edit this page")
\_test\_class\_makers[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.html#module-manim.utils.testing._test_class_makers "Link to this heading")
============================================================================================================================================================================================
Classes
| | |
| --- | --- |
| [`DummySceneFileWriter`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter "manim.utils.testing._test_class_makers.DummySceneFileWriter") | Delegate of SceneFileWriter used to test the frames. |
---
# tex - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex.rst "Edit this page")
tex[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.html#module-manim.utils.tex "Link to this heading")
============================================================================================================================
Utilities for processing LaTeX templates.
Classes
| | |
| --- | --- |
| [`TexTemplate`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "manim.utils.tex.TexTemplate") | TeX templates are used to create `Tex` and `MathTex` objects. |
---
# tex_templates - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex_templates.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex_templates.rst "Edit this page")
tex\_templates[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.html#module-manim.utils.tex_templates "Link to this heading")
===========================================================================================================================================================
A library of LaTeX templates.
Classes
| | |
| --- | --- |
| [`TexFontTemplates`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates "manim.utils.tex_templates.TexFontTemplates") | A collection of TeX templates for the fonts described at [http://jf.burnol.free.fr/showcase.html](http://jf.burnol.free.fr/showcase.html) |
| [`TexTemplateLibrary`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary "manim.utils.tex_templates.TexTemplateLibrary") | A collection of basic TeX template objects |
---
# Changelog - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog.rst "Edit this page")
Changelog[¶](https://docs.manim.community/en/stable/changelog.html#changelog "Link to this heading")
=====================================================================================================
This page contains a list of changes made between releases.
* [v0.20.1](https://docs.manim.community/en/stable/changelog/0.20.1-changelog.html)
* [v0.20.0](https://docs.manim.community/en/stable/changelog/0.20.0-changelog.html)
* [v0.19.2](https://docs.manim.community/en/stable/changelog/0.19.2-changelog.html)
* [v0.19.1](https://docs.manim.community/en/stable/changelog/0.19.1-changelog.html)
* [v0.19.0](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html)
* [v0.18.1](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html)
* [v0.18.0.post0](https://docs.manim.community/en/stable/changelog/0.18.0.post0-changelog.html)
* [v0.18.0](https://docs.manim.community/en/stable/changelog/0.18.0-changelog.html)
* [v0.17.3](https://docs.manim.community/en/stable/changelog/0.17.3-changelog.html)
* [v0.17.2](https://docs.manim.community/en/stable/changelog/0.17.2-changelog.html)
* [v0.17.1](https://docs.manim.community/en/stable/changelog/0.17.1-changelog.html)
* [v0.17.0](https://docs.manim.community/en/stable/changelog/0.17.0-changelog.html)
* [v0.16.0](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html)
* [v0.15.2](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html)
* [v0.15.1](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html)
* [v0.15.0](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html)
* [v0.14.0](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html)
* [v0.13.1](https://docs.manim.community/en/stable/changelog/0.13.1-changelog.html)
* [v0.13.0](https://docs.manim.community/en/stable/changelog/0.13.0-changelog.html)
* [v0.12.0](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html)
* [v0.11.0](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html)
* [v0.10.0](https://docs.manim.community/en/stable/changelog/0.10.0-changelog.html)
* [v0.9.0](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html)
* [v0.8.0](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html)
* [v0.7.0](https://docs.manim.community/en/stable/changelog/0.7.0-changelog.html)
* [v0.6.0](https://docs.manim.community/en/stable/changelog/0.6.0-changelog.html)
* [v0.5.0](https://docs.manim.community/en/stable/changelog/0.5.0-changelog.html)
* [v0.4.0](https://docs.manim.community/en/stable/changelog/0.4.0-changelog.html)
* [v0.3.0](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html)
* [v0.2.0](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html)
* [v0.1.1](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html)
* [v0.1.0](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html)
---
# Adding Documentation - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs.rst "Edit this page")
Adding Documentation[¶](https://docs.manim.community/en/stable/contributing/docs.html#adding-documentation "Link to this heading")
===================================================================================================================================
Building the documentation[¶](https://docs.manim.community/en/stable/contributing/docs.html#building-the-documentation "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------
When you clone the Manim repository from GitHub, you can access the `docs/` folder which contains the necessary files to build the documentation.
To build the docs locally, open a CLI, enter the `docs/` folder with the `cd` command and execute the following depending on your OS:
* Windows: `./make.bat html`
* macOS and Linux: `make html`
The first time you build the docs, the process will take several minutes because it needs to generate all the `.rst` (reST: reStructured Text) files from scratch by reading and parsing all the Manim content. The process becomes much shorter the next time, as it rebuilds only the parts which have changed.
Sphinx library and extensions[¶](https://docs.manim.community/en/stable/contributing/docs.html#sphinx-library-and-extensions "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------------
Manim uses [Sphinx](https://www.sphinx-doc.org/)
for building the docs. It also makes use of Sphinx extensions such as:
* [Autodoc:](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html)
imports Manim’s Python source code, extracts its docstrings and generates documentation from them.
* [Autosummary:](https://www.sphinx-doc.org/en/master/usage/extensions/autosummary.html)
a complement to Autodoc which adds a special directive `autosummary`, used in Manim to automatically document classes, methods, attributes, functions, module-level variables and exceptions. Autosummary makes use of [Jinja templates](https://jinja.palletsprojects.com/templates/)
, which Manim defines for autosummarizing classes and modules inside `docs/source/_templates/`.
* [Graphviz extension for Sphinx:](https://www.sphinx-doc.org/en/master/usage/extensions/graphviz.html)
embeds graphs generated by the [Graphviz](https://graphviz.org/)
module, which must be installed in order to render the inheritance diagrams in the [Reference Manual](https://docs.manim.community/en/stable/reference.html)
.
* [Napoleon:](https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html)
enables Sphinx to read Google style docstrings and, in particular for Manim, [NumPy style docstrings](https://numpydoc.readthedocs.io/en/latest/format.html)
- see [Adding Docstrings](https://docs.manim.community/en/stable/contributing/docs/docstrings.html)
for more information.
Sphinx theme[¶](https://docs.manim.community/en/stable/contributing/docs.html#sphinx-theme "Link to this heading")
-------------------------------------------------------------------------------------------------------------------
The theme used for this website is [Furo](https://sphinx-themes.org/sample-sites/furo/)
.
Custom Sphinx directives[¶](https://docs.manim.community/en/stable/contributing/docs.html#custom-sphinx-directives "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
Manim implements **custom directives** for use with Autodoc and Autosummary, which are defined in [`docbuild`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.html#module-manim.utils.docbuild "manim.utils.docbuild")
:
| | |
| --- | --- |
| [`autoaliasattr_directive`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.autoaliasattr_directive.html#module-manim.utils.docbuild.autoaliasattr_directive "manim.utils.docbuild.autoaliasattr_directive") | A directive for documenting type aliases and other module-level attributes. |
| [`autocolor_directive`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.autocolor_directive.html#module-manim.utils.docbuild.autocolor_directive "manim.utils.docbuild.autocolor_directive") | A directive for documenting colors in Manim. |
| [`manim_directive`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.html#module-manim.utils.docbuild.manim_directive "manim.utils.docbuild.manim_directive") | A directive for including Manim videos in a Sphinx document |
Index[¶](https://docs.manim.community/en/stable/contributing/docs.html#index "Link to this heading")
-----------------------------------------------------------------------------------------------------
* [Adding Admonitions](https://docs.manim.community/en/stable/contributing/docs/admonitions.html)
* [Adding Blocks for Tip, Note, Important etc. (Admonitions)](https://docs.manim.community/en/stable/contributing/docs/admonitions.html#adding-blocks-for-tip-note-important-etc-admonitions)
* [Adding Docstrings](https://docs.manim.community/en/stable/contributing/docs/docstrings.html)
* [Formatting the Docstrings](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#formatting-the-docstrings)
* [NumPy Format](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#numpy-format)
* [Adding Examples](https://docs.manim.community/en/stable/contributing/docs/examples.html)
* [Guidelines for examples](https://docs.manim.community/en/stable/contributing/docs/examples.html#guidelines-for-examples)
* [What makes a great example](https://docs.manim.community/en/stable/contributing/docs/examples.html#what-makes-a-great-example)
* [How examples are structured](https://docs.manim.community/en/stable/contributing/docs/examples.html#how-examples-are-structured)
* [Adding References](https://docs.manim.community/en/stable/contributing/docs/references.html)
* [Reference to types in documentation](https://docs.manim.community/en/stable/contributing/docs/references.html#reference-to-types-in-documentation)
* [Typing Conventions](https://docs.manim.community/en/stable/contributing/docs/typings.html)
* [Adding type hints to functions and parameters](https://docs.manim.community/en/stable/contributing/docs/typings.html#adding-type-hints-to-functions-and-parameters)
* [Missing Sections for typehints are:](https://docs.manim.community/en/stable/contributing/docs/typings.html#missing-sections-for-typehints-are)
* [Choosing Type Hints](https://docs.manim.community/en/stable/contributing/docs/types.html)
* [Coordinates](https://docs.manim.community/en/stable/contributing/docs/types.html#coordinates)
* [Colors](https://docs.manim.community/en/stable/contributing/docs/types.html#colors)
* [Béziers](https://docs.manim.community/en/stable/contributing/docs/types.html#beziers)
* [Functions](https://docs.manim.community/en/stable/contributing/docs/types.html#functions)
* [Images](https://docs.manim.community/en/stable/contributing/docs/types.html#images)
---
# TexTemplateLibrary - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex_templates.TexTemplateLibrary.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex_templates.TexTemplateLibrary.rst "Edit this page")
TexTemplateLibrary[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#textemplatelibrary "Link to this heading")
====================================================================================================================================================================
Qualified name: `manim.utils.tex\_templates.TexTemplateLibrary`
class TexTemplateLibrary[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_templates.html#TexTemplateLibrary)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary "Link to this definition")
Bases: `object`
A collection of basic TeX template objects
Examples
Normal usage as a value for the keyword argument tex\_template of Tex() and MathTex() mobjects:
\`\`Tex("My TeX code", tex\_template=TexTemplateLibrary.ctex)\`\`
Methods
Attributes
| | |
| --- | --- |
| [`ctex`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.ctex "manim.utils.tex_templates.TexTemplateLibrary.ctex") | An instance of the TeX template used by 3b1b when using the use\_ctex flag |
| [`default`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.default "manim.utils.tex_templates.TexTemplateLibrary.default") | An instance of the default TeX template in manim |
| [`simple`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.simple "manim.utils.tex_templates.TexTemplateLibrary.simple") | An instance of a simple TeX template with only basic AMS packages loaded |
| [`threeb1b`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.threeb1b "manim.utils.tex_templates.TexTemplateLibrary.threeb1b") | An instance of the default TeX template used by 3b1b |
ctex \= TexTemplate(\_body='', tex\_compiler='xelatex', description='', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage\[utf8\]{inputenc}\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{lmodern}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\\\usepackage{dsfont}\\n\\\\usepackage{setspace}\\n\\\\usepackage{tipa}\\n\\\\usepackage{relsize}\\n\\\\usepackage{textcomp}\\n\\\\usepackage{mathrsfs}\\n\\\\usepackage{calligra}\\n\\\\usepackage{wasysym}\\n\\\\usepackage{ragged2e}\\n\\\\usepackage{physics}\\n\\\\usepackage{xcolor}\\n\\\\usepackage{microtype}\\n\\\\usepackage\[UTF8\]{ctex}\\n\\\\linespread{1}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.ctex "Link to this definition")
An instance of the TeX template used by 3b1b when using the use\_ctex flag
default \= TexTemplate(\_body='', tex\_compiler='latex', description='', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage\[utf8\]{inputenc}\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{lmodern}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\\\usepackage{dsfont}\\n\\\\usepackage{setspace}\\n\\\\usepackage{tipa}\\n\\\\usepackage{relsize}\\n\\\\usepackage{textcomp}\\n\\\\usepackage{mathrsfs}\\n\\\\usepackage{calligra}\\n\\\\usepackage{wasysym}\\n\\\\usepackage{ragged2e}\\n\\\\usepackage{physics}\\n\\\\usepackage{xcolor}\\n\\\\usepackage{microtype}\\n\\\\DisableLigatures{encoding \= \*, family \= \* }\\n\\\\linespread{1}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.default "Link to this definition")
An instance of the default TeX template in manim
simple \= TexTemplate(\_body='', tex\_compiler='latex', description='', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.simple "Link to this definition")
An instance of a simple TeX template with only basic AMS packages loaded
threeb1b \= TexTemplate(\_body='', tex\_compiler='latex', description='', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage\[utf8\]{inputenc}\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{lmodern}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\\\usepackage{dsfont}\\n\\\\usepackage{setspace}\\n\\\\usepackage{tipa}\\n\\\\usepackage{relsize}\\n\\\\usepackage{textcomp}\\n\\\\usepackage{mathrsfs}\\n\\\\usepackage{calligra}\\n\\\\usepackage{wasysym}\\n\\\\usepackage{ragged2e}\\n\\\\usepackage{physics}\\n\\\\usepackage{xcolor}\\n\\\\usepackage{microtype}\\n\\\\DisableLigatures{encoding \= \*, family \= \* }\\n\\\\linespread{1}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexTemplateLibrary.html#manim.utils.tex_templates.TexTemplateLibrary.threeb1b "Link to this definition")
An instance of the default TeX template used by 3b1b
---
# TexTemplate - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex.TexTemplate.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex.TexTemplate.rst "Edit this page")
TexTemplate[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#textemplate "Link to this heading")
=====================================================================================================================================
Qualified name: `manim.utils.tex.TexTemplate`
class TexTemplate(_tex\_compiler\='latex'_, _description\=''_, _output\_format\='.dvi'_, _documentclass\='\\\\documentclass\[preview\]{standalone}'_, _preamble\='\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}'_, _placeholder\_text\='YourTextHere'_, _post\_doc\_commands\=''_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "Link to this definition")
Bases: `object`
TeX templates are used to create `Tex` and `MathTex` objects.
Methods
| | |
| --- | --- |
| [`add_to_document`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_document "manim.utils.tex.TexTemplate.add_to_document") | Adds text to the TeX template just after begin{document}, e.g. `\boldmath`. |
| [`add_to_preamble`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_preamble "manim.utils.tex.TexTemplate.add_to_preamble") | Adds text to the TeX template's preamble (e.g. definitions, packages). |
| [`copy`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.copy "manim.utils.tex.TexTemplate.copy") | Create a deep copy of the TeX template instance. |
| [`from_file`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.from_file "manim.utils.tex.TexTemplate.from_file") | Create an instance by reading the content of a file. |
| [`get_texcode_for_expression`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.get_texcode_for_expression "manim.utils.tex.TexTemplate.get_texcode_for_expression") | Inserts expression verbatim into TeX template. |
| [`get_texcode_for_expression_in_env`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.get_texcode_for_expression_in_env "manim.utils.tex.TexTemplate.get_texcode_for_expression_in_env") | Inserts expression into TeX template wrapped in `\begin{environment}` and `\end{environment}`. |
Attributes
| | |
| --- | --- |
| [`body`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.body "manim.utils.tex.TexTemplate.body") | The entire TeX template. |
| [`description`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.description "manim.utils.tex.TexTemplate.description") | A description of the template |
| [`documentclass`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.documentclass "manim.utils.tex.TexTemplate.documentclass") | The command defining the documentclass, e.g. `\documentclass[preview]{standalone}`. |
| [`output_format`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.output_format "manim.utils.tex.TexTemplate.output_format") | The output format resulting from compilation, e.g. `.dvi` or `.pdf`. |
| [`placeholder_text`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.placeholder_text "manim.utils.tex.TexTemplate.placeholder_text") | Text in the document that will be replaced by the expression to be rendered. |
| [`post_doc_commands`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.post_doc_commands "manim.utils.tex.TexTemplate.post_doc_commands") | Text (definitions, commands) to be inserted at right after `\begin{document}`, e.g. `\boldmath`. |
| [`preamble`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.preamble "manim.utils.tex.TexTemplate.preamble") | The document's preamble, i.e. the part between `\documentclass` and `\begin{document}`. |
| [`tex_compiler`](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.tex_compiler "manim.utils.tex.TexTemplate.tex_compiler") | The TeX compiler to be used, e.g. `latex`, `pdflatex` or `lualatex`. |
Parameters:
* **tex\_compiler** (_str_)
* **description** (_str_)
* **output\_format** (_str_)
* **documentclass** (_str_)
* **preamble** (_str_)
* **placeholder\_text** (_str_)
* **post\_doc\_commands** (_str_)
\_body: str \= ''[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate._body "Link to this definition")
A custom body, can be set from a file.
add\_to\_document(_txt_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.add_to_document)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_document "Link to this definition")
Adds text to the TeX template just after begin{document}, e.g. `\boldmath`.
Parameters:
**txt** (_str_) – String containing the text to be added.
Return type:
Self
add\_to\_preamble(_txt_, _prepend\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.add_to_preamble)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.add_to_preamble "Link to this definition")
Adds text to the TeX template’s preamble (e.g. definitions, packages). Text can be inserted at the beginning or at the end of the preamble.
Parameters:
* **txt** (_str_) – String containing the text to be added, e.g. `\usepackage{hyperref}`.
* **prepend** (_bool_) – Whether the text should be added at the beginning of the preamble, i.e. right after `\documentclass`. Default is to add it at the end of the preamble, i.e. right before `\begin{document}`.
Return type:
Self
property body: str[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.body "Link to this definition")
The entire TeX template.
copy()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.copy)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.copy "Link to this definition")
Create a deep copy of the TeX template instance.
Return type:
Self
description: str \= ''[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.description "Link to this definition")
A description of the template
documentclass: str \= '\\\\documentclass\[preview\]{standalone}'[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.documentclass "Link to this definition")
The command defining the documentclass, e.g. `\documentclass[preview]{standalone}`.
classmethod from\_file(_file\='tex\_template.tex'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.from_file)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.from_file "Link to this definition")
Create an instance by reading the content of a file.
Using the `add_to_preamble` and `add_to_document` methods on this instance will have no effect, as the body is read from the file.
Parameters:
* **file** ([_StrPath_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "manim.typing.StrPath")
)
* **kwargs** (_Any_)
Return type:
Self
get\_texcode\_for\_expression(_expression_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.get_texcode_for_expression)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.get_texcode_for_expression "Link to this definition")
Inserts expression verbatim into TeX template.
Parameters:
**expression** (_str_) – The string containing the expression to be typeset, e.g. `$\sqrt{2}$`
Returns:
LaTeX code based on current template, containing the given `expression` and ready for typesetting
Return type:
`str`
get\_texcode\_for\_expression\_in\_env(_expression_, _environment_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex.html#TexTemplate.get_texcode_for_expression_in_env)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.get_texcode_for_expression_in_env "Link to this definition")
Inserts expression into TeX template wrapped in `\begin{environment}` and `\end{environment}`.
Parameters:
* **expression** (_str_) – The string containing the expression to be typeset, e.g. `$\sqrt{2}$`.
* **environment** (_str_) – The string containing the environment in which the expression should be typeset, e.g. `align*`.
Returns:
LaTeX code based on template, containing the given expression inside its environment, ready for typesetting
Return type:
`str`
output\_format: str \= '.dvi'[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.output_format "Link to this definition")
The output format resulting from compilation, e.g. `.dvi` or `.pdf`.
placeholder\_text: str \= 'YourTextHere'[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.placeholder_text "Link to this definition")
Text in the document that will be replaced by the expression to be rendered.
post\_doc\_commands: str \= ''[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.post_doc_commands "Link to this definition")
Text (definitions, commands) to be inserted at right after `\begin{document}`, e.g. `\boldmath`.
preamble: str \= '\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}'[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.preamble "Link to this definition")
The document’s preamble, i.e. the part between `\documentclass` and `\begin{document}`.
tex\_compiler: str \= 'latex'[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate.tex_compiler "Link to this definition")
The TeX compiler to be used, e.g. `latex`, `pdflatex` or `lualatex`.
---
# tex_file_writing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex_file_writing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex_file_writing.rst "Edit this page")
tex\_file\_writing[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#module-manim.utils.tex_file_writing "Link to this heading")
=====================================================================================================================================================================
Interface for writing, compiling, and converting `.tex` files.
See also
`mobject.svg.tex_mobject`
Functions
compile\_tex(_tex\_file_, _tex\_compiler_, _output\_format_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#compile_tex)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.compile_tex "Link to this definition")
Compiles a tex\_file into a .dvi or a .xdv or a .pdf
Parameters:
* **tex\_file** (_Path_) – File name of TeX file to be typeset.
* **tex\_compiler** (_str_) – String containing the compiler to be used, e.g. `pdflatex` or `lualatex`
* **output\_format** (_str_) – String containing the output format generated by the compiler, e.g. `.dvi` or `.pdf`
Returns:
Path to generated output file in desired format (DVI, XDV or PDF).
Return type:
`Path`
convert\_to\_svg(_dvi\_file_, _extension_, _page\=1_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#convert_to_svg)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.convert_to_svg "Link to this definition")
Converts a .dvi, .xdv, or .pdf file into an svg using dvisvgm.
Parameters:
* **dvi\_file** (_Path_) – File name of the input file to be converted.
* **extension** (_str_) – String containing the file extension and thus indicating the file type, e.g. `.dvi` or `.pdf`
* **page** (_int_) – Page to be converted if input file is multi-page.
Returns:
Path to generated SVG file.
Return type:
`Path`
delete\_nonsvg\_files(_additional\_endings\=()_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#delete_nonsvg_files)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.delete_nonsvg_files "Link to this definition")
Deletes every file that does not have a suffix in `(".svg", ".tex", *additional_endings)`
Parameters:
**additional\_endings** (_Iterable__\[__str__\]_) – Additional endings to whitelist
Return type:
None
generate\_tex\_file(_expression_, _environment\=None_, _tex\_template\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#generate_tex_file)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.generate_tex_file "Link to this definition")
Takes a tex expression (and an optional tex environment), and returns a fully formed tex file ready for compilation.
Parameters:
* **expression** (_str_) – String containing the TeX expression to be rendered, e.g. `\\sqrt{2}` or `foo`
* **environment** (_str_ _|_ _None_) – The string containing the environment in which the expression should be typeset, e.g. `align*`
* **tex\_template** ([_TexTemplate_](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "manim.utils.tex.TexTemplate")
_|_ _None_) – Template class used to typesetting. If not set, use default template set via config\[“tex\_template”\]
Returns:
Path to generated TeX file
Return type:
`Path`
insight\_inputenc\_error(_matching_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#insight_inputenc_error)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.insight_inputenc_error "Link to this definition")
Parameters:
**matching** (_Match__\[__str__\]_)
Return type:
_Generator_\[str\]
insight\_package\_not\_found\_error(_matching_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#insight_package_not_found_error)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.insight_package_not_found_error "Link to this definition")
Parameters:
**matching** (_Match__\[__str__\]_)
Return type:
_Generator_\[str\]
make\_tex\_compilation\_command(_tex\_compiler_, _output\_format_, _tex\_file_, _tex\_dir_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#make_tex_compilation_command)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.make_tex_compilation_command "Link to this definition")
Prepares the TeX compilation command, i.e. the TeX compiler name and all necessary CLI flags.
Parameters:
* **tex\_compiler** (_str_) – String containing the compiler to be used, e.g. `pdflatex` or `lualatex`
* **output\_format** (_str_) – String containing the output format generated by the compiler, e.g. `.dvi` or `.pdf`
* **tex\_file** (_Path_) – File name of TeX file to be typeset.
* **tex\_dir** (_Path_) – Path to the directory where compiler output will be stored.
Returns:
Compilation command according to given parameters
Return type:
`list[str]`
print\_all\_tex\_errors(_log\_file_, _tex\_compiler_, _tex\_file_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#print_all_tex_errors)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.print_all_tex_errors "Link to this definition")
Parameters:
* **log\_file** (_Path_)
* **tex\_compiler** (_str_)
* **tex\_file** (_Path_)
Return type:
None
print\_tex\_error(_tex\_compilation\_log_, _error\_start\_index_, _tex\_source_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#print_tex_error)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.print_tex_error "Link to this definition")
Parameters:
* **tex\_compilation\_log** (_Sequence__\[__str__\]_)
* **error\_start\_index** (_int_)
* **tex\_source** (_Sequence__\[__str__\]_)
Return type:
None
tex\_hash(_expression_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#tex_hash)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.tex_hash "Link to this definition")
Parameters:
**expression** (_Any_)
Return type:
str
tex\_to\_svg\_file(_expression_, _environment\=None_, _tex\_template\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_file_writing.html#tex_to_svg_file)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#manim.utils.tex_file_writing.tex_to_svg_file "Link to this definition")
Takes a tex expression and returns the svg version of the compiled tex
Parameters:
* **expression** (_str_) – String containing the TeX expression to be rendered, e.g. `\\sqrt{2}` or `foo`
* **environment** (_str_ _|_ _None_) – The string containing the environment in which the expression should be typeset, e.g. `align*`
* **tex\_template** ([_TexTemplate_](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "manim.utils.tex.TexTemplate")
_|_ _None_) – Template class used to typesetting. If not set, use default template set via config\[“tex\_template”\]
Returns:
Path to generated SVG file.
Return type:
`Path`
---
# Improving performance - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/performance.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/performance.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/performance.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/performance.rst "Edit this page")
Improving performance[¶](https://docs.manim.community/en/stable/contributing/performance.html#improving-performance "Link to this heading")
============================================================================================================================================
One of Manim’s main flaws as an animation library is its slow performance. As of time of writing (January 2022), the library is still very unoptimized. As such, we highly encourage contributors to help out in optimizing the code.
Profiling[¶](https://docs.manim.community/en/stable/contributing/performance.html#profiling "Link to this heading")
--------------------------------------------------------------------------------------------------------------------
Before the library can be optimized, we first need to identify the bottlenecks in performance via profiling. There are numerous Python profilers available for this purpose; some examples include cProfile and Scalene.
### Running an animation as a script[¶](https://docs.manim.community/en/stable/contributing/performance.html#running-an-animation-as-a-script "Link to this heading")
Most instructions for profilers assume you can run the python file directly as a script from the command line. While Manim animations are usually run from the command-line, we can run them as scripts by adding something like the following to the bottom of the file:
with tempconfig({"quality": "medium\_quality", "disable\_caching": True}):
scene \= SceneName()
scene.render()
Where `SceneName` is the name of the scene you want to run. You can then run the file directly, and can thus follow the instructions for most profilers.
### An example: profiling with cProfile and SnakeViz[¶](https://docs.manim.community/en/stable/contributing/performance.html#an-example-profiling-with-cprofile-and-snakeviz "Link to this heading")
Install SnakeViz:
pip install snakeviz
cProfile is included with in Python’s standard library and does not need to be installed.
Suppose we want to profile `SquareToCircle`. Then we add and save the following code to `square_to_circle.py`:
from manim import \*
class SquareToCircle(Scene):
def construct(self):
s \= Square()
c \= Circle()
self.add(s)
self.play(Transform(s, c))
with tempconfig({"quality": "medium\_quality", "disable\_caching": True}):
scene \= SquareToCircle()
scene.render()
Now run the following in the terminal:
python \-m cProfile \-o square\_to\_circle.txt square\_to\_circle.py
This will create a file called `square_to_circle.txt`.
Now, we can run SnakeViz on the profile file:
snakeviz square\_to\_circle.txt
A browser window or tab will open with a visualization of the profile, which should look something like this:

---
# v0.14.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.14.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.14.0-changelog.rst "Edit this page")
v0.14.0[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#v0-14-0 "Link to this heading")
==================================================================================================================
Date:
January 07, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 29 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Benjamin Hackl
* BorisTheBrave +
* Darylgolden
* GameDungeon
* Gergely Bencsik +
* Jan-Hendrik Müller
* Jihoon +
* Kian Kasad +
* Kiran-Raj-Dev +
* Laith Bahodi
* Leo Xu +
* Marcin Serwin
* Matt Gleich +
* Naveen M K
* Steven nguyen +
* Vectozavr +
* Viicos
* citrusmunch
* netwizard22 +
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* BorisTheBrave
* Christopher Besch
* Darylgolden
* GameDungeon
* Gergely Bencsik
* Hugues Devimeux
* Jan-Hendrik Müller
* Kiran-Raj-Dev
* Laith Bahodi
* Leo Xu
* Lucas Ricci
* Marcin Serwin
* Naveen M K
* Raghav Goel
* Ryan McCauley
* Viicos
* icedcoffeeee
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 29 pull requests were merged for this release.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #2390](https://github.com/ManimCommunity/manim/pull/2390)
: Removed deprecations up to v0.13.0
* Removed `get_graph`, `get_implicit_curve`, `get_derivative_graph`, `get_line_graph` and `get_parametric_curve` in favour of their `plot` variants
* Removed `FullScreenFadeRectangle` and `PictureInPictureFrame`
* Removed `path_arc` parameter from [`SpinInFromNothing`](https://docs.manim.community/en/stable/reference/manim.animation.growing.SpinInFromNothing.html#manim.animation.growing.SpinInFromNothing "manim.animation.growing.SpinInFromNothing")
* Removed `set_submobjects` method from `opengl_mobject.py`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#new-features "Link to this heading")
* [PR #2341](https://github.com/ManimCommunity/manim/pull/2341)
: Update [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
to use new `ManimPango` color setting
* [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
class now uses color setting introduced in `ManimPango 0.4.0` for color and gradient.
* [PR #2397](https://github.com/ManimCommunity/manim/pull/2397)
: Added `label_constructor` parameter for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
Allows changing the class that will be used to construct [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
and [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
labels by default. Makes it possible to easily use [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
for labels if needed.
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#enhancements "Link to this heading")
* [PR #2383](https://github.com/ManimCommunity/manim/pull/2383)
: Made [`Surface.set_fill_by_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value "manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value")
support gradients along different axes
* [PR #2388](https://github.com/ManimCommunity/manim/pull/2388)
: Added `about_point` keyword argument to [`ApplyMatrix`](https://docs.manim.community/en/stable/reference/manim.animation.transform.ApplyMatrix.html#manim.animation.transform.ApplyMatrix "manim.animation.transform.ApplyMatrix")
* [PR #2395](https://github.com/ManimCommunity/manim/pull/2395)
: Add documentation for paths functions
* [PR #2372](https://github.com/ManimCommunity/manim/pull/2372)
: Improved [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
[`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
used to create stretched and uneven dashes on most plotted curves. Now the dash lengths are equalized. An option is reserved to use the old method. New keyword argument: `dash_offset`. This parameter shifts the starting point.
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2409](https://github.com/ManimCommunity/manim/pull/2409)
: Fixed performance degradation by trimming empty curves from paths when calling [`VMobject.align_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.align_points "manim.mobject.types.vectorized_mobject.VMobject.align_points")
* [PR #2392](https://github.com/ManimCommunity/manim/pull/2392)
: Fixed `ZeroDivisionError` in `three_dimensions`
* [PR #2362](https://github.com/ManimCommunity/manim/pull/2362)
: Fixed phi updater in [`ThreeDScene.begin_3dillusion_camera_rotation()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.begin_3dillusion_camera_rotation "manim.scene.three_d_scene.ThreeDScene.begin_3dillusion_camera_rotation")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2415](https://github.com/ManimCommunity/manim/pull/2415)
: Removed instructions on using and installing Docker in README
* [PR #2414](https://github.com/ManimCommunity/manim/pull/2414)
: Made improvements to the [Configuration](https://docs.manim.community/en/stable/guides/configuration.html)
tutorial
* [PR #2423](https://github.com/ManimCommunity/manim/pull/2423)
: Changed recommendation to `mactex-no-gui` from `mactex` for macOS install
* [PR #2407](https://github.com/ManimCommunity/manim/pull/2407)
: Clarified docstrings of [`Mobject.animate()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
, [`Mobject.set()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set "manim.mobject.mobject.Mobject.set")
and [`Variable`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable "manim.mobject.text.numbers.Variable")
* [PR #2352](https://github.com/ManimCommunity/manim/pull/2352)
: Added Crowdin badge
* [PR #2371](https://github.com/ManimCommunity/manim/pull/2371)
: Added `dvips` to list of required LaTeX packages on Linux
* [PR #2403](https://github.com/ManimCommunity/manim/pull/2403)
: Improved docstring of [`ApplyMethod`](https://docs.manim.community/en/stable/reference/manim.animation.transform.ApplyMethod.html#manim.animation.transform.ApplyMethod "manim.animation.transform.ApplyMethod")
and removed propagated `__init__` docstring
* [PR #2391](https://github.com/ManimCommunity/manim/pull/2391)
: Fixed typo in parameter name in documentation of [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
* [PR #2368](https://github.com/ManimCommunity/manim/pull/2368)
: Added note in Internationalization
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2408](https://github.com/ManimCommunity/manim/pull/2408)
: Removed various return annotations that were stifling type inference
* [PR #2424](https://github.com/ManimCommunity/manim/pull/2424)
: Removed `strings.py`
* [PR #1972](https://github.com/ManimCommunity/manim/pull/1972)
: Added support for MyPy
* [PR #2410](https://github.com/ManimCommunity/manim/pull/2410)
: Fixed Flake8
* [PR #2401](https://github.com/ManimCommunity/manim/pull/2401)
: Fixed type annotations in `mobject.three_dimensions`
* [PR #2405](https://github.com/ManimCommunity/manim/pull/2405)
: Removed some unused OpenGL files
* [PR #2399](https://github.com/ManimCommunity/manim/pull/2399)
: Fixed type annotations in [`table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#module-manim.mobject.table "manim.mobject.table")
* [PR #2385](https://github.com/ManimCommunity/manim/pull/2385)
: Made comments in quickstart tutorial more precise
* [PR #2377](https://github.com/ManimCommunity/manim/pull/2377)
: Fixed type hint for an argument of [`MoveAlongPath`](https://docs.manim.community/en/stable/reference/manim.animation.movement.MoveAlongPath.html#manim.animation.movement.MoveAlongPath "manim.animation.movement.MoveAlongPath")
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.14.0-changelog.html#new-releases "Link to this heading")
* [PR #2411](https://github.com/ManimCommunity/manim/pull/2411)
: Prepare new release, `v0.14.0`
---
# v0.15.2 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.15.2-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.15.2-changelog.rst "Edit this page")
v0.15.2[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#v0-15-2 "Link to this heading")
==================================================================================================================
Date:
April 25, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 33 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Bailey Powers +
* Benjamin Hackl
* Dan Walsh +
* Darigov Research
* Darylgolden
* David Millard +
* Hamidreza Hashemi +
* Jan-Hendrik Müller
* Jason Villanueva
* Jonathan Alpert +
* Joy Bhalla
* Kian Cross +
* Luca +
* Mohsin Shaikh +
* Naveen M K
* Prismo +
* Ryan McCauley
* WillSoltas +
* ad\_chaos
* darkways +
* dawn\*squirryl +
* icedcoffeeee
* peaceheis
* sparshg
* trickypr +
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Dan Walsh
* Darylgolden
* GameDungeon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Jonathan Alpert
* Luca
* Naveen M K
* Prismo
* Ryan McCauley
* ad\_chaos
* darkways
* hickmott99
* icedcoffeeee
* peaceheis
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 39 pull requests were merged for this release.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#new-features "Link to this heading")
* [PR #1975](https://github.com/ManimCommunity/manim/pull/1975)
: Improved CLI help page styling
* Updates dependencies on Click and Cloup libraries for CLI help page styling.
* Removed the dependency on click-default-group.
* Added `no_args_is_help` parameter for `manim render` to allow easy access to help page.
* Added note to `manim` help page epilog on how to access other command help pages.
* [PR #2404](https://github.com/ManimCommunity/manim/pull/2404)
: Add [`SpiralIn`](https://docs.manim.community/en/stable/reference/manim.animation.creation.SpiralIn.html#manim.animation.creation.SpiralIn "manim.animation.creation.SpiralIn")
Animation
* Make [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
to use [`SpiralIn`](https://docs.manim.community/en/stable/reference/manim.animation.creation.SpiralIn.html#manim.animation.creation.SpiralIn "manim.animation.creation.SpiralIn")
.
* [PR #2534](https://github.com/ManimCommunity/manim/pull/2534)
: Implement `OpenGLImageMobject`
* [PR #2684](https://github.com/ManimCommunity/manim/pull/2684)
: Created a more accessible way to create Angles with line.py angle function - [`Angle.from_three_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle.from_three_points "manim.mobject.geometry.line.Angle.from_three_points")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#enhancements "Link to this heading")
* [PR #2062](https://github.com/ManimCommunity/manim/pull/2062)
: Reuse shader wrappers and shader data
* [PR #2642](https://github.com/ManimCommunity/manim/pull/2642)
: Migrated `file_ops.py` and `scene_file_writer.py` from os.path to Pathlib
In `file_ops.py` and `scene_file_writer.py`: Uses of str type file names have been mostly (see further information) converted to pathlib’s Path objects. Uses of `os.path` methods have been converted to equivalent pathlib methods.
* [PR #2655](https://github.com/ManimCommunity/manim/pull/2655)
: Fix [`assert_is_mobject_method()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.assert_is_mobject_method "manim.animation.updaters.mobject_update_utils.assert_is_mobject_method")
when using OpenGL
* [PR #2665](https://github.com/ManimCommunity/manim/pull/2665)
: Improved handling of attributes when using the `.animate` syntax
* [PR #2674](https://github.com/ManimCommunity/manim/pull/2674)
: Document and type `simple_functions.py`
* Add documentation for `simple_functions.py`.
* Small additions with some extra clarity for these functions.
* [PR #2693](https://github.com/ManimCommunity/manim/pull/2693)
: Allow using [`MovingCamera.auto_zoom()`](https://docs.manim.community/en/stable/reference/manim.camera.moving_camera.MovingCamera.html#manim.camera.moving_camera.MovingCamera.auto_zoom "manim.camera.moving_camera.MovingCamera.auto_zoom")
without animation
Allows auto zooming camera without having to play an animation by passing an `animation=False` argument
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#fixed-bugs "Link to this heading")
* [PR #2546](https://github.com/ManimCommunity/manim/pull/2546)
: Fixed a file logging bug and some maintenance
* [PR #2597](https://github.com/ManimCommunity/manim/pull/2597)
: Fix Bug in [`Uncreate`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Uncreate.html#manim.animation.creation.Uncreate "manim.animation.creation.Uncreate")
with `rate_func` via introducing new parameter `reversed` to [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
* Refractor the [`Uncreate`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Uncreate.html#manim.animation.creation.Uncreate "manim.animation.creation.Uncreate")
. The new implementation uses a flag member `reversed`. Set it to `True` and its superclass handles the reverse.
* Introduce a bool parameter `reversed` to [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
. It decides whether the animation needs to be played backwards. Default to be False.
* Add conditional branches in [`Animation.get_sub_alpha()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation.get_sub_alpha "manim.animation.animation.Animation.get_sub_alpha")
. If the parameter `reversed` is True, it would set `rate_func(t)` to `rate_func(1 - t)`.
* [PR #2613](https://github.com/ManimCommunity/manim/pull/2613)
: Fixed bug in [`Circle.point_at_angle()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle.point_at_angle "manim.mobject.geometry.arc.Circle.point_at_angle")
when the angle is not in the interval \\(\[0, 2\\pi\]\\)
* [PR #2634](https://github.com/ManimCommunity/manim/pull/2634)
: Fix background lines drawn twice in [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
* [PR #2648](https://github.com/ManimCommunity/manim/pull/2648)
: Handle user-defined centers for Wiggle animation
* [PR #2658](https://github.com/ManimCommunity/manim/pull/2658)
: Fix arguments of overridden `set_style` for [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
Using [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
animation on a [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
object with `.add_background_rectangle()` applied no longer generates a `TypeError`.
* [PR #2668](https://github.com/ManimCommunity/manim/pull/2668)
: (Re)set background color of `OpenGLRenderer` when initializing scene
* [PR #2676](https://github.com/ManimCommunity/manim/pull/2676)
: Fixed propagation of custom attributes in animations for the OpenGL renderer
* [PR #2688](https://github.com/ManimCommunity/manim/pull/2688)
: Fixed two minor issues of [`SpiralIn`](https://docs.manim.community/en/stable/reference/manim.animation.creation.SpiralIn.html#manim.animation.creation.SpiralIn "manim.animation.creation.SpiralIn")
and [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2609](https://github.com/ManimCommunity/manim/pull/2609)
: Copyedit troubleshooting.rst
* [PR #2610](https://github.com/ManimCommunity/manim/pull/2610)
: Add example PolygonOnAxes
* [PR #2617](https://github.com/ManimCommunity/manim/pull/2617)
: Re-added [`value_tracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.html#module-manim.mobject.value_tracker "manim.mobject.value_tracker")
documentation
* [PR #2619](https://github.com/ManimCommunity/manim/pull/2619)
: Improve Example for arrange\_in\_grid
* [PR #2620](https://github.com/ManimCommunity/manim/pull/2620)
: Fixed typo in [`Animation.is_introducer()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation.is_introducer "manim.animation.animation.Animation.is_introducer")
* [PR #2640](https://github.com/ManimCommunity/manim/pull/2640)
: Copyedited Documentation
Reviewed `tutorials/configurations.rst`. Edited simple mistakes such as Manim not being capitalized and commas.
* [PR #2649](https://github.com/ManimCommunity/manim/pull/2649)
: Document and type utils/iterables.py
* [PR #2651](https://github.com/ManimCommunity/manim/pull/2651)
: Update copyright year in documentation to 2020-2022
* [PR #2663](https://github.com/ManimCommunity/manim/pull/2663)
: Added documentation for scene updater functions
* [PR #2686](https://github.com/ManimCommunity/manim/pull/2686)
: Add instructions to install extra dependencies with poetry
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2561](https://github.com/ManimCommunity/manim/pull/2561)
: Run tests on Linux-aarch64
* [PR #2656](https://github.com/ManimCommunity/manim/pull/2656)
: Fixed incompatibility with black version
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2630](https://github.com/ManimCommunity/manim/pull/2630)
: Remove WebGL renderer
The WebGL renderer is broken and unmaintained. The support for it in Manim is removed.
* [PR #2652](https://github.com/ManimCommunity/manim/pull/2652)
: Update `cloup` version to 0.13.0 from 0.7.0
* [PR #2678](https://github.com/ManimCommunity/manim/pull/2678)
: Require `backports-cached-property` only for Python < 3.8
* [PR #2685](https://github.com/ManimCommunity/manim/pull/2685)
: Migrate from `os.path` to `pathlib` in testing scripts
This pull request changes a number of instances of `os.path` to Pathlib objects and functions. In addition, this PR modifies the SVGMobject constructor to accept both a Pathlib object or a string variable pathname its constructor.
* [PR #2691](https://github.com/ManimCommunity/manim/pull/2691)
: Removed `CameraFrame`
* [PR #2696](https://github.com/ManimCommunity/manim/pull/2696)
: Made changelog generation run in parallel plus further improvements to `scripts/dev_changelog.py`
* [PR #2697](https://github.com/ManimCommunity/manim/pull/2697)
: Sort PRs by number in changelog sections before writing
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.15.2-changelog.html#new-releases "Link to this heading")
* [PR #2694](https://github.com/ManimCommunity/manim/pull/2694)
: Prepared bugfix release v0.15.2
---
# Choosing Type Hints - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/types.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/types.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/types.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/types.rst "Edit this page")
Choosing Type Hints[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#choosing-type-hints "Link to this heading")
=======================================================================================================================================
In order to provide the best user experience, it’s important that type hints are chosen correctly. With the large variety of types provided by Manim, choosing which one to use can be difficult. This guide aims to aid you in the process of choosing the right type for the scenario.
The first step is figuring out which category your type hint fits into.
Coordinates[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#coordinates "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------
Coordinates encompass two main categories: points, and vectors.
### Points[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#points "Link to this heading")
The purpose of points is pretty straightforward: they represent a point in space. For example:
def print\_point2D(coord: Point2DLike) \-> None:
x, y \= coord
print(f"Point at {x\=},{y\=}")
def print\_point3D(coord: Point3DLike) \-> None:
x, y, z \= coord
print(f"Point at {x\=},{y\=},{z\=}")
def print\_point\_array(coords: Point2DLike\_Array | Point3DLike\_Array) \-> None:
for coord in coords:
if len(coord) \== 2:
\# it's a Point2DLike
print\_point2D(coord)
else:
\# it's a Point3DLike
print\_point3D(coord)
def shift\_point\_up(coord: Point3DLike) \-> Point3D:
result \= np.asarray(coord)
result += UP
print(f"New point: {result}")
return result
Notice that the last function, `shift_point_up()`, accepts a [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
as a parameter and returns a [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
. A [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
always represents a NumPy array consisting of 3 floats, whereas a [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
can represent anything resembling a 3D point: either a NumPy array or a tuple/list of 3 floats, hence the `Like` word. The same happens with [`Point2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
, [`Point2D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "manim.typing.Point2D_Array")
and [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
, and their `Like` counterparts [`Point2DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike "manim.typing.Point2DLike")
, [`Point2DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike_Array "manim.typing.Point2DLike_Array")
and [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
.
The rule for typing functions is: **make parameter types as broad as possible, and return types as specific as possible.** Therefore, for functions which are intended to be called by users, **we should always, if possible, accept** `Like` **types as parameters and return NumPy, non-** `Like` **types.** The main reason is to be more flexible with users who might want to pass tuples or lists as arguments rather than NumPy arrays, because it’s more convenient. The last function, `shift_point_up()`, is an example of it.
Internal functions which are _not_ meant to be called by users may accept non-`Like` parameters if necessary.
### Vectors[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#vectors "Link to this heading")
Vectors share many similarities to points. However, they have a different connotation. Vectors should be used to represent direction. For example, consider this slightly contrived function:
M \= TypeVar("M", bound\=Mobject) \# allow any mobject
def shift\_mobject(mob: M, direction: Vector3D, scale\_factor: float \= 1) \-> M:
return mob.shift(direction \* scale\_factor)
Here we see an important example of the difference. `direction` should not be typed as a [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
, because it represents a direction along which to shift a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, not a position in space.
As a general rule, if a parameter is called `direction` or `axis`, it should be type hinted as some form of [`VectorND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND "manim.typing.VectorND")
or [`VectorNDLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorNDLike "manim.typing.VectorNDLike")
.
Colors[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#colors "Link to this heading")
-------------------------------------------------------------------------------------------------------------
The interface Manim provides for working with colors is [`ManimColor`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
. The main color types Manim supports are RGB, RGBA, and HSV. You will want to add type hints to a function depending on which type it uses. If any color will work, you will need something like:
if TYPE\_CHECKING:
from manim.utils.color import ParsableManimColor
\# type hint stuff with ParsableManimColor
Béziers[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#beziers "Link to this heading")
---------------------------------------------------------------------------------------------------------------
Manim internally represents a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
by a collection of points. In the case of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
, the most commonly used subclass of [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, these points represent Bézier curves, which are a way of representing a curve using a sequence of points.
Note
To learn more about Béziers, take a look at [https://pomax.github.io/bezierinfo/](https://pomax.github.io/bezierinfo/)
Manim supports two different renderers, which each have different representations of Béziers: Cairo uses cubic Bézier curves, while OpenGL uses quadratic Bézier curves.
Type hints like [`BezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints "manim.typing.BezierPoints")
represent a single bezier curve, and [`BezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "manim.typing.BezierPath")
represents multiple Bézier curves. A [`Spline`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Spline "manim.typing.Spline")
is when the Bézier curves in a [`BezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "manim.typing.BezierPath")
forms a single connected curve. Manim also provides more specific type aliases when working with quadratic or cubic curves, and they are prefixed with their respective type (e.g. [`CubicBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints "manim.typing.CubicBezierPoints")
, is a [`BezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints "manim.typing.BezierPoints")
consisting of exactly 4 points representing a cubic Bézier curve).
Functions[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#functions "Link to this heading")
-------------------------------------------------------------------------------------------------------------------
Throughout the codebase, many different types of functions are used. The most obvious example is a rate function, which takes in a float and outputs a float (`Callable[[float], float]`). Another example is for overriding animations. One will often need to map a [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to an overridden [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
, and for that we have the [`FunctionOverride`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FunctionOverride "manim.typing.FunctionOverride")
type hint.
[`PathFuncType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "manim.typing.PathFuncType")
and [`MappingFunction`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MappingFunction "manim.typing.MappingFunction")
are more niche, but are related to moving objects along a path, or applying functions. If you need to use it, you’ll know.
Images[¶](https://docs.manim.community/en/stable/contributing/docs/types.html#images "Link to this heading")
-------------------------------------------------------------------------------------------------------------
There are several representations of images in Manim. The most common is the representation as a NumPy array of floats representing the pixels of an image. This is especially common when it comes to the OpenGL renderer.
This is the use case of the [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
type hint. Sometimes, Manim may use `PIL.Image.Image`, which is not the same as [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
. In this case, use the `PIL.Image.Image` typehint. Of course, if a more specific type of image is needed, it can be annotated as such.
---
# Typing Conventions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/typings.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/typings.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/typings.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/typings.rst "Edit this page")
Typing Conventions[¶](https://docs.manim.community/en/stable/contributing/docs/typings.html#typing-conventions "Link to this heading")
=======================================================================================================================================
Warning
This section is still a work in progress.
Adding type hints to functions and parameters[¶](https://docs.manim.community/en/stable/contributing/docs/typings.html#adding-type-hints-to-functions-and-parameters "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Manim is currently in the process of adding type hints into the library. In this section, you will find information about the standards used and some general guidelines.
If you’ve never used type hints before, this is a good place to get started: [https://realpython.com/python-type-checking/#hello-types](https://realpython.com/python-type-checking/#hello-types)
.
### Typing standards[¶](https://docs.manim.community/en/stable/contributing/docs/typings.html#typing-standards "Link to this heading")
Manim uses [mypy](https://mypy-lang.org/)
to type check its codebase. You will find a list of configuration values in the `mypy.ini` configuration file. To be able to use the newest typing features not available in the lowest supported Python version, make use of [typing\_extensions](https://pypi.org/project/typing-extensions/)
.
To be able to use the new Union syntax (`|`) and builtins subscripting, use the `from __future__ import annotations` import.
### Typing guidelines[¶](https://docs.manim.community/en/stable/contributing/docs/typings.html#typing-guidelines "Link to this heading")
* Manim has a dedicated [`typing`](https://docs.manim.community/en/stable/reference/manim.typing.html#module-manim.typing "manim.typing")
module where type aliases are provided. Most of them may seem redundant, in particular the ones related to `numpy`. This is in anticipation of the support for shape type hinting ([related issue](https://github.com/numpy/numpy/issues/16544)
). Besides the pending shape support, using the correct type aliases will help users understand which shape should be used.
* For typings of generic collections, check out [this](https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes)
link.
* Always use a type hint of `None` for functions that does not return a value (this also applies to `__init__`), e.g.:
def height(self, value) \-> None:
self.scale\_to\_fit\_height(value)
* For variables representing paths, use the `StrPath` or `StrOrBytesPath` type alias defined in the [`typing`](https://docs.manim.community/en/stable/reference/manim.typing.html#module-manim.typing "manim.typing")
module.
* `*args` and `**kwargs` shouldn’t be left untyped (in most cases you can use `Any`).
* Following [PEP 484](https://peps.python.org/pep-0484/#the-numeric-tower)
, use `float` instead of `int | float`.
* Use `x | y` instead of `Union[x, y]`
* Mobjects have the typehint `Mobject`, e.g.:
def match\_color(self, mobject: "Mobject"):
"""Match the color with the color of another :class:\`~.Mobject\`."""
return self.set\_color(mobject.get\_color())
* Always parametrize generics (`list[int]` instead of `list`, `type[Any]` instead of `type`, etc.). This also applies to callables.
rate\_func: Callable\[\[float\], float\] \= lambda t: smooth(1 \- t)
* Use `TypeVar` when you want to “link” type hints as being the same type. Consider `Mobject.copy`, which returns a new instance of the same class. It would be type-hinted as:
T \= TypeVar("T")
def copy(self: T) \-> T: ...
* Use `typing.Iterable` whenever the function works with _any_ iterable, not a specific type.
* Prefer `numpy.typing.NDArray` over `numpy.ndarray`
import numpy as np
if TYPE\_CHECKING:
import numpy.typing as npt
def foo() \-> npt.NDArray\[float\]:
return np.array(\[1, 0, 1\])
* If a method returns `self`, use `typing_extensions.Self`.
if TYPE\_CHECKING:
from typing\_extensions import Self
class CustomMobject:
def set\_color(self, color: ManimColor) \-> Self:
...
return self
* If the function returns a container of a specific length each time, consider using `tuple` instead of `list`.
def foo() \-> tuple\[float, float, float\]:
return (0, 0, 0)
* If a function works with a parameter as long as said parameter has a `__getitem__`, `__iter___` and `__len__` method, the typehint of the parameter should be `collections.abc.Mapping`. If it also supports `__setitem__` and/or `__delitem__`, it should be marked as `collections.abc.MutableMapping`.
* Typehinting something as `object` means that only attributes available on every Python object should be accessed, like `__str__` and so on. On the other hand, literally any attribute can be accessed on a variable with the `Any` typehint - it’s more freeing than the `object` typehint, and makes mypy stop typechecking the variable. Note that whenever possible, try to keep typehints as specific as possible.
* If objects are imported purely for type hint purposes, keep it under an `if typing.TYPE_CHECKING` guard, to prevent them from being imported at runtime (helps library performance). Do not forget to use the `from __future__ import annotations` import to avoid having runtime `NameError` exceptions.
from typing import TYPE\_CHECKING
if TYPE\_CHECKING:
from manim.typing import Vector3D
\# type stuff with Vector3D
Missing Sections for typehints are:[¶](https://docs.manim.community/en/stable/contributing/docs/typings.html#missing-sections-for-typehints-are "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* Mypy and numpy import errors: [https://realpython.com/python-type-checking/#running-mypy](https://realpython.com/python-type-checking/#running-mypy)
* Explain `mypy.ini` (see above link)
---
# Adding References - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/references.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/references.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/references.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/references.rst "Edit this page")
Adding References[¶](https://docs.manim.community/en/stable/contributing/docs/references.html#adding-references "Link to this heading")
========================================================================================================================================
Reference to types in documentation[¶](https://docs.manim.community/en/stable/contributing/docs/references.html#reference-to-types-in-documentation "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Always specify types with the correct **role** (see [https://www.sphinx-doc.org/en/1.7/domains.html#python-roles](https://www.sphinx-doc.org/en/1.7/domains.html#python-roles)
) for the sake of proper rendering. E.g.: Use `` :class:`int` `` to refer to an int type, and in general ``:class:```` to refer to a certain class (see `Path specification` below). See after for more specific instructions.
### Path specifications[¶](https://docs.manim.community/en/stable/contributing/docs/references.html#path-specifications "Link to this heading")
1. If it’s on stdlib: Use `` directly. If it’s a class, just the name is enough. If it’s a method (`:meth:`) or attribute (`:attr:`), dotted names may be used (e.g. ``:meth:`str.to_lower```).
Example: ``:class:`int```, ``:class:`str```, ``:class:`float```, ``:class:`bool```
2. If it’s on the same file as the docstring or, for methods and attributes, under the same class, then the name may also be specified directly.
Example: ``:class:`MyClass``` referring to a class in the same file; ``:meth:`push``` referring to a method in the same class; ``:meth:`MyClass.push``` referring to a method in a different class in the same file; ``:attr:`color``` referring to an attribute in the same class; ``:attr:`MyClass.color``` referring to an attribute in a different class in the same file.
3. If it’s on a different file, then you may either use the full dotted name (e.g. `~manim.animations.Animation`) or simply use the shortened way (`~.Animation`). Note that, if there is ambiguity, then the full dotted name must be used where the actual class can’t be deduced. Also, note the `~` before the path - this is so that it displays just `Animation` instead of the full location in the rendering. It can be removed for disambiguation purposes only.
Example: ``:class:`~.Animation```, ``:meth:`~.VMobject.set_color```, ``:attr:`~.VMobject.color```
4. If it’s a class from a different module, specify the full dotted syntax.
Example: ``:class:`numpy.ndarray``` for a numpy ndarray.
### Reference type specifications[¶](https://docs.manim.community/en/stable/contributing/docs/references.html#reference-type-specifications "Link to this heading")
**The following instructions refer to types of attributes, parameters, and return values.** When specifying a type mid-text, it does not necessarily have to be typeset. However, if it’s a class name, a method, or an enum’s attribute/variant, then it is recommended to be typeset at least on the first occurrence of the name so that the users can quickly jump to the related documentation.
1. Class names should be wrapped in ``:class:`path_goes_here```. See examples in the subsection above.
2. Method names should be wrapped in ``:meth:`path_goes_here```. See examples in the subsection above.
3. Attribute names should be wrapped in ``:attr:`path_goes_here```. See examples in the subsection above.
4. If `None` can also be specified, use `Optional[type]`, where `type` must follow the guidelines in the current section.
Example: ``Optional[:class:`str`]`` means you can either specify a `str` or `None`.
5. If more than one type is possible, use `Union[type_1, type_2, (...), type_n]`, where all the `type_n` must follow the guidelines in the current section. Note that, if one of these types is `None`, then the Union should be wrapped with `Optional` instead.
Example: ``Union[:class:`str`, :class:`int`]`` for either `str` or `int`. ``Optional[Union[:class:`int`, :class:`bool`]]`` for either `int`, `bool` or `None`.
6. **Dictionaries:** Use `Dict[key_type, value_type]`, where `key_type` and `value_type` must follow the guidelines in the current section.
Example: ``Dict[:class:`str`, :class:`~.Mobject`]`` is a dictionary that maps strings to Mobjects. ``Dict[:class:`str`, Union[:class:`int`, :class:`MyClass`]]`` is a dictionary that maps a string to either an int or an instance of `MyClass`.
7. **If the parameter is a list:** Note that it is very rare to require the parameter to be exactly a `list` type. One could usually specify a `tuple` instead, for example. So, in order to cover all cases, consider:
1. If the parameter only needs to be an `Iterable`, i.e., if the function only requires being able to iterate over this parameter’s value (e.g. can be a `list`, `tuple`, `str`, but also `zip()`, `iter()` and so on), then specify `Iterable[type_here]`, where `type_here` is the type of the iterable’s yielded elements and should follow the format in the present section (`Type specifications`).
Example: ``Iterable[:class:`str`]`` for any iterable of strings; ``Iterable[:class:`~.Mobject`]`` for an iterable of Mobjects; etc.
2. If you require being able to index the parameter (i.e. `x[n]`) or retrieve its length (i.e. `len(x)`), or even just pass it to a function that requires any of those, then specify `Sequence`, which allows any list-like object to be specified (e.g. `list`, `tuple`…)
Example: ``Sequence[:class:`str`]`` for a sequence of strings; ``Sequence[Union[:class:`str`, :class:`int`]]`` for a sequence of integers or strings.
3. If you EXPLICITLY REQUIRE it to be a `list` for some reason, then use `List[type]`, where `type` is the type that any element in the list will have. It must follow the guidelines in the current section.
8. **If the return type is a list or tuple:** Specify `List[type]` for a list, `Tuple[type_a, type_b, (...), type_n]` for a tuple (if the elements are all different) or `Tuple[type, ...]` (if all elements have the same type). Each `type_n` on those representations corresponds to elements in the returned list/tuple and must follow the guidelines in the current section.
Example: ``List[Optional[:class:`str`]]`` for a list that returns elements that are either a `str` or `None`; ``Tuple[:class:`str`, :class:`int`]`` for a tuple of type `(str, int)`; ``Tuple[:class:`int`, ...]`` for a tuple of variable length with only integers.
---
# v0.16.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.16.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.16.0-changelog.rst "Edit this page")
v0.16.0[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#v0-16-0 "Link to this heading")
==================================================================================================================
Date:
July 13, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 44 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Baroudi Aymen +
* Benjamin Hackl
* Charalampos Georgiou +
* Cindy Park +
* Ejar +
* Francesco Frassinelli +
* Francisco Manríquez Novoa +
* Jacob Evan Shreve +
* Jaime Santos +
* Jonathan Alpert
* Joshua Mankelow +
* Kevin Lubick +
* Laith Bahodi
* Lingren Kong +
* Logen +
* Naveen M K
* Noam Zaks
* Pedro Lamkowski +
* Raghav Goel
* Simeon Widdis
* Sparsh Goenka
* TornaxO7 +
* Tristan Schulz +
* WillSoltas
* ad\_chaos
* conor-oneill-2 +
* fcrozatier +
* mooncaker816 +
* niklebedenko +
* nyabkun +
* quark67
The patches included in this release have been reviewed by the following contributors.
* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Francesco Frassinelli
* Francisco Manríquez Novoa
* Gianluca Gippetto
* Jan-Hendrik Müller
* Jonathan Alpert
* Kevin Lubick
* Laith Bahodi
* Naveen M K
* Pedro Lamkowski
* Philipp Imhof
* Raghav Goel
* Ryan McCauley
* Sparsh Goenka
* TornaxO7
* Tristan Schulz
* ad\_chaos
* hickmott99
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 56 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#highlights "Link to this heading")
* [PR #2550](https://github.com/ManimCommunity/manim/pull/2550)
: New thematic guide: a deep dive into the internals of the library
This new [thematic guide](https://docs.manim.community/en/stable/guides/deep_dive.html)
aims to be a comprehensive walkthrough describing all the things that Manim does when you run it to produce a video.
* [PR #2732](https://github.com/ManimCommunity/manim/pull/2732)
: Improved overall structure of deployed documentation; added a dedicated [FAQ section](https://docs.manim.community/en/stable/faq/index.html)
* [PR #2749](https://github.com/ManimCommunity/manim/pull/2749)
: Added [`ChangeSpeed`](https://docs.manim.community/en/stable/reference/manim.animation.speedmodifier.ChangeSpeed.html#manim.animation.speedmodifier.ChangeSpeed "manim.animation.speedmodifier.ChangeSpeed")
, an animation wrapper that allows to smoothly change the speed at which an animation is played
The speed of any animation can be changed by wrapping the animation with [`ChangeSpeed`](https://docs.manim.community/en/stable/reference/manim.animation.speedmodifier.ChangeSpeed.html#manim.animation.speedmodifier.ChangeSpeed "manim.animation.speedmodifier.ChangeSpeed")
and passing a dictionary as `speedinfo` whose keys are the relative animation run time stamps and whose values are the absolute speed factors; e.g., `{0.5: 2, 0.75: 0.25}` smoothly speeds up the animation by a factor of 2 once it has been completed to 50%, and then it is smoothly slowed down to 1/4 of the default run speed after 75% of the animation are completed. The `run_time` of the animation will be adjusted to match the changed play speed.
It is also possible to add time-based updaters that respect the change in speed, use the auxiliary [`ChangeSpeed.add_updater()`](https://docs.manim.community/en/stable/reference/manim.animation.speedmodifier.ChangeSpeed.html#manim.animation.speedmodifier.ChangeSpeed.add_updater "manim.animation.speedmodifier.ChangeSpeed.add_updater")
method to do so.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#new-features "Link to this heading")
* [PR #2667](https://github.com/ManimCommunity/manim/pull/2667)
: Made FFmpeg executable path configurable
* [PR #2739](https://github.com/ManimCommunity/manim/pull/2739)
: Added vectorized plotting functionality via keyword argument `use_vectorized` to improve performance
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#enhancements "Link to this heading")
* [PR #2186](https://github.com/ManimCommunity/manim/pull/2186)
: Enabled filling color by value for `OpenGLSurface`, replaced `colors` keyword argument of [`Surface.set_fill_by_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value "manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value")
with `colorscale`
* [PR #2288](https://github.com/ManimCommunity/manim/pull/2288)
: Added warning when attempting to add same mobject as child twice
* [PR #2707](https://github.com/ManimCommunity/manim/pull/2707)
: Fixed missing `get_nth_curve_length_pieces` method of `OpenGLVMobject`
* Removed duplicate definition of `get_curve_functions_with_lengths` in `OpenGLVMobject`
* Added definition of `get_nth_curve_length_pieces` to `OpenGLVMobject`
* [PR #2709](https://github.com/ManimCommunity/manim/pull/2709)
: Improved the look of the brackets of [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
* [PR #2714](https://github.com/ManimCommunity/manim/pull/2714)
: Fixed `OpenGLVMobject.pointwise_become_partial()` to improve stroke rendering
* [PR #2727](https://github.com/ManimCommunity/manim/pull/2727)
: Slight performance improvement for [`ArrowVectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField "manim.mobject.vector_field.ArrowVectorField")
and Bézier curve computation
* [PR #2728](https://github.com/ManimCommunity/manim/pull/2728)
: Added [`VectorField.fit_to_coordinate_system()`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.VectorField.html#manim.mobject.vector_field.VectorField.fit_to_coordinate_system "manim.mobject.vector_field.VectorField.fit_to_coordinate_system")
to fit a vector field to a given coordinate system
* [PR #2730](https://github.com/ManimCommunity/manim/pull/2730)
: Added note to let users find documentation of default CLI subcommand easier
* [PR #2746](https://github.com/ManimCommunity/manim/pull/2746)
: Installed ghostscript in the docker image
* [PR #2841](https://github.com/ManimCommunity/manim/pull/2841)
: Added `split_quadratic_bezier()` and `subdivide_quadratic_bezier()`
* [PR #2842](https://github.com/ManimCommunity/manim/pull/2842)
: CLI: Moved functionality from `manim new` to `manim init` and added deprecation warning for `manim new`
* [PR #2866](https://github.com/ManimCommunity/manim/pull/2866)
: Reorganize test files to match library module structure
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2567](https://github.com/ManimCommunity/manim/pull/2567)
: Use tempconfig for every scene render
* [PR #2638](https://github.com/ManimCommunity/manim/pull/2638)
: Fixed `BarChart.change_bar_values()` not updating when height is 0
* [PR #2661](https://github.com/ManimCommunity/manim/pull/2661)
: Fixed tip resize functionality for [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
to match documentation
* [PR #2703](https://github.com/ManimCommunity/manim/pull/2703)
: Default to utf-8 when reading files in [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
* [PR #2721](https://github.com/ManimCommunity/manim/pull/2721)
: Fixed bad text slicing for lines in [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
* [PR #2725](https://github.com/ManimCommunity/manim/pull/2725)
: Fixed wrong indentation in [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
* [PR #2734](https://github.com/ManimCommunity/manim/pull/2734)
: Fixed OpenGL segfaults when running [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
or [`Scene.wait()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.wait "manim.scene.scene.Scene.wait")
in interactive mode
* [PR #2753](https://github.com/ManimCommunity/manim/pull/2753)
: Fixed multiplatform builds for docker images in pipeline
* [PR #2757](https://github.com/ManimCommunity/manim/pull/2757)
: Added missing `__init__.py` file in [`docbuild`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.html#module-manim.utils.docbuild "manim.utils.docbuild")
module
* [PR #2770](https://github.com/ManimCommunity/manim/pull/2770)
: Fixed bug in [`VMobject.proportion_from_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.proportion_from_point "manim.mobject.types.vectorized_mobject.VMobject.proportion_from_point")
that caused proportions greater than 1 to be returned
* [PR #2826](https://github.com/ManimCommunity/manim/pull/2826)
: Fixed leaked mobjects coming from [`TransformMatchingAbstractBase`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingAbstractBase.html#manim.animation.transform_matching_parts.TransformMatchingAbstractBase "manim.animation.transform_matching_parts.TransformMatchingAbstractBase")
* [PR #2870](https://github.com/ManimCommunity/manim/pull/2870)
: Fixed issue with `manim init scene SCENE_NAME filename.py` and removed necessity of `main.py` to be present in working directory
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2704](https://github.com/ManimCommunity/manim/pull/2704)
: Updated URL to Pango Markup formatting page
* [PR #2716](https://github.com/ManimCommunity/manim/pull/2716)
: Improved the order of the reference manuals
* [PR #2720](https://github.com/ManimCommunity/manim/pull/2720)
: Fixed typo in docstring of [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
* [PR #2722](https://github.com/ManimCommunity/manim/pull/2722)
: Fixed typos in docstrings of classes in [`mobject.table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#module-manim.mobject.table "manim.mobject.table")
* [PR #2726](https://github.com/ManimCommunity/manim/pull/2726)
: Edited note on [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
length and added another example
* [PR #2740](https://github.com/ManimCommunity/manim/pull/2740)
: Fixed documentation of [`Cylinder.get_direction()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.get_direction "manim.mobject.three_d.three_dimensions.Cylinder.get_direction")
* [PR #2755](https://github.com/ManimCommunity/manim/pull/2755)
: Fixed docstring of [`VMobject.get_end_anchors()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.get_end_anchors "manim.mobject.types.vectorized_mobject.VMobject.get_end_anchors")
* [PR #2760](https://github.com/ManimCommunity/manim/pull/2760)
: Removed `cmake` from the MacOS installation section
* [PR #2767](https://github.com/ManimCommunity/manim/pull/2767)
: Added more questions and answers to FAQ section, new [OpenGL FAQ](https://docs.manim.community/en/stable/faq/opengl.html)
* [PR #2771](https://github.com/ManimCommunity/manim/pull/2771)
: Added documentation and testing for `path_func` keyword argument of [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
* [PR #2828](https://github.com/ManimCommunity/manim/pull/2828)
: Removed suggestion issue template, added FAQ answer regarding proposing new features
* [PR #2849](https://github.com/ManimCommunity/manim/pull/2849)
: Added example for `path_arc` keyword argument of [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
* [PR #2851](https://github.com/ManimCommunity/manim/pull/2851)
: Added an example on constructing a (neural) network using a partite [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
* [PR #2855](https://github.com/ManimCommunity/manim/pull/2855)
: Added implicit `docker.io/` URL base in reference to docker images
* [PR #2861](https://github.com/ManimCommunity/manim/pull/2861)
: Added docstring for [`CoordinateSystem.plot_parametric_curve()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_parametric_curve "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_parametric_curve")
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #2743](https://github.com/ManimCommunity/manim/pull/2743)
: Replaced `assert` statements with with assertion functions from `np.testing`
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2700](https://github.com/ManimCommunity/manim/pull/2700)
: CI: updated Python versions
* [PR #2701](https://github.com/ManimCommunity/manim/pull/2701)
: CI: added a workflow to publish docker image after releases and commits to main branch
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2680](https://github.com/ManimCommunity/manim/pull/2680)
: Increased minimum required version of `numpy` to 1.19
* [PR #2687](https://github.com/ManimCommunity/manim/pull/2687)
: Migrated from `os.path` to `pathlib` in [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
and other locations
* [PR #2715](https://github.com/ManimCommunity/manim/pull/2715)
: Updated deprecated `pillow` constants
* [PR #2735](https://github.com/ManimCommunity/manim/pull/2735)
: Bump pyjwt from 2.3.0 to 2.4.0
* [PR #2748](https://github.com/ManimCommunity/manim/pull/2748)
: Bump pillow from 9.1.0 to 9.1.1
* [PR #2751](https://github.com/ManimCommunity/manim/pull/2751)
: Fixed flake C417 and improved a comment
* [PR #2825](https://github.com/ManimCommunity/manim/pull/2825)
: Bump notebook from 6.4.11 to 6.4.12
* [PR #2864](https://github.com/ManimCommunity/manim/pull/2864)
: Updated lockfile
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.16.0-changelog.html#new-releases "Link to this heading")
* [PR #2863](https://github.com/ManimCommunity/manim/pull/2863)
: Prepared new release, `v0.16.0`
---
# ManimDirective - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.docbuild.manim_directive.ManimDirective.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.docbuild.manim_directive.ManimDirective.rst "Edit this page")
ManimDirective[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manimdirective "Link to this heading")
===================================================================================================================================================================
Qualified name: `manim.utils.docbuild.manim\_directive.ManimDirective`
class ManimDirective(_name_, _arguments_, _options_, _content_, _lineno_, _content\_offset_, _block\_text_, _state_, _state\_machine_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/docbuild/manim_directive.html#ManimDirective)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective "Link to this definition")
Bases: `Directive`
The manim directive, rendering videos while building the documentation.
See the module docstring for documentation.
Methods
| | |
| --- | --- |
| `run` | |
Attributes
| | |
| --- | --- |
| [`final_argument_whitespace`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.final_argument_whitespace "manim.utils.docbuild.manim_directive.ManimDirective.final_argument_whitespace") | May the final argument contain whitespace? |
| [`has_content`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.has_content "manim.utils.docbuild.manim_directive.ManimDirective.has_content") | May the directive have content? |
| [`option_spec`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.option_spec "manim.utils.docbuild.manim_directive.ManimDirective.option_spec") | Mapping of option names to validator functions. |
| [`optional_arguments`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.optional_arguments "manim.utils.docbuild.manim_directive.ManimDirective.optional_arguments") | Number of optional arguments after the required arguments. |
| [`required_arguments`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.required_arguments "manim.utils.docbuild.manim_directive.ManimDirective.required_arguments") | Number of required directive arguments. |
final\_argument\_whitespace \= True[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.final_argument_whitespace "Link to this definition")
May the final argument contain whitespace?
has\_content \= True[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.has_content "Link to this definition")
May the directive have content?
option\_spec \= {'hide\_source': , 'no\_autoplay': , 'quality': >, 'ref\_classes': >, 'ref\_functions': >, 'ref\_methods': >, 'ref\_modules': >, 'save\_as\_gif': , 'save\_last\_frame': }[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.option_spec "Link to this definition")
Mapping of option names to validator functions.
optional\_arguments \= 0[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.optional_arguments "Link to this definition")
Number of optional arguments after the required arguments.
required\_arguments \= 1[¶](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.ManimDirective.html#manim.utils.docbuild.manim_directive.ManimDirective.required_arguments "Link to this definition")
Number of required directive arguments.
---
# Plugins - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/plugins.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/plugins.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/plugins.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/plugins.rst "Edit this page")
Plugins[¶](https://docs.manim.community/en/stable/plugins.html#plugins "Link to this heading")
===============================================================================================
Plugins are features that extend Manim’s core functionality. Since Manim is extensible and not everything belongs in its core, we’ll go over how to install, use, and create your own plugins.
Note
The standard naming convention for plugins is to prefix the plugin with `manim-`. This makes them easy for users to find on package repositories such as PyPI.
Warning
The plugin feature is new and under active development. Expect updates for the best practices on installing, using, and creating plugins; as well as new subcommands/flags for `manim plugins`
Tip
See [https://plugins.manim.community/](https://plugins.manim.community/)
for the list of plugins available.
Installing Plugins[¶](https://docs.manim.community/en/stable/plugins.html#installing-plugins "Link to this heading")
---------------------------------------------------------------------------------------------------------------------
Plugins can be easily installed via the `pip` command:
pip install manim-\*
After installing a plugin, you may use the `manim plugins` command to list your available plugins, see the following help output:
manim plugins \-h
Usage: manim plugins \[OPTIONS\]
Manages Manim plugins.
Options:
-l, \--list List available plugins
-h, \--help Show this message and exit.
Made with <3 by Manim Community developers.
You can list plugins as such:
manim plugins \-l
Plugins:
• manim\_plugintemplate
Using Plugins in Projects[¶](https://docs.manim.community/en/stable/plugins.html#using-plugins-in-projects "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------
For enabling a plugin `manim.cfg` or command line parameters should be used.
Important
The plugins should be module name of the plugin and not PyPi name.
Enabling plugins through `manim.cfg`
\[CLI\]
plugins \= manim\_rubikscube
For specifying multiple plugins, comma-separated values must be used.
\[CLI\]
plugins \= manim\_rubikscube, manim\_plugintemplate
Creating Plugins[¶](https://docs.manim.community/en/stable/plugins.html#creating-plugins "Link to this heading")
-----------------------------------------------------------------------------------------------------------------
Plugins are intended to extend Manim’s core functionality. If you aren’t sure whether a feature should be included in Manim’s core, feel free to ask over on the [Discord server](https://www.manim.community/discord/)
. Visit [manim-plugintemplate](https://pypi.org/project/manim-plugintemplate/)
on PyPI.org which serves as an in-depth tutorial for creating plugins.
pip install manim-plugintemplate
The only requirement of manim plugins is that they specify an entry point with the group, `"manim.plugins"`. This allows Manim to discover plugins available in the user’s environment. Everything regarding the plugin’s directory structure, build system, and naming are completely up to your discretion as an author.
The standard way to specify an entry point (see [the Python packaging guide](https://packaging.python.org/specifications/entry-points/)
for details) is to include the following in your `pyproject.toml`:
\[project.entry-points."manim.plugins"\]
"name" \= "object\_reference"
Removed in version 0.18.1: Plugins should be imported explicitly to be usable in user code. The plugin system will probably be refactored in the future to provide a more structured interface.
### A note on Renderer Compatibility[¶](https://docs.manim.community/en/stable/plugins.html#a-note-on-renderer-compatibility "Link to this heading")
Depending on which renderer is currently active, custom mobjects created in your plugin might want to behave differently as the corresponding mobject base classes are (unfortunately) not fully compatible.
The currently active renderer can be queried by checking the value of `manim.config.renderer`. All possible renderer types are given by [`constants.RendererType`](https://docs.manim.community/en/stable/reference/manim.constants.RendererType.html#manim.constants.RendererType "manim.constants.RendererType")
. The module [`manim.mobject.utils`](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#module-manim.mobject.utils "manim.mobject.utils")
contains utility functions that return the base class for the currently active renderer.
A simple form of renderer compatibility (by hot-swapping the class inheritance chain) for Mobjects directly inheriting from [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
or [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
can be achieved by using the `mobject.opengl.opengl_compatibility.ConvertToOpenGL` metaclass.
---
# Adding Tests - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/testing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/testing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/testing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/testing.rst "Edit this page")
Adding Tests[¶](https://docs.manim.community/en/stable/contributing/testing.html#adding-tests "Link to this heading")
======================================================================================================================
If you are adding new features to manim, you should add appropriate tests for them. Tests prevent manim from breaking at each change by checking that no other feature has been broken and/or been unintentionally modified.
Warning
The full tests suite requires Cairo 1.18 in order to run all tests. However, Cairo 1.18 may not be available from your package manager, like `apt`, and it is very likely that you have an older version installed, e.g., 1.16. If you run tests with a version prior to 1.18, many tests will be skipped. Those tests are not skipped in the online CI.
If you want to run all tests locally, you need to install Cairo 1.18 or above. You can do so by compiling Cairo from source:
1. download `cairo-1.18.0.tar.xz` from [here](https://www.cairographics.org/releases/)
. and uncompress it;
2. open the INSTALL file and follow the instructions (you might need to install `meson` and `ninja`);
3. run the tests suite and verify that the Cairo version is correct.
How Manim tests[¶](https://docs.manim.community/en/stable/contributing/testing.html#how-manim-tests "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
Manim uses pytest as its testing framework. To start the testing process, go to the root directory of the project and run pytest in your terminal. Any errors that occur during testing will be displayed in the terminal.
Some useful pytest flags:
* `-x` will make pytest stop at the first failure it encounters
* `-s` will make pytest display all the print messages (including those during scene generation, like DEBUG messages)
* `--skip_slow` will skip the (arbitrarily) slow tests
* `--show_diff` will show a visual comparison in case a unit test is failing.
### How it Works[¶](https://docs.manim.community/en/stable/contributing/testing.html#how-it-works "Link to this heading")
At the moment there are three types of tests:
1. Unit Tests:
Tests for most of the basic functionalities of manim. For example, there a test for `Mobject`, that checks if it can be added to a Scene, etc.
2. Graphical unit tests: Because `manim` is a graphics library, we test frames. To do so, we create test scenes that render a specific feature. When pytest runs, it compares the result of the test to the control data, either at 6 fps or just the last frame. If it matches, the tests pass. If the test and control data differ, the tests fail. You can use `--show_diff` flag with `pytest` to visually see the differences. The `extract_frames.py` script lets you see all the frames of a test.
3. Videos format tests:
As Manim is a video library, we have to test videos as well. Unfortunately, we cannot directly test video content as rendered videos can differ slightly depending on the system (for reasons related to ffmpeg). Therefore, we only compare video configuration values, exported in .json.
Architecture[¶](https://docs.manim.community/en/stable/contributing/testing.html#architecture "Link to this heading")
----------------------------------------------------------------------------------------------------------------------
The `manim/tests` directory looks like this:
.
├── conftest.py
├── control\_data
│ ├── graphical\_units\_data
│ │ ├── creation
│ │ │ ├── DrawBorderThenFillTest.npy
│ │ │ ├── FadeInFromDownTest.npy
│ │ │ ├── FadeInFromLargeTest.npy
│ │ │ ├── FadeInFromTest.npy
│ │ │ ├── FadeInTest.npy
│ │ │ ├── ...
│ │ ├── geometry
│ │ │ ├── AnnularSectorTest.npy
│ │ │ ├── AnnulusTest.npy
│ │ │ ├── ArcBetweenPointsTest.npy
│ │ │ ├── ArcTest.npy
│ │ │ ├── CircleTest.npy
│ │ │ ├── CoordinatesTest.npy
│ │ │ ├── ...
│ │ ├── graph
│ │ │ ├── ...
| | | | ...
│ └── videos\_data
│ ├── SquareToCircleWithDefaultValues.json
│ └── SquareToCircleWithlFlag.json
├── helpers
│ ├── graphical\_units.py
│ ├── \_\_init\_\_.py
│ └── video\_utils.py
├── \_\_init\_\_.py
├── test\_camera.py
├── test\_config.py
├── test\_copy.py
├── test\_vectorized\_mobject.py
├── test\_graphical\_units
│ ├── conftest.py
│ ├── \_\_init\_\_.py
│ ├── test\_creation.py
│ ├── test\_geometry.py
│ ├── test\_graph.py
│ ├── test\_indication.py
│ ├── test\_movements.py
│ ├── test\_threed.py
│ ├── test\_transform.py
│ └── test\_updaters.py
├── test\_logging
│ ├── basic\_scenes.py
│ ├── expected.txt
│ ├── testloggingconfig.cfg
│ └── test\_logging.py
├── test\_scene\_rendering
│ ├── conftest.py
│ ├── \_\_init\_\_.py
│ ├── simple\_scenes.py
│ ├── standard\_config.cfg
│ └── test\_cli\_flags.py
└── utils
├── commands.py
├── \_\_init\_\_.py
├── testing\_utils.py
└── video\_tester.py
...
The Main Directories[¶](https://docs.manim.community/en/stable/contributing/testing.html#the-main-directories "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------
* `control_data/`:
The directory containing control data. `control_data/graphical_units_data/` contains the expected and correct frame data for graphical tests, and `control_data/videos_data/` contains the .json files used to check videos.
* `test_graphical_units/`:
Contains graphical tests.
* `test_scene_rendering/`:
For tests that need to render a scene in some way, such as tests for CLI flags (end-to-end tests).
* `utils/`:
Useful internal functions used by pytest.
Note
fixtures are not contained here, they are in `conftest.py`.
* `helpers/`:
Helper functions for developers to setup graphical/video tests.
Adding a New Test[¶](https://docs.manim.community/en/stable/contributing/testing.html#adding-a-new-test "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### Unit Tests[¶](https://docs.manim.community/en/stable/contributing/testing.html#unit-tests "Link to this heading")
Pytest determines which functions are tests by searching for files whose names begin with “test\_”, and then within those files for functions beginning with “test” and classes beginning with “Test”. These kinds of tests must be in `tests/` (e.g. `tests/test_container.py`).
### Graphical Unit Test[¶](https://docs.manim.community/en/stable/contributing/testing.html#graphical-unit-test "Link to this heading")
The test must be written in the correct file (i.e. the file that corresponds to the appropriate category the feature belongs to) and follow the structure of unit tests.
For example, to test the `Circle` VMobject which resides in `manim/mobject/geometry.py`, add the CircleTest to `test/test_geometry.py`.
The name of the module is indicated by the variable \_\_module\_test\_\_, that **must** be declared in any graphical test file. The module name is used to store the graphical control data.
Important
You will need to use the `frames_comparison` decorator to create a test. The test function **must** accept a parameter named `scene` that will be used like `self` in a standard `construct` method.
Here’s an example in `test_geometry.py`:
from manim import \*
from manim.utils.testing.frames\_comparison import frames\_comparison
\_\_module\_test\_\_ \= "geometry"
@frames\_comparison
def test\_circle(scene):
circle \= Circle()
scene.play(Animation(circle))
The decorator can be used with or without parentheses. **By default, the test only tests the last frame. To enable multi-frame testing, you have to set \`\`last\_frame=False\`\` in the parameters.**
@frames\_comparison(last\_frame\=False)
def test\_circle(scene):
circle \= Circle()
scene.play(Animation(circle))
You can also specify, when needed, which base scene you need (ThreeDScene, for example) :
@frames\_comparison(last\_frame\=False, base\_scene\=ThreeDScene)
def test\_circle(scene):
circle \= Circle()
scene.play(Animation(circle))
Feel free to check the documentation of `@frames_comparison` for more.
Note that tests name must follow the syntax `test_`, otherwise pytest will not recognize it as a test.
Warning
If you run pytest now, you will get a `FileNotFound` error. This is because you have not created control data for your test.
To create the control data for your test, you have to use the flag `--set_test` along with pytest. For the example above, it would be
pytest test\_geometry.py::test\_circle \--set\_test \-s
(`-s` is here to see manim logs, so you can see what’s going on).
If you want to see all the control data frames (e.g. to make sure your test is doing what you want), use the `extract_frames.py` script. The first parameter is the path to a `.npz` file and the second parameter is the directory you want the frames created. The frames will be named `frame0.png`, `frame1.png`, etc.
python scripts/extract\_frames.py tests/test\_graphical\_units/control\_data/plot/axes.npz output
Please make sure to add the control data to git as soon as it is produced with `git add `.
### Videos tests[¶](https://docs.manim.community/en/stable/contributing/testing.html#videos-tests "Link to this heading")
To test videos generated, we use the decorator `tests.utils.videos_tester.video_comparison`:
@video\_comparison(
"SquareToCircleWithlFlag.json", "videos/simple\_scenes/480p15/SquareToCircle.mp4"
)
def test\_basic\_scene\_l\_flag(tmp\_path, manim\_cfg\_file, simple\_scenes\_path):
scene\_name \= "SquareToCircle"
command \= \[\
"python",\
"-m",\
"manim",\
simple\_scenes\_path,\
scene\_name,\
"-l",\
"--media\_dir",\
str(tmp\_path),\
\]
out, err, exit\_code \= capture(command)
assert exit\_code \== 0, err
Note
`assert exit*\ code == 0, err` is used in case of the command fails to run. The decorator takes two arguments: json name and the path to where the video should be generated, starting from the `media/` dir.
Note the fixtures here:
* tmp\_path is a pytest fixture to get a tmp\_path. Manim will output here, according to the flag `--media_dir`.
* `manim_cfg_file` fixture that return a path pointing to `test_scene_rendering/standard_config.cfg`. It’s just to shorten the code, in the case multiple tests need to use this cfg file.
* `simple_scenes_path` same as above, except for `test_scene_rendering/simple_scene.py`
You have to generate a `.json` file first to be able to test your video. To do that, use `helpers.save_control_data_from_video`.
For instance, a test that will check if the l flag works properly will first require rendering a video using the -l flag from a scene. Then we will test (in this case, SquareToCircle), that lives in `test_scene_rendering/simple_scene.py`. Change directories to `tests/`, create a file (e.g. `create\_data.py`) that you will remove as soon as you’re done. Then run:
save\_control\_data\_from\_video("", "SquareToCircleWithlFlag.json")
Running this will save `control_data/videos_data/SquareToCircleWithlFlag.json`, which will look like this:
{
"name": "SquareToCircleWithlFlag",
"config": {
"codec\_name": "h264",
"width": 854,
"height": 480,
"avg\_frame\_rate": "15/1",
"duration": "1.000000",
"nb\_frames": "15"
}
}
If you have any questions, please don’t hesitate to ask on [Discord](https://www.manim.community/discord/)
, in your pull request, or in an issue.
---
# TexFontTemplates - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.tex_templates.TexFontTemplates.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.tex_templates.TexFontTemplates.rst "Edit this page")
TexFontTemplates[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#texfonttemplates "Link to this heading")
==============================================================================================================================================================
Qualified name: `manim.utils.tex\_templates.TexFontTemplates`
class TexFontTemplates[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/tex_templates.html#TexFontTemplates)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates "Link to this definition")
Bases: `object`
A collection of TeX templates for the fonts described at [http://jf.burnol.free.fr/showcase.html](http://jf.burnol.free.fr/showcase.html)
These templates are specifically designed to allow you to typeset formulae and mathematics using different fonts. They are based on the mathastext LaTeX package.
Examples
Normal usage as a value for the keyword argument tex\_template of Tex() and MathTex() mobjects:
\`\`Tex("My TeX code", tex\_template=TexFontTemplates.comic\_sans)\`\`
Notes
Many of these templates require that specific fonts are installed on your local machine. For example, choosing the template TexFontTemplates.comic\_sans will not compile if the Comic Sans Microsoft font is not installed.
To experiment, try to render the TexFontTemplateLibrary example scene:
`manim path/to/manim/example_scenes/advanced_tex_fonts.py TexFontTemplateLibrary -p -ql`
Methods
Attributes
| | |
| --- | --- |
| [`american_typewriter`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.american_typewriter "manim.utils.tex_templates.TexFontTemplates.american_typewriter") | American Typewriter |
| [`antykwa`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.antykwa "manim.utils.tex_templates.TexFontTemplates.antykwa") | Antykwa Półtawskiego (TX Fonts for Greek and math symbols) |
| [`apple_chancery`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.apple_chancery "manim.utils.tex_templates.TexFontTemplates.apple_chancery") | Apple Chancery |
| [`auriocus_kalligraphicus`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.auriocus_kalligraphicus "manim.utils.tex_templates.TexFontTemplates.auriocus_kalligraphicus") | Auriocus Kalligraphicus (Symbol Greek) |
| [`baskervald_adf_fourier`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.baskervald_adf_fourier "manim.utils.tex_templates.TexFontTemplates.baskervald_adf_fourier") | Baskervald ADF with Fourier |
| [`baskerville_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.baskerville_it "manim.utils.tex_templates.TexFontTemplates.baskerville_it") | Baskerville (Italic) |
| [`biolinum`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.biolinum "manim.utils.tex_templates.TexFontTemplates.biolinum") | Biolinum |
| [`brushscriptx`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.brushscriptx "manim.utils.tex_templates.TexFontTemplates.brushscriptx") | BrushScriptX-Italic (PX math and Greek) |
| [`chalkboard_se`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.chalkboard_se "manim.utils.tex_templates.TexFontTemplates.chalkboard_se") | Chalkboard SE |
| [`chalkduster`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.chalkduster "manim.utils.tex_templates.TexFontTemplates.chalkduster") | Chalkduster |
| [`comfortaa`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.comfortaa "manim.utils.tex_templates.TexFontTemplates.comfortaa") | Comfortaa |
| [`comic_sans`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.comic_sans "manim.utils.tex_templates.TexFontTemplates.comic_sans") | Comic Sans MS |
| [`droid_sans`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_sans "manim.utils.tex_templates.TexFontTemplates.droid_sans") | Droid Sans |
| [`droid_sans_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_sans_it "manim.utils.tex_templates.TexFontTemplates.droid_sans_it") | Droid Sans (Italic) |
| [`droid_serif`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_serif "manim.utils.tex_templates.TexFontTemplates.droid_serif") | Droid Serif |
| [`droid_serif_px_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_serif_px_it "manim.utils.tex_templates.TexFontTemplates.droid_serif_px_it") | Droid Serif (PX math symbols) (Italic) |
| [`ecf_augie`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_augie "manim.utils.tex_templates.TexFontTemplates.ecf_augie") | ECF Augie (Euler Greek) |
| [`ecf_jd`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_jd "manim.utils.tex_templates.TexFontTemplates.ecf_jd") | ECF JD (with TX fonts) |
| [`ecf_skeetch`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_skeetch "manim.utils.tex_templates.TexFontTemplates.ecf_skeetch") | ECF Skeetch (CM Greek) |
| [`ecf_tall_paul`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_tall_paul "manim.utils.tex_templates.TexFontTemplates.ecf_tall_paul") | ECF Tall Paul (with Symbol font) |
| [`ecf_webster`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_webster "manim.utils.tex_templates.TexFontTemplates.ecf_webster") | ECF Webster (with TX fonts) |
| [`electrum_adf`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.electrum_adf "manim.utils.tex_templates.TexFontTemplates.electrum_adf") | Electrum ADF (CM Greek) |
| [`epigrafica`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.epigrafica "manim.utils.tex_templates.TexFontTemplates.epigrafica") | Epigrafica |
| [`fourier_utopia`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.fourier_utopia "manim.utils.tex_templates.TexFontTemplates.fourier_utopia") | Fourier Utopia (Fourier upright Greek) |
| [`french_cursive`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.french_cursive "manim.utils.tex_templates.TexFontTemplates.french_cursive") | French Cursive (Euler Greek) |
| [`gfs_bodoni`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_bodoni "manim.utils.tex_templates.TexFontTemplates.gfs_bodoni") | GFS Bodoni |
| [`gfs_didot`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_didot "manim.utils.tex_templates.TexFontTemplates.gfs_didot") | GFS Didot (Italic) |
| [`gfs_neoHellenic`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_neoHellenic "manim.utils.tex_templates.TexFontTemplates.gfs_neoHellenic") | GFS NeoHellenic |
| [`gnu_freesans_tx`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gnu_freesans_tx "manim.utils.tex_templates.TexFontTemplates.gnu_freesans_tx") | GNU FreeSerif (and TX fonts symbols) |
| [`gnu_freeserif_freesans`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gnu_freeserif_freesans "manim.utils.tex_templates.TexFontTemplates.gnu_freeserif_freesans") | GNU FreeSerif and FreeSans |
| [`helvetica_fourier_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.helvetica_fourier_it "manim.utils.tex_templates.TexFontTemplates.helvetica_fourier_it") | Helvetica with Fourier (Italic) |
| [`latin_modern_tw`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.latin_modern_tw "manim.utils.tex_templates.TexFontTemplates.latin_modern_tw") | Latin Modern Typewriter Proportional |
| [`latin_modern_tw_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.latin_modern_tw_it "manim.utils.tex_templates.TexFontTemplates.latin_modern_tw_it") | Latin Modern Typewriter Proportional (CM Greek) (Italic) |
| [`libertine`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.libertine "manim.utils.tex_templates.TexFontTemplates.libertine") | Libertine |
| [`libris_adf_fourier`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.libris_adf_fourier "manim.utils.tex_templates.TexFontTemplates.libris_adf_fourier") | Libris ADF with Fourier |
| [`minion_pro_myriad_pro`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.minion_pro_myriad_pro "manim.utils.tex_templates.TexFontTemplates.minion_pro_myriad_pro") | Minion Pro and Myriad Pro (and TX fonts symbols) |
| [`minion_pro_tx`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.minion_pro_tx "manim.utils.tex_templates.TexFontTemplates.minion_pro_tx") | Minion Pro (and TX fonts symbols) |
| [`new_century_schoolbook`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook "manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook") | New Century Schoolbook (Symbol Greek) |
| [`new_century_schoolbook_px`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook_px "manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook_px") | New Century Schoolbook (Symbol Greek, PX math symbols) |
| [`noteworthy_light`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.noteworthy_light "manim.utils.tex_templates.TexFontTemplates.noteworthy_light") | Noteworthy Light |
| [`palatino`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.palatino "manim.utils.tex_templates.TexFontTemplates.palatino") | Palatino (Symbol Greek) |
| [`papyrus`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.papyrus "manim.utils.tex_templates.TexFontTemplates.papyrus") | Papyrus |
| [`romande_adf_fourier_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.romande_adf_fourier_it "manim.utils.tex_templates.TexFontTemplates.romande_adf_fourier_it") | Romande ADF with Fourier (Italic) |
| [`slitex`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.slitex "manim.utils.tex_templates.TexFontTemplates.slitex") | SliTeX (Euler Greek) |
| [`times_fourier_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.times_fourier_it "manim.utils.tex_templates.TexFontTemplates.times_fourier_it") | Times with Fourier (Italic) |
| [`urw_avant_garde`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.urw_avant_garde "manim.utils.tex_templates.TexFontTemplates.urw_avant_garde") | URW Avant Garde (Symbol Greek) |
| [`urw_zapf_chancery`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.urw_zapf_chancery "manim.utils.tex_templates.TexFontTemplates.urw_zapf_chancery") | URW Zapf Chancery (CM Greek) |
| [`venturis_adf_fourier_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.venturis_adf_fourier_it "manim.utils.tex_templates.TexFontTemplates.venturis_adf_fourier_it") | Venturis ADF with Fourier (Italic) |
| [`verdana_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.verdana_it "manim.utils.tex_templates.TexFontTemplates.verdana_it") | Verdana (Italic) |
| [`vollkorn`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.vollkorn "manim.utils.tex_templates.TexFontTemplates.vollkorn") | Vollkorn (TX fonts for Greek and math symbols) |
| [`vollkorn_fourier_it`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.vollkorn_fourier_it "manim.utils.tex_templates.TexFontTemplates.vollkorn_fourier_it") | Vollkorn with Fourier (Italic) |
| [`zapf_chancery`](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.zapf_chancery "manim.utils.tex_templates.TexFontTemplates.zapf_chancery") | Zapf Chancery |
american\_typewriter \= TexTemplate(\_body='', tex\_compiler='xelatex', description='American Typewriter', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{American Typewriter}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.american_typewriter "Link to this definition")
American Typewriter
antykwa \= TexTemplate(\_body='', tex\_compiler='latex', description='Antykwa Półtawskiego (TX Fonts for Greek and math symbols)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[OT4,OT1\]{fontenc}\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[upright\]{txgreeks}\\n\\\\usepackage{antpolt}\\n\\\\usepackage\[defaultmathsizes,nolessnomore\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.antykwa "Link to this definition")
Antykwa Półtawskiego (TX Fonts for Greek and math symbols)
apple\_chancery \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Apple Chancery', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Apple Chancery}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.apple_chancery "Link to this definition")
Apple Chancery
auriocus\_kalligraphicus \= TexTemplate(\_body='', tex\_compiler='latex', description='Auriocus Kalligraphicus (Symbol Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{aurical}\\n\\\\renewcommand{\\\\rmdefault}{AuriocusKalligraphicus}\\n\\\\usepackage\[symbolgreek\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.auriocus_kalligraphicus "Link to this definition")
Auriocus Kalligraphicus (Symbol Greek)
baskervald\_adf\_fourier \= TexTemplate(\_body='', tex\_compiler='latex', description='Baskervald ADF with Fourier', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[upright\]{fourier}\\n\\\\usepackage{baskervald}\\n\\\\usepackage\[defaultmathsizes,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.baskervald_adf_fourier "Link to this definition")
Baskervald ADF with Fourier
baskerville\_it \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Baskerville (Italic)', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Baskerville}\\n\\\\usepackage\[defaultmathsizes,italic\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.baskerville_it "Link to this definition")
Baskerville (Italic)
biolinum \= TexTemplate(\_body='', tex\_compiler='latex', description='Biolinum', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{libertine}\\n\\\\renewcommand{\\\\familydefault}{\\\\sfdefault}\\n\\\\usepackage\[greek=n,biolinum\]{libgreek}\\n\\\\usepackage\[noasterisk,defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.biolinum "Link to this definition")
Biolinum
brushscriptx \= TexTemplate(\_body='', tex\_compiler='xelatex', description='BrushScriptX-Italic (PX math and Greek)', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{pxfonts}\\n%\\\\usepackage{pbsi}\\n\\\\renewcommand{\\\\rmdefault}{pbsi}\\n\\\\renewcommand{\\\\mddefault}{xl}\\n\\\\renewcommand{\\\\bfdefault}{xl}\\n\\\\usepackage\[defaultmathsizes,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='\\\\boldmath\\n')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.brushscriptx "Link to this definition")
BrushScriptX-Italic (PX math and Greek)
chalkboard\_se \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Chalkboard SE', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Chalkboard SE}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.chalkboard_se "Link to this definition")
Chalkboard SE
chalkduster \= TexTemplate(\_body='', tex\_compiler='lualatex', description='Chalkduster', output\_format='.pdf', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Chalkduster}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.chalkduster "Link to this definition")
Chalkduster
comfortaa \= TexTemplate(\_body='', tex\_compiler='latex', description='Comfortaa', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[default\]{comfortaa}\\n\\\\usepackage\[LGRgreek,defaultmathsizes,noasterisk\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n\\\\linespread{1.06}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.comfortaa "Link to this definition")
Comfortaa
comic\_sans \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Comic Sans MS', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Comic Sans MS}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.comic_sans "Link to this definition")
Comic Sans MS
droid\_sans \= TexTemplate(\_body='', tex\_compiler='latex', description='Droid Sans', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[default\]{droidsans}\\n\\\\usepackage\[LGRgreek\]{mathastext}\\n\\\\let\\\\varepsilon\\\\epsilon\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_sans "Link to this definition")
Droid Sans
droid\_sans\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Droid Sans (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[default\]{droidsans}\\n\\\\usepackage\[LGRgreek,defaultmathsizes,italic\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_sans_it "Link to this definition")
Droid Sans (Italic)
droid\_serif \= TexTemplate(\_body='', tex\_compiler='latex', description='Droid Serif', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[default\]{droidserif}\\n\\\\usepackage\[LGRgreek\]{mathastext}\\n\\\\let\\\\varepsilon\\\\epsilon\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_serif "Link to this definition")
Droid Serif
droid\_serif\_px\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Droid Serif (PX math symbols) (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{pxfonts}\\n\\\\usepackage\[default\]{droidserif}\\n\\\\usepackage\[LGRgreek,defaultmathsizes,italic,basic\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.droid_serif_px_it "Link to this definition")
Droid Serif (PX math symbols) (Italic)
ecf\_augie \= TexTemplate(\_body='', tex\_compiler='latex', description='ECF Augie (Euler Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\renewcommand\\\\familydefault{fau} % emerald package\\n\\\\usepackage\[defaultmathsizes,eulergreek\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_augie "Link to this definition")
ECF Augie (Euler Greek)
ecf\_jd \= TexTemplate(\_body='', tex\_compiler='latex', description='ECF JD (with TX fonts)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[upright\]{txgreeks}\\n\\\\renewcommand\\\\familydefault{fjd} % emerald package\\n\\\\usepackage{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='\\\\mathversion{bold}\\n')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_jd "Link to this definition")
ECF JD (with TX fonts)
ecf\_skeetch \= TexTemplate(\_body='', tex\_compiler='latex', description='ECF Skeetch (CM Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\DeclareFontFamily{T1}{fsk}{}\\n\\\\DeclareFontShape{T1}{fsk}{m}{n}{<->s\*\[1.315\] fskmw8t}{}\\n\\\\renewcommand\\\\rmdefault{fsk}\\n\\\\usepackage\[noendash,defaultmathsizes,nohbar,defaultimath\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_skeetch "Link to this definition")
ECF Skeetch (CM Greek)
ecf\_tall\_paul \= TexTemplate(\_body='', tex\_compiler='latex', description='ECF Tall Paul (with Symbol font)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\DeclareFontFamily{T1}{ftp}{}\\n\\\\DeclareFontShape{T1}{ftp}{m}{n}{\\n <->s\*\[1.4\] ftpmw8t\\n}{} % increase size by factor 1.4\\n\\\\renewcommand\\\\familydefault{ftp} % emerald package\\n\\\\usepackage\[symbol\]{mathastext}\\n\\\\let\\\\infty\\\\inftypsy\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_tall_paul "Link to this definition")
ECF Tall Paul (with Symbol font)
ecf\_webster \= TexTemplate(\_body='', tex\_compiler='latex', description='ECF Webster (with TX fonts)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[upright\]{txgreeks}\\n\\\\renewcommand\\\\familydefault{fwb} % emerald package\\n\\\\usepackage{mathastext}\\n\\\\renewcommand{\\\\int}{\\\\intop\\\\limits}\\n\\\\linespread{1.5}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='\\n\\\\mathversion{bold}\\n')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.ecf_webster "Link to this definition")
ECF Webster (with TX fonts)
electrum\_adf \= TexTemplate(\_body='', tex\_compiler='latex', description='Electrum ADF (CM Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[LGRgreek,basic,defaultmathsizes\]{mathastext}\\n\\\\usepackage\[lf\]{electrum}\\n\\\\Mathastext\\n\\\\let\\\\varphi\\\\phi\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.electrum_adf "Link to this definition")
Electrum ADF (CM Greek)
epigrafica \= TexTemplate(\_body='', tex\_compiler='latex', description='Epigrafica', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[LGR,OT1\]{fontenc}\\n\\\\usepackage{epigrafica}\\n\\\\usepackage\[basic,LGRgreek,defaultmathsizes\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n\\\\linespread{1.2}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.epigrafica "Link to this definition")
Epigrafica
fourier\_utopia \= TexTemplate(\_body='', tex\_compiler='latex', description='Fourier Utopia (Fourier upright Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[upright\]{fourier}\\n\\\\usepackage{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.fourier_utopia "Link to this definition")
Fourier Utopia (Fourier upright Greek)
french\_cursive \= TexTemplate(\_body='', tex\_compiler='latex', description='French Cursive (Euler Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[default\]{frcursive}\\n\\\\usepackage\[eulergreek,noplusnominus,noequal,nohbar,%\\nnolessnomore,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.french_cursive "Link to this definition")
French Cursive (Euler Greek)
gfs\_bodoni \= TexTemplate(\_body='', tex\_compiler='latex', description='GFS Bodoni', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\renewcommand{\\\\rmdefault}{bodoni}\\n\\\\usepackage\[LGRgreek\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n\\\\linespread{1.06}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_bodoni "Link to this definition")
GFS Bodoni
gfs\_didot \= TexTemplate(\_body='', tex\_compiler='latex', description='GFS Didot (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\renewcommand\\\\rmdefault{udidot}\\n\\\\usepackage\[LGRgreek,defaultmathsizes,italic\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_didot "Link to this definition")
GFS Didot (Italic)
gfs\_neoHellenic \= TexTemplate(\_body='', tex\_compiler='latex', description='GFS NeoHellenic', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\renewcommand{\\\\rmdefault}{neohellenic}\\n\\\\usepackage\[LGRgreek\]{mathastext}\\n\\\\let\\\\varphi\\\\phi\\n\\\\linespread{1.06}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gfs_neoHellenic "Link to this definition")
GFS NeoHellenic
gnu\_freesans\_tx \= TexTemplate(\_body='', tex\_compiler='xelatex', description='GNU FreeSerif (and TX fonts symbols)', output\_format='.pdf', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\usepackage{txfonts} %\\\\let\\\\mathbb=\\\\varmathbb\\n\\\\setmainfont\[ExternalLocation,\\n Mapping=tex-text,\\n BoldFont=FreeSerifBold,\\n ItalicFont=FreeSerifItalic,\\n BoldItalicFont=FreeSerifBoldItalic\]{FreeSerif}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gnu_freesans_tx "Link to this definition")
GNU FreeSerif (and TX fonts symbols)
gnu\_freeserif\_freesans \= TexTemplate(\_body='', tex\_compiler='xelatex', description='GNU FreeSerif and FreeSans', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble="\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[ExternalLocation,\\n Mapping=tex-text,\\n BoldFont=FreeSerifBold,\\n ItalicFont=FreeSerifItalic,\\n BoldItalicFont=FreeSerifBoldItalic\]{FreeSerif}\\n\\\\setsansfont\[ExternalLocation,\\n Mapping=tex-text,\\n BoldFont=FreeSansBold,\\n ItalicFont=FreeSansOblique,\\n BoldItalicFont=FreeSansBoldOblique,\\n Scale=MatchLowercase\]{FreeSans}\\n\\\\renewcommand{\\\\familydefault}{lmss}\\n\\\\usepackage\[LGRgreek,defaultmathsizes,noasterisk\]{mathastext}\\n\\\\renewcommand{\\\\familydefault}{\\\\sfdefault}\\n\\\\Mathastext\\n\\\\let\\\\varphi\\\\phi % no \`var' phi in LGR encoding\\n\\\\renewcommand{\\\\familydefault}{\\\\rmdefault}\\n", placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.gnu_freeserif_freesans "Link to this definition")
GNU FreeSerif and FreeSans
helvetica\_fourier\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Helvetica with Fourier (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[scaled\]{helvet}\\n\\\\usepackage{fourier}\\n\\\\renewcommand{\\\\rmdefault}{phv}\\n\\\\usepackage\[italic,defaultmathsizes,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.helvetica_fourier_it "Link to this definition")
Helvetica with Fourier (Italic)
latin\_modern\_tw \= TexTemplate(\_body='', tex\_compiler='latex', description='Latin Modern Typewriter Proportional', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[variablett\]{lmodern}\\n\\\\renewcommand{\\\\rmdefault}{\\\\ttdefault}\\n\\\\usepackage\[LGRgreek\]{mathastext}\\n\\\\MTgreekfont{lmtt} % no lgr lmvtt, so use lgr lmtt\\n\\\\Mathastext\\n\\\\let\\\\varepsilon\\\\epsilon % only \\\\varsigma in LGR\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.latin_modern_tw "Link to this definition")
Latin Modern Typewriter Proportional
latin\_modern\_tw\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Latin Modern Typewriter Proportional (CM Greek) (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[variablett,nomath\]{lmodern}\\n\\\\renewcommand{\\\\familydefault}{\\\\ttdefault}\\n\\\\usepackage\[frenchmath\]{mathastext}\\n\\\\linespread{1.08}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.latin_modern_tw_it "Link to this definition")
Latin Modern Typewriter Proportional (CM Greek) (Italic)
libertine \= TexTemplate(\_body='', tex\_compiler='latex', description='Libertine', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{libertine}\\n\\\\usepackage\[greek=n\]{libgreek}\\n\\\\usepackage\[noasterisk,defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.libertine "Link to this definition")
Libertine
libris\_adf\_fourier \= TexTemplate(\_body='', tex\_compiler='latex', description='Libris ADF with Fourier', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage\[upright\]{fourier}\\n\\\\usepackage{libris}\\n\\\\renewcommand{\\\\familydefault}{\\\\sfdefault}\\n\\\\usepackage\[noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.libris_adf_fourier "Link to this definition")
Libris ADF with Fourier
minion\_pro\_myriad\_pro \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Minion Pro and Myriad Pro (and TX fonts symbols)', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[upright\]{txgreeks}\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Minion Pro}\\n\\\\setsansfont\[Mapping=tex-text,Scale=MatchUppercase\]{Myriad Pro}\\n\\\\renewcommand\\\\familydefault\\\\sfdefault\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n\\\\renewcommand\\\\familydefault\\\\rmdefault\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.minion_pro_myriad_pro "Link to this definition")
Minion Pro and Myriad Pro (and TX fonts symbols)
minion\_pro\_tx \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Minion Pro (and TX fonts symbols)', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Minion Pro}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.minion_pro_tx "Link to this definition")
Minion Pro (and TX fonts symbols)
new\_century\_schoolbook \= TexTemplate(\_body='', tex\_compiler='latex', description='New Century Schoolbook (Symbol Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{newcent}\\n\\\\usepackage\[symbolgreek\]{mathastext}\\n\\\\linespread{1.1}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook "Link to this definition")
New Century Schoolbook (Symbol Greek)
new\_century\_schoolbook\_px \= TexTemplate(\_body='', tex\_compiler='latex', description='New Century Schoolbook (Symbol Greek, PX math symbols)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{pxfonts}\\n\\\\usepackage{newcent}\\n\\\\usepackage\[symbolgreek,defaultmathsizes\]{mathastext}\\n\\\\linespread{1.06}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.new_century_schoolbook_px "Link to this definition")
New Century Schoolbook (Symbol Greek, PX math symbols)
noteworthy\_light \= TexTemplate(\_body='', tex\_compiler='latex', description='Noteworthy Light', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Noteworthy Light}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.noteworthy_light "Link to this definition")
Noteworthy Light
palatino \= TexTemplate(\_body='', tex\_compiler='latex', description='Palatino (Symbol Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{palatino}\\n\\\\usepackage\[symbolmax,defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.palatino "Link to this definition")
Palatino (Symbol Greek)
papyrus \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Papyrus', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Papyrus}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.papyrus "Link to this definition")
Papyrus
romande\_adf\_fourier\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Romande ADF with Fourier (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{fourier}\\n\\\\usepackage{romande}\\n\\\\usepackage\[italic,defaultmathsizes,noasterisk\]{mathastext}\\n\\\\renewcommand{\\\\itshape}{\\\\swashstyle}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.romande_adf_fourier_it "Link to this definition")
Romande ADF with Fourier (Italic)
slitex \= TexTemplate(\_body='', tex\_compiler='latex', description='SliTeX (Euler Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{tpslifonts}\\n\\\\usepackage\[eulergreek,defaultmathsizes\]{mathastext}\\n\\\\MTEulerScale{1.06}\\n\\\\linespread{1.2}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.slitex "Link to this definition")
SliTeX (Euler Greek)
times\_fourier\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Times with Fourier (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{fourier}\\n\\\\renewcommand{\\\\rmdefault}{ptm}\\n\\\\usepackage\[italic,defaultmathsizes,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.times_fourier_it "Link to this definition")
Times with Fourier (Italic)
urw\_avant\_garde \= TexTemplate(\_body='', tex\_compiler='latex', description='URW Avant Garde (Symbol Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{avant}\\n\\\\renewcommand{\\\\familydefault}{\\\\sfdefault}\\n\\\\usepackage\[symbolgreek,defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.urw_avant_garde "Link to this definition")
URW Avant Garde (Symbol Greek)
urw\_zapf\_chancery \= TexTemplate(\_body='', tex\_compiler='latex', description='URW Zapf Chancery (CM Greek)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\DeclareFontFamily{T1}{pzc}{}\\n\\\\DeclareFontShape{T1}{pzc}{mb}{it}{<->s\*\[1.2\] pzcmi8t}{}\\n\\\\DeclareFontShape{T1}{pzc}{m}{it}{<->ssub \* pzc/mb/it}{}\\n\\\\DeclareFontShape{T1}{pzc}{mb}{sl}{<->ssub \* pzc/mb/it}{}\\n\\\\DeclareFontShape{T1}{pzc}{m}{sl}{<->ssub \* pzc/mb/sl}{}\\n\\\\DeclareFontShape{T1}{pzc}{m}{n}{<->ssub \* pzc/mb/it}{}\\n\\\\usepackage{chancery}\\n\\\\usepackage{mathastext}\\n\\\\linespread{1.05}', placeholder\_text='YourTextHere', post\_doc\_commands='\\n\\\\boldmath\\n')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.urw_zapf_chancery "Link to this definition")
URW Zapf Chancery (CM Greek)
venturis\_adf\_fourier\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Venturis ADF with Fourier (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{fourier}\\n\\\\usepackage\[lf\]{venturis}\\n\\\\usepackage\[italic,defaultmathsizes,noasterisk\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.venturis_adf_fourier_it "Link to this definition")
Venturis ADF with Fourier (Italic)
verdana\_it \= TexTemplate(\_body='', tex\_compiler='xelatex', description='Verdana (Italic)', output\_format='.xdv', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[no-math\]{fontspec}\\n\\\\setmainfont\[Mapping=tex-text\]{Verdana}\\n\\\\usepackage\[defaultmathsizes,italic\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.verdana_it "Link to this definition")
Verdana (Italic)
vollkorn \= TexTemplate(\_body='', tex\_compiler='latex', description='Vollkorn (TX fonts for Greek and math symbols)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage\[T1\]{fontenc}\\n\\\\usepackage{txfonts}\\n\\\\usepackage\[upright\]{txgreeks}\\n\\\\usepackage{vollkorn}\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.vollkorn "Link to this definition")
Vollkorn (TX fonts for Greek and math symbols)
vollkorn\_fourier\_it \= TexTemplate(\_body='', tex\_compiler='latex', description='Vollkorn with Fourier (Italic)', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\usepackage{fourier}\\n\\\\usepackage{vollkorn}\\n\\\\usepackage\[italic,nohbar\]{mathastext}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.vollkorn_fourier_it "Link to this definition")
Vollkorn with Fourier (Italic)
zapf\_chancery \= TexTemplate(\_body='', tex\_compiler='latex', description='Zapf Chancery', output\_format='.dvi', documentclass='\\\\documentclass\[preview\]{standalone}', preamble='\\n\\\\usepackage\[english\]{babel}\\n\\\\usepackage{amsmath}\\n\\\\usepackage{amssymb}\\n\\n\\n\\\\DeclareFontFamily{T1}{pzc}{}\\n\\\\DeclareFontShape{T1}{pzc}{mb}{it}{<->s\*\[1.2\] pzcmi8t}{}\\n\\\\DeclareFontShape{T1}{pzc}{m}{it}{<->ssub \* pzc/mb/it}{}\\n\\\\usepackage{chancery} % \= \\\\renewcommand{\\\\rmdefault}{pzc}\\n\\\\renewcommand\\\\shapedefault\\\\itdefault\\n\\\\renewcommand\\\\bfdefault\\\\mddefault\\n\\\\usepackage\[defaultmathsizes\]{mathastext}\\n\\\\linespread{1.05}\\n', placeholder\_text='YourTextHere', post\_doc\_commands='')[¶](https://docs.manim.community/en/stable/reference/manim.utils.tex_templates.TexFontTemplates.html#manim.utils.tex_templates.TexFontTemplates.zapf_chancery "Link to this definition")
Zapf Chancery
---
# Adding Docstrings - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/docstrings.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/docstrings.rst "Edit this page")
Adding Docstrings[¶](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#adding-docstrings "Link to this heading")
========================================================================================================================================
A docstring is a string literal that is used right after the definition of a module, function, class, or method. They are used to document our code. This page will give you a set of guidelines to write efficient and correct docstrings.
Formatting the Docstrings[¶](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#formatting-the-docstrings "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------------------
Please begin the description of the class/function in the same line as the 3 quotes:
def do\_this():
"""This is correct.
(...)
"""
def dont\_do\_this():
"""
This is incorrect.
(...)
"""
NumPy Format[¶](https://docs.manim.community/en/stable/contributing/docs/docstrings.html#numpy-format "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------
The Manim Community uses numpy format for the documentation.
Use the numpy format for sections and formatting - see [https://numpydoc.readthedocs.io/en/latest/format.html](https://numpydoc.readthedocs.io/en/latest/format.html)
.
This includes:
1. The usage of `Attributes` to specify ALL ATTRIBUTES that a class can have and a brief (or long, if needed) description.
Also, `__init__` parameters should be specified as `Parameters` **on the class docstring**, _rather than under_ `__init__`. Note that this can be omitted if the parameters and the attributes are the same (i.e., dataclass) - priority should be given to the `Attributes` section, in this case, which must **always be present**, unless the class specifies no attributes at all. (See more on Parameters in number 2 of this list.)
Example:
class MyClass:
"""My cool class. Long or short (whatever is more appropriate) description here.
Parameters
----------
name
The class's name.
id
The class's id.
mobj
The mobject linked to this instance. Defaults to \`Mobject()\` \\
(is set to that if \`None\` is specified).
Attributes
----------
name
The user's name.
id
The user's id.
singleton
Something.
mobj
The mobject linked to this instance.
"""
def \_\_init\_\_(name: str, id: int, singleton: MyClass, mobj: Mobject \= None): ...
2. The usage of `Parameters` on functions to specify how every parameter works and what it does. This should be excluded if the function has no parameters. Note that you **should not** specify the default value of the parameter on the type. On the documentation render, this is already specified on the function’s signature. If you need to indicate a further consequence of value omission or simply want to specify it on the docs, make sure to **specify it in the parameter’s DESCRIPTION**.
See an example on list item 4.
Note
When documenting varargs (args and kwargs), make sure to document them by listing the possible types of each value specified, like this:
Parameters
\----------
args
The args specified can be either an int or a float.
kwargs
The kwargs specified can only be a float.
Note that, if the kwargs expect specific values, those can be specified in a section such as `Other Parameters`:
Other Parameters
\----------------
kwarg\_param\_1
Parameter documentation here
(etc)
3. The usage of `Returns` to indicate what is the type of this function’s return value and what exactly it returns (i.e., a brief - or long, if needed - description of what this function returns). Can be omitted if the function does not explicitly return (i.e., always returns `None` because `return` is never specified, and it is very clear why this function does not return at all). In all other cases, it should be specified.
See an example on list item 4.
4. The usage of `Examples` in order to specify an example of usage of a function **is highly encouraged** and, in general, should be specified for _every function_ unless its usage is **extremely obvious**, which can be debatable. Even if it is, it’s always a good idea to add an example in order to give a better orientation to the documentation user. Use the following format for Python code:
::
# python code here
Note
Also, if this is a video- or animation-related change, please try to add an example GIF or video if possible for demonstration purposes.
Make sure to be as explicit as possible in your documentation. We all want the users to have an easier time using this library.
Example:
def my\_function(
thing: int,
other: np.ndarray,
name: str,
\*,
d: "SomeClassFromFarAway",
test: Optional\[int\] \= 45
) \-> "EpicClassInThisFile": \# typings are optional for now
"""My cool function. Builds and modifies an :class:\`EpicClassInThisFile\` instance with the given
parameters.
Parameters
----------
thing
Specifies the index of life.
other
Specifies something cool.
name
Specifies my name.
d
Sets thing D to this value.
test
Defines the number of times things should be tested. \\
Defaults to 45, because that is almost the meaning of life.
Returns
-------
:class:\`EpicClassInThisFile\`
The generated EpicClass with the specified attributes and modifications.
Examples
--------
Normal usage::
my\_function(5, np.array(\[1, 2, 3\]), "Chelovek", d=SomeClassFromFarAway(cool=True), test=5)
"""
\# code...
pass
---
# Adding Examples - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/docs/examples.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/docs/examples.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/docs/examples.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/docs/examples.rst "Edit this page")
Adding Examples[¶](https://docs.manim.community/en/stable/contributing/docs/examples.html#adding-examples "Link to this heading")
==================================================================================================================================
This is a page for adding examples to the documentation. Here are some guidelines you should follow before you publish your examples.
Guidelines for examples[¶](https://docs.manim.community/en/stable/contributing/docs/examples.html#guidelines-for-examples "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------------
Everybody is welcome to contribute examples to the documentation. Since straightforward examples are a great resource for quickly learning manim, here are some guidelines.
What makes a great example[¶](https://docs.manim.community/en/stable/contributing/docs/examples.html#what-makes-a-great-example "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------------------
Note
As soon as a new version of manim is released, the documentation will be a snapshot of that version. Examples contributed after the release will only be shown in the latest documentation.
* Examples should be ready to copy and paste for use.
* Examples should be brief yet still easy to understand.
* Examples don’t require the `from manim import *` statement, this will be added automatically when the docs are built.
* There should be a balance of animated and non-animated examples.
* As manim makes animations, we can include lots of animated examples; however, our RTD has a maximum 20 minutes to build. Animated examples should only be used when necessary, as last frame examples render faster.
* Lots of examples (e.g. size of a plot-axis, setting opacities, making texts, etc.) will also work as images. It is a lot more convenient to see the end product immediately instead of waiting for an animation to reveal it.
* Please ensure the examples run on the current main branch when you contribute an example.
* If the functions used are confusing for people, make sure to add comments in the example to explain what they do.
How examples are structured[¶](https://docs.manim.community/en/stable/contributing/docs/examples.html#how-examples-are-structured "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------------------------------------
* Examples can be organized into chapters and subchapters.
* When you create examples, the beginning example chapter should focus on only one functionality. When the functionality is simple, multiple ideas can be illustrated under a single example.
* As soon as simple functionalities are explained, the chapter may include more complex examples which build on the simpler ideas.
### Writing examples[¶](https://docs.manim.community/en/stable/contributing/docs/examples.html#writing-examples "Link to this heading")
When you want to add/edit examples, they can be found in the `docs/source/` directory, or directly in the manim source code (e.g. `manim/mobject/mobject.py`). The examples are written in `rst` format and use the manim directive (see [`manim.utils.docbuild.manim_directive`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.html#module-manim.utils.docbuild.manim_directive "manim.utils.docbuild.manim_directive")
), `.. manim::`. Every example is in its own block, and looks like this:
Formulas
\========
.. manim:: Formula1
:save\_last\_frame:
class Formula1(Scene):
def construct(self):
t = MathTex(r"\\int\_a^b f'(x) dx = f(b) - f(a)")
self.add(t)
self.wait(1)
In the building process of the docs, all `rst` files are scanned, and the manim directive (`.. manim::`) blocks are identified as scenes that will be run by the current version of manim. Here is the syntax:
* `.. manim:: [SCENE_NAME]` has no indentation and `SCENE_NAME` refers to the name of the class below.
* The flags are followed in the next line (no blank line here!), with the indentation level of one tab.
All possible flags can be found at [`manim.utils.docbuild.manim_directive`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.html#module-manim.utils.docbuild.manim_directive "manim.utils.docbuild.manim_directive")
.
In the example above, the `Formula1` following `.. manim::` is the scene that the directive expects to render; thus, in the python code, the class has the same name: `class Formula1(Scene)`.
Note
Sometimes, when you reload an example in your browser, it has still the old website somewhere in its cache. If this is the case, delete the website cache, or open a new incognito tab in your browser, then the latest docs should be shown. **Only for locally built documentation:** If this still doesn’t work, you may need to delete the contents of `docs/source/references` before rebuilding the documentation.
---
# typing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.typing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.typing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.typing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.typing.rst "Edit this page")
typing[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#module-manim.typing "Link to this heading")
=========================================================================================================================
Custom type definitions used in Manim.
Note for developers
Around the source code there are multiple strings which look like this:
'''
\[CATEGORY\]
'''
All type aliases defined under those strings will be automatically classified under that category.
If you need to define a new category, respect the format described above.
Type Aliases
### Primitive data types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#primitive_data_types "Link to this heading")
class ManimFloat[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimFloat "Link to this definition")
np.float64
A double-precision floating-point value (64 bits, or 8 bytes), according to the IEEE 754 standard.
class ManimInt[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimInt "Link to this definition")
np.int64
A long integer (64 bits, or 8 bytes).
It can take values between \\(-2^{63}\\) and \\(+2^{63} - 1\\), which expressed in base 10 is a range between around \\(-9.223 \\cdot 10^{18}\\) and \\(+9.223 \\cdot 10^{18}\\).
### Color types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#color_types "Link to this heading")
class ManimColorDType[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorDType "Link to this definition")
[`ManimFloat`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimFloat "manim.typing.ManimFloat")
Data type used in [`ManimColorInternal`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorInternal "manim.typing.ManimColorInternal")
: a double-precision float between 0 and 1.
class FloatRGB[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB "Link to this definition")
NDArray\[[`ManimColorDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorDType "manim.typing.ManimColorDType")\
\]
`shape: (3,)`
A `numpy.ndarray` of 3 floats between 0 and 1, representing a color in RGB format.
Its components describe, in order, the intensity of Red, Green, and Blue in the represented color.
class FloatRGBLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBLike "Link to this definition")
[`FloatRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB "manim.typing.FloatRGB")
| tuple\[float, float, float\]
`shape: (3,)`
An array of 3 floats between 0 and 1, representing a color in RGB format.
This represents anything which can be converted to a [`FloatRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB "manim.typing.FloatRGB")
NumPy array.
class FloatRGB\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB_Array "Link to this definition")
NDArray\[[`ManimColorDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorDType "manim.typing.ManimColorDType")\
\]
`shape: (M, 3)`
A `numpy.ndarray` of many rows of 3 floats representing RGB colors.
class FloatRGBLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBLike_Array "Link to this definition")
[`FloatRGB_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB_Array "manim.typing.FloatRGB_Array")
| Sequence\[[`FloatRGBLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBLike "manim.typing.FloatRGBLike")\
\]
`shape: (M, 3)`
An array of many rows of 3 floats representing RGB colors.
This represents anything which can be converted to a [`FloatRGB_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB_Array "manim.typing.FloatRGB_Array")
NumPy array.
class IntRGB[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGB "Link to this definition")
NDArray\[[`ManimInt`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimInt "manim.typing.ManimInt")\
\]
`shape: (3,)`
A `numpy.ndarray` of 3 integers between 0 and 255, representing a color in RGB format.
Its components describe, in order, the intensity of Red, Green, and Blue in the represented color.
class IntRGBLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGBLike "Link to this definition")
[`IntRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGB "manim.typing.IntRGB")
| tuple\[int, int, int\]
`shape: (3,)`
An array of 3 integers between 0 and 255, representing a color in RGB format.
This represents anything which can be converted to an [`IntRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGB "manim.typing.IntRGB")
NumPy array.
class FloatRGBA[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA "Link to this definition")
NDArray\[[`ManimColorDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorDType "manim.typing.ManimColorDType")\
\]
`shape: (4,)`
A `numpy.ndarray` of 4 floats between 0 and 1, representing a color in RGBA format.
Its components describe, in order, the intensity of Red, Green, Blue and Alpha (opacity) in the represented color.
class FloatRGBALike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBALike "Link to this definition")
[`FloatRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA "manim.typing.FloatRGBA")
| tuple\[float, float, float, float\]
`shape: (4,)`
An array of 4 floats between 0 and 1, representing a color in RGBA format.
This represents anything which can be converted to a [`FloatRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA "manim.typing.FloatRGBA")
NumPy array.
class FloatRGBA\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA_Array "Link to this definition")
NDArray\[[`ManimColorDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorDType "manim.typing.ManimColorDType")\
\]
`shape: (M, 4)`
A `numpy.ndarray` of many rows of 4 floats representing RGBA colors.
class FloatRGBALike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBALike_Array "Link to this definition")
[`FloatRGBA_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA_Array "manim.typing.FloatRGBA_Array")
| Sequence\[[`FloatRGBALike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBALike "manim.typing.FloatRGBALike")\
\]
`shape: (M, 4)`
An array of many rows of 4 floats representing RGBA colors.
This represents anything which can be converted to a [`FloatRGBA_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA_Array "manim.typing.FloatRGBA_Array")
NumPy array.
class IntRGBA[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGBA "Link to this definition")
NDArray\[[`ManimInt`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimInt "manim.typing.ManimInt")\
\]
`shape: (4,)`
A `numpy.ndarray` of 4 integers between 0 and 255, representing a color in RGBA format.
Its components describe, in order, the intensity of Red, Green, Blue and Alpha (opacity) in the represented color.
class IntRGBALike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGBALike "Link to this definition")
[`IntRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGBA "manim.typing.IntRGBA")
| tuple\[int, int, int, int\]
`shape: (4,)`
An array of 4 integers between 0 and 255, representing a color in RGBA format.
This represents anything which can be converted to an [`IntRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.IntRGBA "manim.typing.IntRGBA")
NumPy array.
class FloatHSV[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSV "Link to this definition")
[`FloatRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB "manim.typing.FloatRGB")
`shape: (3,)`
A `numpy.ndarray` of 3 floats between 0 and 1, representing a color in HSV (or HSB) format.
Its components describe, in order, the Hue, Saturation and Value (or Brightness) in the represented color.
class FloatHSVLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSVLike "Link to this definition")
[`FloatRGBLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBLike "manim.typing.FloatRGBLike")
`shape: (3,)`
An array of 3 floats between 0 and 1, representing a color in HSV (or HSB) format.
This represents anything which can be converted to a [`FloatHSV`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSV "manim.typing.FloatHSV")
NumPy array.
class FloatHSVA[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSVA "Link to this definition")
[`FloatRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA "manim.typing.FloatRGBA")
`shape: (4,)`
A `numpy.ndarray` of 4 floats between 0 and 1, representing a color in HSVA (or HSBA) format.
Its components describe, in order, the Hue, Saturation and Value (or Brightness) in the represented color.
class FloatHSVALike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSVALike "Link to this definition")
[`FloatRGBALike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBALike "manim.typing.FloatRGBALike")
`shape: (4,)`
An array of 4 floats between 0 and 1, representing a color in HSVA (or HSBA) format.
This represents anything which can be converted to a [`FloatHSVA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSVA "manim.typing.FloatHSVA")
NumPy array.
class FloatHSL[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSL "Link to this definition")
[`FloatRGB`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGB "manim.typing.FloatRGB")
`shape: (3,)`
A `numpy.ndarray` of 3 floats between 0 and 1, representing a color in HSL format.
Its components describe, in order, the Hue, Saturation and Lightness in the represented color.
class FloatHSLLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSLLike "Link to this definition")
[`FloatRGBLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBLike "manim.typing.FloatRGBLike")
`shape: (3,)`
An array of 3 floats between 0 and 1, representing a color in HSL format.
This represents anything which can be converted to a [`FloatHSL`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatHSL "manim.typing.FloatHSL")
NumPy array.
class ManimColorInternal[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimColorInternal "Link to this definition")
[`FloatRGBA`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBA "manim.typing.FloatRGBA")
`shape: (4,)`
Internal color representation used by [`ManimColor`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
, following the RGBA format.
It is a `numpy.ndarray` consisting of 4 floats between 0 and 1, describing respectively the intensities of Red, Green, Blue and Alpha (opacity) in the represented color.
### Point types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#point_types "Link to this heading")
class PointDType[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "Link to this definition")
[`ManimFloat`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimFloat "manim.typing.ManimFloat")
Default type for arrays representing points: a double-precision floating point value.
class Point2D[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (2,)`
A NumPy array representing a 2-dimensional point: `[float, float]`.
class Point2DLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike "Link to this definition")
[`Point2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
| tuple\[float, float\]
`shape: (2,)`
A 2-dimensional point: `[float, float]`.
This represents anything which can be converted to a [`Point2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
NumPy array.
class Point2D\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, 2)`
A NumPy array representing a sequence of [`Point2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D "manim.typing.Point2D")
objects: `[[float, float], ...]`.
class Point2DLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike_Array "Link to this definition")
[`Point2D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "manim.typing.Point2D_Array")
| Sequence\[[`Point2DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike "manim.typing.Point2DLike")\
\]
`shape: (M, 2)`
An array of [`Point2DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2DLike "manim.typing.Point2DLike")
objects: `[[float, float], ...]`.
This represents anything which can be converted to a [`Point2D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point2D_Array "manim.typing.Point2D_Array")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class Point3D[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (3,)`
A NumPy array representing a 3-dimensional point: `[float, float, float]`.
class Point3DLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "Link to this definition")
[`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
| tuple\[float, float, float\]
`shape: (3,)`
A 3-dimensional point: `[float, float, float]`.
This represents anything which can be converted to a [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
NumPy array.
class Point3D\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, 3)`
A NumPy array representing a sequence of [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
objects: `[[float, float, float], ...]`.
class Point3DLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
| Sequence\[[`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
\]
`shape: (M, 3)`
An array of [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
objects: `[[float, float, float], ...]`.
This represents anything which can be converted to a [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class PointND[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (N,)`
A NumPy array representing an N-dimensional point: `[float, ...]`.
class PointNDLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointNDLike "Link to this definition")
[`PointND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND "manim.typing.PointND")
| Sequence\[float\]
`shape: (N,)`
An N-dimensional point: `[float, ...]`.
This represents anything which can be converted to a [`PointND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND "manim.typing.PointND")
NumPy array.
class PointND\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, N)`
A NumPy array representing a sequence of [`PointND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND "manim.typing.PointND")
objects: `[[float, ...], ...]`.
class PointNDLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointNDLike_Array "Link to this definition")
[`PointND_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND_Array "manim.typing.PointND_Array")
| Sequence\[[`PointNDLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointNDLike "manim.typing.PointNDLike")\
\]
`shape: (M, N)`
An array of [`PointNDLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointNDLike "manim.typing.PointNDLike")
objects: `[[float, ...], ...]`.
This represents anything which can be converted to a [`PointND_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND_Array "manim.typing.PointND_Array")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
### Vector types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#vector_types "Link to this heading")
class Vector2D[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (2,)`
A NumPy array representing a 2-dimensional vector: `[float, float]`.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
or [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
VMobjects!
class Vector2DLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2DLike "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | tuple\[float, float\]
`shape: (2,)`
A 2-dimensional vector: `[float, float]`.
This represents anything which can be converted to a [`Vector2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "manim.typing.Vector2D")
NumPy array.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
or [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
VMobjects!
class Vector2D\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, 2)`
A NumPy array representing a sequence of [`Vector2D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D "manim.typing.Vector2D")
objects: `[[float, float], ...]`.
class Vector2DLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2DLike_Array "Link to this definition")
[`Vector2D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D_Array "manim.typing.Vector2D_Array")
| Sequence\[[`Vector2DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2DLike "manim.typing.Vector2DLike")\
\]
`shape: (M, 2)`
An array of [`Vector2DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2DLike "manim.typing.Vector2DLike")
objects: `[[float, float], ...]`.
This represents anything which can be converted to a [`Vector2D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector2D_Array "manim.typing.Vector2D_Array")
NumPy array.
class Vector3D[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (3,)`
A NumPy array representing a 3-dimensional vector: `[float, float, float]`.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
or [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D")
VMobjects!
class Vector3DLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | tuple\[float, float, float\]
`shape: (3,)`
A 3-dimensional vector: `[float, float, float]`.
This represents anything which can be converted to a [`Vector3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
NumPy array.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
or [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D")
VMobjects!
class Vector3D\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, 3)`
An NumPy array representing a sequence of [`Vector3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
objects: `[[float, float, float], ...]`.
class Vector3DLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | Sequence\[[`Vector3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")\
\]
`shape: (M, 3)`
An array of [`Vector3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
objects: `[[float, float, float], ...]`.
This represents anything which can be converted to a [`Vector3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D_Array "manim.typing.Vector3D_Array")
NumPy array.
class VectorND[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape (N,)`
A NumPy array representing an \\(N\\)\-dimensional vector: `[float, ...]`.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
VMobject! This type alias is named “VectorND” instead of “Vector” to avoid potential name collisions.
class VectorNDLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorNDLike "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | Sequence\[float\]
`shape (N,)`
An \\(N\\)\-dimensional vector: `[float, ...]`.
This represents anything which can be converted to a [`VectorND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND "manim.typing.VectorND")
NumPy array.
Caution
Do not confuse with the [`Vector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector "manim.mobject.geometry.line.Vector")
VMobject! This type alias is named “VectorND” instead of “Vector” to avoid potential name collisions.
class VectorND\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape (M, N)`
A NumPy array representing a sequence of [`VectorND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND "manim.typing.VectorND")
objects: `[[float, ...], ...]`.
class VectorNDLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorNDLike_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | Sequence\[[`VectorNDLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorNDLike "manim.typing.VectorNDLike")\
\]
`shape (M, N)`
An array of [`VectorNDLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorNDLike "manim.typing.VectorNDLike")
objects: `[[float, ...], ...]`.
This represents anything which can be converted to a [`VectorND_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.VectorND_Array "manim.typing.VectorND_Array")
NumPy array.
class RowVector[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.RowVector "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (1, N)`
A row vector: `[[float, ...]]`.
class ColVector[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ColVector "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (N, 1)`
A column vector: `[[float], [float], ...]`.
### Matrix types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#matrix_types "Link to this heading")
class MatrixMN[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MatrixMN "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (M, N)`
A matrix: `[[float, ...], [float, ...], ...]`.
class Zeros[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Zeros "Link to this definition")
[`MatrixMN`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MatrixMN "manim.typing.MatrixMN")
`shape: (M, N)`
A [`MatrixMN`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MatrixMN "manim.typing.MatrixMN")
filled with zeros, typically created with `numpy.zeros((M, N))`.
### Bézier types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#b%C3%A9zier_types "Link to this heading")
class QuadraticBezierPoints[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (3, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of three 3D control points for a single quadratic Bézier curve: `[[float, float, float], [float, float, float], [float, float, float]]`.
class QuadraticBezierPointsLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPointsLike "Link to this definition")
[`QuadraticBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints "manim.typing.QuadraticBezierPoints")
| tuple\[[`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
\]
`shape: (3, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of three 3D control points for a single quadratic Bézier curve: `[[float, float, float], [float, float, float], [float, float, float]]`.
This represents anything which can be converted to a [`QuadraticBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints "manim.typing.QuadraticBezierPoints")
NumPy array.
class QuadraticBezierPoints\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (N, 3, 3)`
A NumPy array containing \\(N\\) [`QuadraticBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints "manim.typing.QuadraticBezierPoints")
objects: `[[[float, float, float], [float, float, float], [float, float, float]], ...]`.
class QuadraticBezierPointsLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPointsLike_Array "Link to this definition")
[`QuadraticBezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints_Array "manim.typing.QuadraticBezierPoints_Array")
| Sequence\[[`QuadraticBezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPointsLike "manim.typing.QuadraticBezierPointsLike")\
\]
`shape: (N, 3, 3)`
A sequence of \\(N\\) [`QuadraticBezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPointsLike "manim.typing.QuadraticBezierPointsLike")
objects: `[[[float, float, float], [float, float, float], [float, float, float]], ...]`.
This represents anything which can be converted to a [`QuadraticBezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPoints_Array "manim.typing.QuadraticBezierPoints_Array")
NumPy array.
class QuadraticBezierPath[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPath "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (3*N, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of \\(3N\\) points, where each one of the \\(N\\) consecutive blocks of 3 points represents a quadratic Bézier curve: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class QuadraticBezierPathLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPathLike "Link to this definition")
[`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
`shape: (3*N, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of \\(3N\\) points, where each one of the \\(N\\) consecutive blocks of 3 points represents a quadratic Bézier curve: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`QuadraticBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPath "manim.typing.QuadraticBezierPath")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class QuadraticSpline[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticSpline "Link to this definition")
[`QuadraticBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPath "manim.typing.QuadraticBezierPath")
`shape: (3*N, 3)`
A special case of [`QuadraticBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPath "manim.typing.QuadraticBezierPath")
where all the \\(N\\) quadratic Bézier curves are connected, forming a quadratic spline: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class QuadraticSplineLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticSplineLike "Link to this definition")
[`QuadraticBezierPathLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPathLike "manim.typing.QuadraticBezierPathLike")
`shape: (3*N, 3)`
A special case of [`QuadraticBezierPathLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticBezierPathLike "manim.typing.QuadraticBezierPathLike")
where all the \\(N\\) quadratic Bézier curves are connected, forming a quadratic spline: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`QuadraticSpline`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.QuadraticSpline "manim.typing.QuadraticSpline")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class CubicBezierPoints[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (4, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of four 3D control points for a single cubic Bézier curve: `[[float, float, float], [float, float, float], [float, float, float], [float, float, float]]`.
class CubicBezierPointsLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPointsLike "Link to this definition")
[`CubicBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints "manim.typing.CubicBezierPoints")
| tuple\[[`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
\]
`shape: (4, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of 4 control points for a single cubic Bézier curve: `[[float, float, float], [float, float, float], [float, float, float], [float, float, float]]`.
This represents anything which can be converted to a [`CubicBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints "manim.typing.CubicBezierPoints")
NumPy array.
class CubicBezierPoints\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (N, 4, 3)`
A NumPy array containing \\(N\\) [`CubicBezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints "manim.typing.CubicBezierPoints")
objects: `[[[float, float, float], [float, float, float], [float, float, float], [float, float, float]], ...]`.
class CubicBezierPointsLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPointsLike_Array "Link to this definition")
[`CubicBezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints_Array "manim.typing.CubicBezierPoints_Array")
| Sequence\[[`CubicBezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPointsLike "manim.typing.CubicBezierPointsLike")\
\]
`shape: (N, 4, 3)`
A sequence of \\(N\\) [`CubicBezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPointsLike "manim.typing.CubicBezierPointsLike")
objects: `[[[float, float, float], [float, float, float], [float, float, float], [float, float, float]], ...]`.
This represents anything which can be converted to a [`CubicBezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPoints_Array "manim.typing.CubicBezierPoints_Array")
NumPy array.
class CubicBezierPath[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPath "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (4*N, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of \\(4N\\) points, where each one of the \\(N\\) consecutive blocks of 4 points represents a cubic Bézier curve: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class CubicBezierPathLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPathLike "Link to this definition")
[`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
`shape: (4*N, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of \\(4N\\) points, where each one of the \\(N\\) consecutive blocks of 4 points represents a cubic Bézier curve: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`CubicBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPath "manim.typing.CubicBezierPath")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class CubicSpline[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicSpline "Link to this definition")
[`CubicBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPath "manim.typing.CubicBezierPath")
`shape: (4*N, 3)`
A special case of [`CubicBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPath "manim.typing.CubicBezierPath")
where all the \\(N\\) cubic Bézier curves are connected, forming a quadratic spline: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class CubicSplineLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicSplineLike "Link to this definition")
[`CubicBezierPathLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPathLike "manim.typing.CubicBezierPathLike")
`shape: (4*N, 3)`
A special case of [`CubicBezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicBezierPath "manim.typing.CubicBezierPath")
where all the \\(N\\) cubic Bézier curves are connected, forming a quadratic spline: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`CubicSpline`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.CubicSpline "manim.typing.CubicSpline")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class BezierPoints[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (PPC, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of \\(\\text{PPC}\\) control points (\\(\\text{PPC: Points Per Curve} = n + 1\\)) for a single \\(n\\)\-th degree Bézier curve: `[[float, float, float], ...]`.
Please refer to the documentation of the function you are using for further type information.
class BezierPointsLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPointsLike "Link to this definition")
[`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
`shape: (PPC, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of \\(\\text{PPC}\\) control points (\\(\\text{PPC: Points Per Curve} = n + 1\\)) for a single \\(n\\)\-th degree Bézier curve: `[[float, float, float], ...]`.
This represents anything which can be converted to a [`BezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints "manim.typing.BezierPoints")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class BezierPoints\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints_Array "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\]
`shape: (N, PPC, 3)`
A NumPy array of \\(N\\) [`BezierPoints`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints "manim.typing.BezierPoints")
objects containing \\(\\text{PPC}\\) [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
objects each (\\(\\text{PPC: Points Per Curve} = n + 1\\)): `[[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class BezierPointsLike\_Array[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPointsLike_Array "Link to this definition")
[`BezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints_Array "manim.typing.BezierPoints_Array")
| Sequence\[[`BezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPointsLike "manim.typing.BezierPointsLike")\
\]
`shape: (N, PPC, 3)`
A sequence of \\(N\\) [`BezierPointsLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPointsLike "manim.typing.BezierPointsLike")
objects containing \\(\\text{PPC}\\) [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
objects each (\\(\\text{PPC: Points Per Curve} = n + 1\\)): `[[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`BezierPoints_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPoints_Array "manim.typing.BezierPoints_Array")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class BezierPath[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "Link to this definition")
[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
`shape: (PPC*N, 3)`
A [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
of \\(\\text{PPC} \\cdot N\\) points, where each one of the \\(N\\) consecutive blocks of \\(\\text{PPC}\\) control points (\\(\\text{PPC: Points Per Curve} = n + 1\\)) represents a Bézier curve of \\(n\\)\-th degree: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class BezierPathLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPathLike "Link to this definition")
[`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
`shape: (PPC*N, 3)`
A [`Point3DLike_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
of \\(\\text{PPC} \\cdot N\\) points, where each one of the \\(N\\) consecutive blocks of \\(\\text{PPC}\\) control points (\\(\\text{PPC: Points Per Curve} = n + 1\\)) represents a Bézier curve of \\(n\\)\-th degree: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`BezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "manim.typing.BezierPath")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class Spline[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Spline "Link to this definition")
[`BezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "manim.typing.BezierPath")
`shape: (PPC*N, 3)`
A special case of [`BezierPath`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPath "manim.typing.BezierPath")
where all the \\(N\\) Bézier curves consisting of \\(\\text{PPC}\\) [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
objects (\\(\\text{PPC: Points Per Curve} = n + 1\\)) are connected, forming an \\(n\\)\-th degree spline: `[[float, float, float], ...], ...]`.
Please refer to the documentation of the function you are using for further type information.
class SplineLike[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.SplineLike "Link to this definition")
[`BezierPathLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPathLike "manim.typing.BezierPathLike")
`shape: (PPC*N, 3)`
A special case of [`BezierPathLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.BezierPathLike "manim.typing.BezierPathLike")
where all the \\(N\\) Bézier curves consisting of \\(\\text{PPC}\\) [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
objects (\\(\\text{PPC: Points Per Curve} = n + 1\\)) are connected, forming an \\(n\\)\-th degree spline: `[[float, float, float], ...], ...]`.
This represents anything which can be converted to a [`Spline`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Spline "manim.typing.Spline")
NumPy array.
Please refer to the documentation of the function you are using for further type information.
class FlatBezierPoints[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FlatBezierPoints "Link to this definition")
NDArray\[[`PointDType`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointDType "manim.typing.PointDType")\
\] | tuple\[float, ...\]
`shape: (3*PPC*N,)`
A flattened array of Bézier control points: `[float, ...]`.
### Function types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#function_types "Link to this heading")
class FunctionOverride[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FunctionOverride "Link to this definition")
Callable
Function type returning an [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
for the specified [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
class PathFuncType[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PathFuncType "Link to this definition")
Callable\[\[[`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
, float\], [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")\
\]
Function mapping two [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
objects and an alpha value to a new [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
.
class MappingFunction[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MappingFunction "Link to this definition")
Callable\[\[[`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")\
\], [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")\
\]
A function mapping a [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
to another [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
.
class MultiMappingFunction[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.MultiMappingFunction "Link to this definition")
Callable\[\[[`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")\
\], [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")\
\]
A function mapping a [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
to another [`Point3D_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D_Array "manim.typing.Point3D_Array")
.
### Image types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#image_types "Link to this heading")
class PixelArray[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "Link to this definition")
NDArray\[[`ManimInt`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimInt "manim.typing.ManimInt")\
\]
`shape: (height, width) | (height, width, 3) | (height, width, 4)`
A rasterized image with a height of `height` pixels and a width of `width` pixels.
Every value in the array is an integer from 0 to 255.
Every pixel is represented either by a single integer indicating its lightness (for greyscale images), an `RGB_Array_Int` or an RGBA\_Array\_Int.
class GrayscalePixelArray[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.GrayscalePixelArray "Link to this definition")
[`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
`shape: (height, width)`
A 100% opaque grayscale [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
, where every pixel value is a [`ManimInt`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimInt "manim.typing.ManimInt")
indicating its lightness (black -> gray -> white).
class RGBPixelArray[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.RGBPixelArray "Link to this definition")
[`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
`shape: (height, width, 3)`
A 100% opaque [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
in color, where every pixel value is an RGB\_Array\_Int object.
class RGBAPixelArray[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.RGBAPixelArray "Link to this definition")
[`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
`shape: (height, width, 4)`
A [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
in color where pixels can be transparent. Every pixel value is an `RGBA_Array_Int` object.
### Path types[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#path_types "Link to this heading")
class StrPath[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "Link to this definition")
str | PathLike\[str\]
A string or `os.PathLike` representing a path to a directory or file.
class StrOrBytesPath[¶](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrOrBytesPath "Link to this definition")
str | bytes | PathLike\[str\] | PathLike\[bytes\]
A string, bytes or `os.PathLike` object representing a path to a directory or file.
---
# Internationalization - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/internationalization.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/internationalization.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/internationalization.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/internationalization.rst "Edit this page")
Internationalization[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#internationalization "Link to this heading")
===================================================================================================================================================
Thank you for your interest in localizing Manim! Please read the instructions below to get started. You are also encouraged, though not required, to join our [Discord server](https://manim.community/discord)
.
Signing up[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#signing-up "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------
You will first need to create an account for our project. Go to our [project homepage](https://translate.manim.community/)
and click the sign up button at the top right hand corner. Follow the instructions to create an account. After creating an account, you should return back to our homepage. Click the Manim project to contribute translations for the main library.
Contributing[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#contributing "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------
Important
Keep in mind that Manim is still a work in progress. Tutorials and documentation are always subject to change. When a developer implements a new feature, they are not forced to respect any translations. This means that parts of the translation might become outdated over time.
That being said, improving the documentation and making it more accessible is still highly encouraged. And even if your work gets outdated and requires change, you or someone else can simply adjust the translation. Your efforts are not in vain!
### Voting[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#voting "Link to this heading")
To ensure that our translations are of good quality, we use crowdsourcing and voting to approve good translations and reject bad ones. The current threshold for a translation being accepted is 3 votes; this may change as we gauge the level of activity in the community and the quality of translations.
To vote on translations, first click on a language you would like to help with, then click the “translate all” button. You should then enter the translation editor. Next to the search bar, you will see a funnel-like icon - click it and select the “Need to Be Voted” option to see translations that need to be voted on. You can then select a string on the left sidebar, view the translations at the bottom and vote with the + and - icons for good and poor translations respectively.
### Translations[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#translations "Link to this heading")
You can also help with contributing translations directly. Follow the steps above to enter the translation editor (instead of clicking “Translate all”, you may also choose to translate strings from a specific file by clicking them). Crowdin’s on-screen tutorial should guide you through the process.
Translation guidelines[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#translation-guidelines "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------------------
In general, follow the conventions for technical writing in your target language. You may want to refer to similar, high quality sources (eg. Python’s documentation in your language) for guidance. Note that code blocks, code literals, names and pseudonyms should be left unchanged.
Proofreading[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#proofreading "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------
For certain languages with a significant number of speakers within the Manim Community, an additional step of proofreading is used after crowdsourcing to further ensure the quality of our translations. Proofreaders are trusted community members who will look over and give the final approval on translations. If you would like to be a proofreader, please email [translations@manim.community](mailto:translations%40manim.community)
with the answers to the following questions:
1. What is your Crowdin username?
2. What is your Discord username (optional)?
3. What is your GitHub username (optional)?
4. List the languages you speak, and your level of fluency with them.
5. What language(s) are you applying to be a proofreader for?
6. Do you have any previous experience with translations?
7. If yes, give us more details.
8. How will you ensure the quality of translations, should you become a proofreader?
Please note that you don’t need to have prior translation experience to be a proofreader, just a commitment to maintaining a good quality of translations.
Errors[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#errors "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------
### Source errors[¶](https://docs.manim.community/en/stable/contributing/internationalization.html#source-errors "Link to this heading")
If you spot an error with a source string, report it to us by opening an [issue](https://github.com/ManimCommunity/manim/issues/new/choose)
on GitHub. Refrain from translating the string until the issue is resolved.
---
# v0.15.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.15.1-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.15.1-changelog.rst "Edit this page")
v0.15.1[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#v0-15-1 "Link to this heading")
==================================================================================================================
Date:
March 08, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 9 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Benjamin Hackl
* Nicolai Weitkemper
* Yuchen +
* ad\_chaos
The patches included in this release have been reviewed by the following contributors.
* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Naveen M K
* Raghav Goel
* ad\_chaos
* icedcoffeeee
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 9 pull requests were merged for this release.
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#enhancements "Link to this heading")
* [PR #2602](https://github.com/ManimCommunity/manim/pull/2602)
: Support groups in [`TransformMatchingTex`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingTex.html#manim.animation.transform_matching_parts.TransformMatchingTex "manim.animation.transform_matching_parts.TransformMatchingTex")
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#fixed-bugs "Link to this heading")
* [PR #2594](https://github.com/ManimCommunity/manim/pull/2594)
: Fixed render flow issues with introducer animations
* [PR #2584](https://github.com/ManimCommunity/manim/pull/2584)
: Fixed bug with invalid color type `None`
* [PR #2587](https://github.com/ManimCommunity/manim/pull/2587)
: Fixed bug with rendering Tex string that contain `%`
* [PR #2593](https://github.com/ManimCommunity/manim/pull/2593)
: Fixed bug with displaying images in Jupyter Notebooks when `config.media_embed` is set to `False`
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2570](https://github.com/ManimCommunity/manim/pull/2570)
: Refactored docstrings in [`coordinate_systems`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.html#module-manim.mobject.graphing.coordinate_systems "manim.mobject.graphing.coordinate_systems")
* [PR #2603](https://github.com/ManimCommunity/manim/pull/2603)
: Reduced the number of warnings during documentation build
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2578](https://github.com/ManimCommunity/manim/pull/2578)
: Fixed incorrect type hint for color property of [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.15.1-changelog.html#new-releases "Link to this heading")
* [PR #2596](https://github.com/ManimCommunity/manim/pull/2596)
: Prepared bugfix release v0.15.1
---
# v0.9.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.9.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.9.0-changelog.rst "Edit this page")
v0.9.0[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#v0-9-0 "Link to this heading")
===============================================================================================================
Date:
August 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#contributors "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
A total of 35 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Devin Neal
* Harivinay +
* Hugues Devimeux
* Jared Hughes +
* Jason Villanueva
* Kadatatlu Kishore +
* KingWampy
* LED Me Explain +
* Laith Bahodi
* Mohammad Al-Fetyani
* Noam Zaks
* Oliver
* PaulCMurdoch
* Raghav Prabhakar +
* Ryan McCauley
* Suhail Sherif +
* Taektiek +
* Udeshya Dhungana +
* UraniumCronorum +
* Vinh H. Pham (Vincent) +
* ccn +
* icedcoffeeee +
* sahilmakhijani +
* sparshg
The patches included in this release have been reviewed by the following contributors.
* Abhijith Muthyala
* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Devin Neal
* Harivinay
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* KingWampy
* Laith Bahodi
* Lino
* Mohammad Al-Fetyani
* Oliver
* Raghav Goel
* Suhail Sherif
* icedcoffeeee
* sahilmakhijani
* sparshg
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#pull-requests-merged "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
A total of 55 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#highlights "Link to this heading")
* [PR #1677](https://github.com/ManimCommunity/manim/pull/1677)
: Added a new [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject
This brings easy-to-use and customizable tables to Manim. Several examples for this new mobject can be found at [`the module documentation page`](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#module-manim.mobject.table "manim.mobject.table")
and its subpages.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1848](https://github.com/ManimCommunity/manim/pull/1848)
: Deprecated parameters for [`DashedLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "manim.mobject.geometry.line.DashedLine")
and [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
* `dash_spacing` is an unused parameter
* `positive_space_ratio` has been replaced with the shorter name `dashed_ratio`
* [PR #1773](https://github.com/ManimCommunity/manim/pull/1773)
: Remove all classes and functions that were deprecated until `v0.7.0` and `v0.8.0`
The classes `FadeInFrom`, `FadeOutAndShift`, `FadeOutToPoint`, `FadeInFromPoint`, `FadeInFromLarge`, `VFadeIn`, `VFadeOut`, `VFadeInThenOut` have been removed, use [`FadeIn`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeIn.html#manim.animation.fading.FadeIn "manim.animation.fading.FadeIn")
or [`FadeOut`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeOut.html#manim.animation.fading.FadeOut "manim.animation.fading.FadeOut")
with appropriate keyword arguments instead.
The classes `CircleIndicate`, `ShowCreationThenDestruction`, `AnimationOnSurroundingRectangle`, `ShowPassingFlashAround`, `ShowCreationThenDestructionAround`, `ShowCreationThenFadeAround`, `WiggleOutThenIn`, `TurnInsideOut` have been removed. Use [`Circumscribe`](https://docs.manim.community/en/stable/reference/manim.animation.indication.Circumscribe.html#manim.animation.indication.Circumscribe "manim.animation.indication.Circumscribe")
, [`ShowPassingFlash`](https://docs.manim.community/en/stable/reference/manim.animation.indication.ShowPassingFlash.html#manim.animation.indication.ShowPassingFlash "manim.animation.indication.ShowPassingFlash")
, or [`Wiggle`](https://docs.manim.community/en/stable/reference/manim.animation.indication.Wiggle.html#manim.animation.indication.Wiggle "manim.animation.indication.Wiggle")
instead.
The classes `OpenGLTexMobject` and `OpenGLTextMobject` have been removed, use [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
and [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
instead. Also, `VMobjectFromSVGPathstring` has been removed, use `SVGPathMobject` instead.
Finally, the utility functions `get_norm` and `cross` have been removed (use the corresponding Numpy methods instead), and the function `angle_between` has been replaced with `angle_between_vectors`.
* [PR #1731](https://github.com/ManimCommunity/manim/pull/1731)
: Deprecated `ParametricSurface` parameters
* `u_min` and `u_max` have been replaced by `u_range`.
* `v_min` and `v_max` have been replaced by `v_range`.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#new-features "Link to this heading")
* [PR #1780](https://github.com/ManimCommunity/manim/pull/1780)
: Allow non-numerical values to be added to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
and [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
* Added [`NumberLine.add_labels()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_labels "manim.mobject.graphing.number_line.NumberLine.add_labels")
method to [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
which accepts a dictionary of positions/values.
* [`CoordinateSystem.add_coordinates()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.add_coordinates "manim.mobject.graphing.coordinate_systems.CoordinateSystem.add_coordinates")
now accepts a dictionary too.
* [PR #1719](https://github.com/ManimCommunity/manim/pull/1719)
: Added a [`Broadcast`](https://docs.manim.community/en/stable/reference/manim.animation.specialized.Broadcast.html#manim.animation.specialized.Broadcast "manim.animation.specialized.Broadcast")
animation
* [PR #1765](https://github.com/ManimCommunity/manim/pull/1765)
: Added a static method [`Circle.from_three_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle.from_three_points "manim.mobject.geometry.arc.Circle.from_three_points")
for defining a circle from three points
* Added a new [`perpendicular_bisector()`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.perpendicular_bisector "manim.utils.space_ops.perpendicular_bisector")
function in `space_ops.py`
* [PR #1686](https://github.com/ManimCommunity/manim/pull/1686)
: Added `ParametricSurface.set_fill_by_value()`
This method enables a color gradient to be applied to a `ParametricSurface`, including the ability to define at which points the colors should be centered.
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#enhancements "Link to this heading")
* [PR #1833](https://github.com/ManimCommunity/manim/pull/1833)
: Added OpenGL compatibility for [`VDict`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VDict.html#manim.mobject.types.vectorized_mobject.VDict "manim.mobject.types.vectorized_mobject.VDict")
, `get_line_graph()` and [`FocusOn`](https://docs.manim.community/en/stable/reference/manim.animation.indication.FocusOn.html#manim.animation.indication.FocusOn "manim.animation.indication.FocusOn")
* [PR #1760](https://github.com/ManimCommunity/manim/pull/1760)
: Added `window_size` flag to manually adjust the size of the OpenGL window
Accepts a tuple in the form: `x,y`.
* [PR #1823](https://github.com/ManimCommunity/manim/pull/1823)
: Reworked [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
Rewritten the logic to generate dashes
* [PR #1808](https://github.com/ManimCommunity/manim/pull/1808)
: OpenGL renderer updates
* Adds model matrices to all OpenGLVMobjects
* Improved performance on vectorized mobject shaders
* Added updaters that are part of the scene rather than a mobject
* [PR #1787](https://github.com/ManimCommunity/manim/pull/1787)
: Made [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
apply color to the ellipsis
Made color apply to the dots when show\_ellipsis is set to true in DecimalNumber
* [PR #1775](https://github.com/ManimCommunity/manim/pull/1775)
: Let [`Create`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Create.html#manim.animation.creation.Create "manim.animation.creation.Create")
work on `OpenGLSurface`
* [PR #1757](https://github.com/ManimCommunity/manim/pull/1757)
: Added warning when there is a large number of items to hash.
* [PR #1774](https://github.com/ManimCommunity/manim/pull/1774)
: Add the `reverse` parameter to [`Write`](https://docs.manim.community/en/stable/reference/manim.animation.creation.Write.html#manim.animation.creation.Write "manim.animation.creation.Write")
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1722](https://github.com/ManimCommunity/manim/pull/1722)
: Fixed `remover=True` for [`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
* [PR #1727](https://github.com/ManimCommunity/manim/pull/1727)
: Fixed some hot reload issues and compatibility with IDEs
* Fixed interactive embed issue where it would fail when running on non-tty terminals
* Fixed issue where file observer would error after the second run as the first observer was not closed
* [PR #1844](https://github.com/ManimCommunity/manim/pull/1844)
: Fixed the oversized [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
window with the OpenGL renderer
* [PR #1821](https://github.com/ManimCommunity/manim/pull/1821)
: Fixed issues concerning `frame_center` in [`ThreeDScene`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene "manim.scene.three_d_scene.ThreeDScene")
* Changing `frame_center` in a [`ThreeDScene`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene "manim.scene.three_d_scene.ThreeDScene")
now actually changes the camera position.
* An animation with only `frame_center` animated will now be rendered properly.
* A black dot is not created at the origin once `frame_center` is animated.
* [PR #1826](https://github.com/ManimCommunity/manim/pull/1826)
: Fixed scaling issue with [`BarChart.change_bar_values()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.change_bar_values "manim.mobject.graphing.probability.BarChart.change_bar_values")
* [PR #1839](https://github.com/ManimCommunity/manim/pull/1839)
: Allow passing arguments to `.animate` with the OpenGL renderer
* [PR #1791](https://github.com/ManimCommunity/manim/pull/1791)
: [`set_z_index()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_z_index "manim.mobject.mobject.Mobject.set_z_index")
now sets all submobjects’ `z_index` value
* [PR #1792](https://github.com/ManimCommunity/manim/pull/1792)
: Fixed bug that caused dry runs to fail when using the PNG format
* [PR #1790](https://github.com/ManimCommunity/manim/pull/1790)
: Fixed an import from `manimlib`
* [PR #1782](https://github.com/ManimCommunity/manim/pull/1782)
: Fixed [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
not working properly with the OpenGL renderer
* [PR #1783](https://github.com/ManimCommunity/manim/pull/1783)
: Fixed `shuffle()` function and added [`invert()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.invert "manim.mobject.mobject.Mobject.invert")
to OpenGL
* [PR #1786](https://github.com/ManimCommunity/manim/pull/1786)
: Fixed [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
not working properly when the number of digits changes
* [PR #1763](https://github.com/ManimCommunity/manim/pull/1763)
: Fixed not being able to set some CLI flags in the configuration file
* [PR #1776](https://github.com/ManimCommunity/manim/pull/1776)
: [`CoordinateSystem.get_riemann_rectangles()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles")
now uses the graph’s range instead of the axes range
If no range specified, get\_riemann\_rectangles generates the rectangles only where the area is correctly bounded
* [PR #1770](https://github.com/ManimCommunity/manim/pull/1770)
: Rewrote `OpenGLMobject.put_start_and_end_on()` to work correctly in 3D
* [PR #1736](https://github.com/ManimCommunity/manim/pull/1736)
: Fixed [`LinearTransformationScene`](https://docs.manim.community/en/stable/reference/manim.scene.vector_space_scene.LinearTransformationScene.html#manim.scene.vector_space_scene.LinearTransformationScene "manim.scene.vector_space_scene.LinearTransformationScene")
crashing on multiple animations
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1852](https://github.com/ManimCommunity/manim/pull/1852)
: Fixed docs for `Coordinate_system.add_coordinates()` and moved :class: ~.Code example
* [PR #1807](https://github.com/ManimCommunity/manim/pull/1807)
: Updated installation instructions
* Added a warning about the incompatibility of different versions of Manim in the README
* Modified the admonition warning in the documentation
* Removed duplicated information from the README (`pip install manim` is already covered in the docs)
* [PR #1739](https://github.com/ManimCommunity/manim/pull/1739)
: Added a section on creating a custom animation to the “Manim’s building blocks” tutorial
* [PR #1835](https://github.com/ManimCommunity/manim/pull/1835)
: Updated documentation with information about reworked graphical unit test system
* [PR #1845](https://github.com/ManimCommunity/manim/pull/1845)
: Improve `ThreeDSurfacePlot` example in example gallery
* [PR #1842](https://github.com/ManimCommunity/manim/pull/1842)
: Removed instructions on installing Poetry from Developer Installation documentation, reference Poetry’s documentation instead
* [PR #1829](https://github.com/ManimCommunity/manim/pull/1829)
: Switch the order of Scoop and Chocolatey in the docs for the Windows Installation
* [PR #1827](https://github.com/ManimCommunity/manim/pull/1827)
: Added `robots.txt` to prevent old versions of documentation from showing in search results
* [PR #1819](https://github.com/ManimCommunity/manim/pull/1819)
: Removed mention of `-h` CLI flag from documentation
* [PR #1813](https://github.com/ManimCommunity/manim/pull/1813)
: Removed unused variables from tutorial
* [PR #1815](https://github.com/ManimCommunity/manim/pull/1815)
: Added codespell to the list of used linters in the contribution guidelines
* [PR #1778](https://github.com/ManimCommunity/manim/pull/1778)
: Improve sidebar structure of the documentation’s reference manual
* [PR #1749](https://github.com/ManimCommunity/manim/pull/1749)
: Added documentation and example for [`VMobject.set_fill()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.set_fill "manim.mobject.types.vectorized_mobject.VMobject.set_fill")
* [PR #1743](https://github.com/ManimCommunity/manim/pull/1743)
: Edited the developer installation instructions to include information on cloning the repository
* [PR #1706](https://github.com/ManimCommunity/manim/pull/1706)
: Rework example for [`Variable`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable "manim.mobject.text.numbers.Variable")
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #1836](https://github.com/ManimCommunity/manim/pull/1836)
: Converted all the graphical tests to the new syntax
* [PR #1802](https://github.com/ManimCommunity/manim/pull/1802)
: Refactored graphical unit testing system, and implemented multi frames tests
This PR introduces a new `@frames_comparison` decorator which allows writing simple `construct`\-like functions as tests. Control data for new tests can be easily generated by calling `pytest --set_test`.
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1830](https://github.com/ManimCommunity/manim/pull/1830)
: Be more concise about the documentation URL in the PR template
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1851](https://github.com/ManimCommunity/manim/pull/1851)
: Renamed `Tabular` to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
* [PR #1817](https://github.com/ManimCommunity/manim/pull/1817)
: Remove pillow version requirement
* [PR #1806](https://github.com/ManimCommunity/manim/pull/1806)
: Fixed spelling mistake
* [PR #1745](https://github.com/ManimCommunity/manim/pull/1745)
: Updated the BibTeX template in the README to Manim v0.9.0
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.9.0-changelog.html#new-releases "Link to this heading")
* [PR #1850](https://github.com/ManimCommunity/manim/pull/1850)
: Bump version number to `v0.9.0` and generate changelog
---
# v0.8.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.8.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.8.0-changelog.rst "Edit this page")
v0.8.0[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#v0-8-0 "Link to this heading")
===============================================================================================================
Date:
July 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#contributors "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
A total of 37 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Benjamin Hackl
* Bill Shillito +
* Darigov Research +
* Darylgolden
* Devin Neal
* Iced-Tea3
* Jan-Hendrik Müller
* Jason Villanueva
* KingWampy
* Laith Bahodi
* MathInvariance +
* Max Stoumen
* Mehmet Ali Özer +
* Michael Pilosov +
* Mohammad Al-Fetyani
* Naveen M K
* Nikhil Garuda
* Oliver
* PaulCMurdoch
* Philipp Imhof
* PipedQuintes +
* Raghav Goel
* Ryan McCauley
* Ujjayanta +
* Vagrid +
* andrehisatsuga +
* friedkeenan
* peaceheis +
* yit6 +
The patches included in this release have been reviewed by the following contributors.
* Abhijith Muthyala
* Anton Ballmaier
* Aron
* Benjamin Hackl
* Clar Fon
* Darylgolden
* Devin Neal
* Jan-Hendrik Müller
* Jason Villanueva
* KingWampy
* Laith Bahodi
* Mark Miller
* MathInvariance
* Mohammad Al-Fetyani
* Naveen M K
* Nikhil Garuda
* Oliver
* Philipp Imhof
* Raghav Goel
* Ryan McCauley
* Ujjayanta
* Vagrid
* friedkeenan
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#pull-requests-merged "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
A total of 76 pull requests were merged for this release.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1616](https://github.com/ManimCommunity/manim/pull/1616)
: Remove all functions and classes that were deprecated until `v0.6.0`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#new-features "Link to this heading")
* [PR #1716](https://github.com/ManimCommunity/manim/pull/1716)
: Rewrite stroke and fill shaders
Rewrite vectorized mobject shaders to be compatible with transformation matrices.
* [PR #1695](https://github.com/ManimCommunity/manim/pull/1695)
: Add option to justify text with [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
A new parameter `justify` is added to [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
. It can be used to justify a paragraph of text.
* [PR #1660](https://github.com/ManimCommunity/manim/pull/1660)
: Added support for `.webm` and transparency of videos in Jupyter notebooks
* Added support for generating `webm` videos via the command line flag `--format=webm`
* Added transparency support for Jupyter notebooks
* [PR #1553](https://github.com/ManimCommunity/manim/pull/1553)
: Add dearpygui integration
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#enhancements "Link to this heading")
* [PR #1728](https://github.com/ManimCommunity/manim/pull/1728)
: Improved positioning and size of the OpenGL window; added some configuration options
* [PR #1733](https://github.com/ManimCommunity/manim/pull/1733)
: Let OpenGLMobject.copy return a deep copy by default
* [PR #1735](https://github.com/ManimCommunity/manim/pull/1735)
: Metaclass compatibility for coordinate\_system.py, Code and ParametricSurface
* [PR #1585](https://github.com/ManimCommunity/manim/pull/1585)
: OpenGL compatibility via metaclass for [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
, [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
, [`Variable`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable "manim.mobject.text.numbers.Variable")
* [PR #1713](https://github.com/ManimCommunity/manim/pull/1713)
: Exit the command line interface gracefully if no scene was chosen
* [PR #1652](https://github.com/ManimCommunity/manim/pull/1652)
: Refactored [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
and [`Scene`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene "manim.scene.scene.Scene")
to no longer inherit from the abstract base class `Container`
* Moved tests in `test_container.py` for `Container` that test [`Scene`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene "manim.scene.scene.Scene")
and [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to their own files.
* Corrected various instances of incorrectly passed keyword arguments, or unused keyword arguments.
* [PR #1693](https://github.com/ManimCommunity/manim/pull/1693)
: Made the default arrowhead size for [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D")
smaller
* [PR #1678](https://github.com/ManimCommunity/manim/pull/1678)
: Allow some rate functions to assume values outside of \[0, 1\]; introduce clamping decorators
* Fixed animations so that certain rate functions (`running_start`, `wiggle`, `ease_in_back`, `ease_out_back`, `ease_in_out_back`, `ease_in_elastic`, `ease_out_elastic`, and `ease_out_elastic`) can go outside the range from 0 to 1.
* Fixed lag ratios so that they’re spaced out evenly within the time interval and the rate functions are applied to each animation individually, rather than having the rate function determine when the animation starts.
* Fixed faulty code for `ease_in_out_expo`, `ease_in_bounce`, `ease_out_bounce`, and `ease_in_out_bounce`.
* [PR #1649](https://github.com/ManimCommunity/manim/pull/1649)
: Made video file names in Jupyter notebook more readable
* [PR #1667](https://github.com/ManimCommunity/manim/pull/1667)
: Determine the default number of decimal places for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
labels automatically from the step size
As an example: If the step size is set to 0.5, labels will now show at least one decimal place.
* [PR #1608](https://github.com/ManimCommunity/manim/pull/1608)
: Color file paths in terminal; remove curly braces surrounding the file path in “Partial movie file written in…” messages
* [PR #1632](https://github.com/ManimCommunity/manim/pull/1632)
: OpenGL compatibility via metaclass: [`Group`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Group.html#manim.mobject.mobject.Group "manim.mobject.mobject.Group")
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #1740](https://github.com/ManimCommunity/manim/pull/1740)
: Fix pillow to <8.3.0
* [PR #1729](https://github.com/ManimCommunity/manim/pull/1729)
: Fix bug when using [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
with the OpenGL renderer
* [PR #1675](https://github.com/ManimCommunity/manim/pull/1675)
: Fixed ignored fill and stroke colors for [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
* [PR #1664](https://github.com/ManimCommunity/manim/pull/1664)
: Fixed accidental displacement in [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
caused by `include_numbers` / `numbers_to_include`
* [PR #1670](https://github.com/ManimCommunity/manim/pull/1670)
: Fixed missing `numpy` import in OpenGL shader example
* [PR #1636](https://github.com/ManimCommunity/manim/pull/1636)
: Fixed bugs and added examples to methods and classes in [`manim.mobject.matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.html#module-manim.mobject.matrix "manim.mobject.matrix")
* [PR #1614](https://github.com/ManimCommunity/manim/pull/1614)
: Fix tick issues and improve tick placement for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
* [PR #1593](https://github.com/ManimCommunity/manim/pull/1593)
: Un-flip output of `get_frame()` when using the OpenGL renderer
* [PR #1619](https://github.com/ManimCommunity/manim/pull/1619)
: Fix output of automatically detected LaTeX errors
* [PR #1595](https://github.com/ManimCommunity/manim/pull/1595)
: Fixed a few CLI and rendering bugs
* Corrected issue where gifs were being logged with an incorrect extension
* Fixed issue where videos were output when format was set to png
* Added logging for png output
* Added precedence handling when the `write_to_movie` flag would conflict with `--format`
* Fixed issue that caused png image output to be ignored when caching was enabled
* [PR #1635](https://github.com/ManimCommunity/manim/pull/1635)
: Added missing numpy import for `manim.mobject.probability`
* [PR #1634](https://github.com/ManimCommunity/manim/pull/1634)
: Fixed OpenGL examples for MacOS
Renamed deprecated `gl_FragColor` to `fragColor`.
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #1732](https://github.com/ManimCommunity/manim/pull/1732)
: Remove reference to `--plugins` flag
* [PR #1734](https://github.com/ManimCommunity/manim/pull/1734)
: Fix inheritance graph background color
* [PR #1698](https://github.com/ManimCommunity/manim/pull/1698)
: Added an example for [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
* [PR #1690](https://github.com/ManimCommunity/manim/pull/1690)
: Added an example for [`CoordinateSystem`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem "manim.mobject.graphing.coordinate_systems.CoordinateSystem")
* [PR #1510](https://github.com/ManimCommunity/manim/pull/1510)
: Add a tutorial for using [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
and [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
* [PR #1685](https://github.com/ManimCommunity/manim/pull/1685)
: Added an example and parameter description for [`AnnularSector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.AnnularSector.html#manim.mobject.geometry.arc.AnnularSector "manim.mobject.geometry.arc.AnnularSector")
* [PR #1687](https://github.com/ManimCommunity/manim/pull/1687)
: Updated imports in `geometry.py` and added example to [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
* [PR #1681](https://github.com/ManimCommunity/manim/pull/1681)
: Added an example for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
* [PR #1697](https://github.com/ManimCommunity/manim/pull/1697)
: Added an example for [`PGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#manim.mobject.types.point_cloud_mobject.PGroup "manim.mobject.types.point_cloud_mobject.PGroup")
* [PR #1594](https://github.com/ManimCommunity/manim/pull/1594)
: Several improvements to the documentation design and layout
* [PR #1696](https://github.com/ManimCommunity/manim/pull/1696)
: Added an example for [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
* [PR #1637](https://github.com/ManimCommunity/manim/pull/1637)
: Added an example for [`FunctionGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.FunctionGraph.html#manim.mobject.graphing.functions.FunctionGraph "manim.mobject.graphing.functions.FunctionGraph")
* [PR #1626](https://github.com/ManimCommunity/manim/pull/1626)
: Added an example for [`Prism`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "manim.mobject.three_d.three_dimensions.Prism")
* [PR #1712](https://github.com/ManimCommunity/manim/pull/1712)
: Added a second example for [`DoubleArrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DoubleArrow.html#manim.mobject.geometry.line.DoubleArrow "manim.mobject.geometry.line.DoubleArrow")
* [PR #1710](https://github.com/ManimCommunity/manim/pull/1710)
: Update copyright year in documentation to 2020-2021
* [PR #1708](https://github.com/ManimCommunity/manim/pull/1708)
: Fixed link to interactive example notebook
* [PR #1657](https://github.com/ManimCommunity/manim/pull/1657)
: Added an example for `ParametricSurface`
* [PR #1642](https://github.com/ManimCommunity/manim/pull/1642)
: Added examples and docstrings for [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart")
* [PR #1700](https://github.com/ManimCommunity/manim/pull/1700)
: Added an example for [`scale()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "manim.mobject.mobject.Mobject.scale")
* [PR #1689](https://github.com/ManimCommunity/manim/pull/1689)
: Added an example for [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
* [PR #1627](https://github.com/ManimCommunity/manim/pull/1627)
: Added an example for [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
* [PR #1569](https://github.com/ManimCommunity/manim/pull/1569)
: Added example to demonstrate differences between [`Transform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.Transform.html#manim.animation.transform.Transform "manim.animation.transform.Transform")
and [`ReplacementTransform`](https://docs.manim.community/en/stable/reference/manim.animation.transform.ReplacementTransform.html#manim.animation.transform.ReplacementTransform "manim.animation.transform.ReplacementTransform")
* [PR #1647](https://github.com/ManimCommunity/manim/pull/1647)
: Added an example for [`Sector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#manim.mobject.geometry.arc.Sector "manim.mobject.geometry.arc.Sector")
* [PR #1673](https://github.com/ManimCommunity/manim/pull/1673)
: Updated documentation examples for [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
and [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
: set `weight=BOLD` instead of `style`
* [PR #1650](https://github.com/ManimCommunity/manim/pull/1650)
: Added an example for [`ArcBetweenPoints`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.ArcBetweenPoints.html#manim.mobject.geometry.arc.ArcBetweenPoints "manim.mobject.geometry.arc.ArcBetweenPoints")
* [PR #1628](https://github.com/ManimCommunity/manim/pull/1628)
: Added an example for [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
* [PR #1646](https://github.com/ManimCommunity/manim/pull/1646)
: Added an example for [`Underline`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.Underline.html#manim.mobject.geometry.shape_matchers.Underline "manim.mobject.geometry.shape_matchers.Underline")
* [PR #1659](https://github.com/ManimCommunity/manim/pull/1659)
: Added more details to the Google Colab installation instructions
* [PR #1658](https://github.com/ManimCommunity/manim/pull/1658)
: Updated python requirement in the documentation
* [PR #1639](https://github.com/ManimCommunity/manim/pull/1639)
: Added an example for [`SampleSpace`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.SampleSpace.html#manim.mobject.graphing.probability.SampleSpace "manim.mobject.graphing.probability.SampleSpace")
* [PR #1640](https://github.com/ManimCommunity/manim/pull/1640)
: Added an example for [`Point`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point "manim.mobject.types.point_cloud_mobject.Point")
* [PR #1643](https://github.com/ManimCommunity/manim/pull/1643)
: Fixed `RightArcAngleExample` for [`Angle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Angle.html#manim.mobject.geometry.line.Angle "manim.mobject.geometry.line.Angle")
in documentation
* [PR #1617](https://github.com/ManimCommunity/manim/pull/1617)
: Visually improved an example in our tutorial
* [PR #1641](https://github.com/ManimCommunity/manim/pull/1641)
: Added an example for [`ComplexPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ComplexPlane.html#manim.mobject.graphing.coordinate_systems.ComplexPlane "manim.mobject.graphing.coordinate_systems.ComplexPlane")
* [PR #1644](https://github.com/ManimCommunity/manim/pull/1644)
: Added an example for [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
* [PR #1633](https://github.com/ManimCommunity/manim/pull/1633)
: Added an example for [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
* [PR #1630](https://github.com/ManimCommunity/manim/pull/1630)
: Added an example for [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
* [PR #1631](https://github.com/ManimCommunity/manim/pull/1631)
: Added an example for [`BulletedList`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#manim.mobject.text.tex_mobject.BulletedList "manim.mobject.text.tex_mobject.BulletedList")
* [PR #1620](https://github.com/ManimCommunity/manim/pull/1620)
: Fixed reference to command line interface help command
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #1623](https://github.com/ManimCommunity/manim/pull/1623)
: CI: branch rename: master -> main
* [PR #1621](https://github.com/ManimCommunity/manim/pull/1621)
: Revert default template and add new templates
* [PR #1573](https://github.com/ManimCommunity/manim/pull/1573)
: PR template for the manim hackathon
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #1720](https://github.com/ManimCommunity/manim/pull/1720)
: Renamed incorrect references of `master` to `main`
* [PR #1692](https://github.com/ManimCommunity/manim/pull/1692)
: Removed redundant warning in CLI parsing
* [PR #1651](https://github.com/ManimCommunity/manim/pull/1651)
: Small code cleanup for [`Polygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygram.html#manim.mobject.geometry.polygram.Polygram "manim.mobject.geometry.polygram.Polygram")
* [PR #1610](https://github.com/ManimCommunity/manim/pull/1610)
: Changed one image extension to lowercase letters
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.8.0-changelog.html#new-releases "Link to this heading")
* [PR #1738](https://github.com/ManimCommunity/manim/pull/1738)
: Preparation for v0.8.0: added changelog and bumped version number
---
# Contributing - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing.rst "Edit this page")
Contributing[¶](https://docs.manim.community/en/stable/contributing.html#contributing "Link to this heading")
==============================================================================================================
Important
Manim is currently undergoing a major refactor. In general, contributions implementing new features will not be accepted in this period. Other contributions unrelated to cleaning up the codebase may also take a longer period of time to be reviewed. This guide may quickly become outdated quickly; we highly recommend joining our [Discord server](https://www.manim.community/discord/)
to discuss any potential contributions and keep up to date with the latest developments.
Thank you for your interest in contributing to Manim! However you have decided to contribute or interact with the community, please always be civil and respect other members of the community. If you haven’t read our [code of conduct](https://docs.manim.community/en/stable/conduct.html)
, do so here. Manim is Free and Open Source Software (FOSS) for mathematical animations. As such, **we welcome everyone** who is interested in mathematics, pedagogy, computer animations, open-source, software development, and beyond. Manim accepts many kinds of contributions, some are detailed below:
* Code maintenance and development
* DevOps
* Documentation
* Developing educational content & narrative documentation
* Plugins to extend Manim functionality
* Testing (graphical, unit & video)
* Website design and development
* Translating documentation and docstrings
To get an overview of what our community is currently working on, check out [our development project board](https://github.com/orgs/ManimCommunity/projects/7/views/1)
.
Note
Please ensure that you are reading the latest version of this guide by ensuring that “latest” is selected in the version switcher.
Contributing can be confusing, so here are a few guides:
* [Manim Development Process](https://docs.manim.community/en/stable/contributing/development.html)
* [For first-time contributors](https://docs.manim.community/en/stable/contributing/development.html#for-first-time-contributors)
* [Develop your contribution](https://docs.manim.community/en/stable/contributing/development.html#develop-your-contribution)
* [Polishing Changes and Submitting a Pull Request](https://docs.manim.community/en/stable/contributing/development.html#polishing-changes-and-submitting-a-pull-request)
* [Further useful guidelines](https://docs.manim.community/en/stable/contributing/development.html#further-useful-guidelines)
* [Adding Documentation](https://docs.manim.community/en/stable/contributing/docs.html)
* [Building the documentation](https://docs.manim.community/en/stable/contributing/docs.html#building-the-documentation)
* [Sphinx library and extensions](https://docs.manim.community/en/stable/contributing/docs.html#sphinx-library-and-extensions)
* [Sphinx theme](https://docs.manim.community/en/stable/contributing/docs.html#sphinx-theme)
* [Custom Sphinx directives](https://docs.manim.community/en/stable/contributing/docs.html#custom-sphinx-directives)
* [Index](https://docs.manim.community/en/stable/contributing/docs.html#index)
* [Adding Admonitions](https://docs.manim.community/en/stable/contributing/docs/admonitions.html)
* [Adding Docstrings](https://docs.manim.community/en/stable/contributing/docs/docstrings.html)
* [Adding Examples](https://docs.manim.community/en/stable/contributing/docs/examples.html)
* [Adding References](https://docs.manim.community/en/stable/contributing/docs/references.html)
* [Typing Conventions](https://docs.manim.community/en/stable/contributing/docs/typings.html)
* [Choosing Type Hints](https://docs.manim.community/en/stable/contributing/docs/types.html)
* [Adding Tests](https://docs.manim.community/en/stable/contributing/testing.html)
* [How Manim tests](https://docs.manim.community/en/stable/contributing/testing.html#how-manim-tests)
* [How it Works](https://docs.manim.community/en/stable/contributing/testing.html#how-it-works)
* [Architecture](https://docs.manim.community/en/stable/contributing/testing.html#architecture)
* [The Main Directories](https://docs.manim.community/en/stable/contributing/testing.html#the-main-directories)
* [Adding a New Test](https://docs.manim.community/en/stable/contributing/testing.html#adding-a-new-test)
* [Unit Tests](https://docs.manim.community/en/stable/contributing/testing.html#unit-tests)
* [Graphical Unit Test](https://docs.manim.community/en/stable/contributing/testing.html#graphical-unit-test)
* [Videos tests](https://docs.manim.community/en/stable/contributing/testing.html#videos-tests)
* [Improving performance](https://docs.manim.community/en/stable/contributing/performance.html)
* [Profiling](https://docs.manim.community/en/stable/contributing/performance.html#profiling)
* [Running an animation as a script](https://docs.manim.community/en/stable/contributing/performance.html#running-an-animation-as-a-script)
* [An example: profiling with cProfile and SnakeViz](https://docs.manim.community/en/stable/contributing/performance.html#an-example-profiling-with-cprofile-and-snakeviz)
* [Internationalization](https://docs.manim.community/en/stable/contributing/internationalization.html)
* [Signing up](https://docs.manim.community/en/stable/contributing/internationalization.html#signing-up)
* [Contributing](https://docs.manim.community/en/stable/contributing/internationalization.html#contributing)
* [Voting](https://docs.manim.community/en/stable/contributing/internationalization.html#voting)
* [Translations](https://docs.manim.community/en/stable/contributing/internationalization.html#translations)
* [Translation guidelines](https://docs.manim.community/en/stable/contributing/internationalization.html#translation-guidelines)
* [Proofreading](https://docs.manim.community/en/stable/contributing/internationalization.html#proofreading)
* [Errors](https://docs.manim.community/en/stable/contributing/internationalization.html#errors)
* [Source errors](https://docs.manim.community/en/stable/contributing/internationalization.html#source-errors)
---
# v0.11.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.11.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.11.0-changelog.rst "Edit this page")
v0.11.0[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#v0-11-0 "Link to this heading")
==================================================================================================================
Date:
October 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 31 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Aathish Sivasubrahmanian
* Benjamin Hackl
* Charlie +
* Christopher Besch +
* Darylgolden
* Evan Boehs +
* GameDungeon
* Hugues Devimeux
* Jerónimo Squartini
* Laith Bahodi
* Meredith Espinosa +
* Mysaa
* Naveen M K
* Nicolai Weitkemper +
* Oliver
* Ryan McCauley
* Tim +
* icedcoffeeee
* imadjamil +
* leleogere +
* Максим Заякин +
The patches included in this release have been reviewed by the following contributors.
* Aathish Sivasubrahmanian
* Benjamin Hackl
* Charlie
* Darylgolden
* Evan Boehs
* GameDungeon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Laith Bahodi
* Mark Miller
* Mysaa
* Naveen M K
* Nicolai Weitkemper
* Oliver
* Raghav Goel
* Ryan McCauley
* Skaft
* friedkeenan
* icedcoffeeee
* leleogere
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 55 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#breaking-changes "Link to this heading")
* [PR #1990](https://github.com/ManimCommunity/manim/pull/1990)
: Changed and improved the implementation of [`CoordinateSystem.get_area()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area")
to work without Riemann rectangles
This changes how [`CoordinateSystem.get_area()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area")
is implemented. To mimic the old behavior (tiny Riemann rectangles), use [`CoordinateSystem.get_riemann_rectangles()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_riemann_rectangles")
with a small value for `dx`.
* [PR #2095](https://github.com/ManimCommunity/manim/pull/2095)
: Changed angles for polar coordinates to use math convention
This PR switches the parameter names `phi` and `theta` in `cartesian_to_spherical()` and `spherical_to_cartesian()` to align with the [usual definition in mathematics](https://user-images.githubusercontent.com/83535735/131709630-87290522-7747-4b21-9411-dd3d35ebaf0f.png)
.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#highlights "Link to this heading")
* [PR #2094](https://github.com/ManimCommunity/manim/pull/2094)
: Implemented [`ImplicitFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction "manim.mobject.graphing.functions.ImplicitFunction")
and `CoordinateSystem.get_implicit_curve()` for plotting implicit curves
An [`ImplicitFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ImplicitFunction.html#manim.mobject.graphing.functions.ImplicitFunction "manim.mobject.graphing.functions.ImplicitFunction")
that plots the points \\((x, y)\\) which satisfy some equation \\(f(x,y) = 0\\).
* [PR #2075](https://github.com/ManimCommunity/manim/pull/2075)
: Implemented [`Mobject.set_default()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_default "manim.mobject.mobject.Mobject.set_default")
, a mechanism for changing default values of keyword arguments
* [PR #1998](https://github.com/ManimCommunity/manim/pull/1998)
: Added support for Boolean Operations on VMobjects
This PR introduces boolean operations for [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
; see details and examples at [`Union`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Union.html#manim.mobject.geometry.boolean_ops.Union "manim.mobject.geometry.boolean_ops.Union")
, [`Difference`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Difference.html#manim.mobject.geometry.boolean_ops.Difference "manim.mobject.geometry.boolean_ops.Difference")
, [`Intersection`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Intersection.html#manim.mobject.geometry.boolean_ops.Intersection "manim.mobject.geometry.boolean_ops.Intersection")
and [`Exclusion`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.boolean_ops.Exclusion.html#manim.mobject.geometry.boolean_ops.Exclusion "manim.mobject.geometry.boolean_ops.Exclusion")
.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #2123](https://github.com/ManimCommunity/manim/pull/2123)
: Renamed `distance` parameter of [`ThreeDScene`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene "manim.scene.three_d_scene.ThreeDScene")
and [`ThreeDCamera`](https://docs.manim.community/en/stable/reference/manim.camera.three_d_camera.ThreeDCamera.html#manim.camera.three_d_camera.ThreeDCamera "manim.camera.three_d_camera.ThreeDCamera")
to `focal_distance`
* [PR #2102](https://github.com/ManimCommunity/manim/pull/2102)
: Deprecated `SampleSpaceScene` and `ReconfigurableScene`
* [PR #2061](https://github.com/ManimCommunity/manim/pull/2061)
: Removed deprecated `u_min`, `u_max`, `v_min`, `v_max` in [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
* [PR #2024](https://github.com/ManimCommunity/manim/pull/2024)
: Deprecated redundant methods `Mobject.rotate_in_place()`, `Mobject.scale_in_place()`, `Mobject.scale_about_point()`
* [PR #1991](https://github.com/ManimCommunity/manim/pull/1991)
: Deprecated `VMobject.get_points()`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#new-features "Link to this heading")
* [PR #2118](https://github.com/ManimCommunity/manim/pull/2118)
: Added 3D support for [`ArrowVectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField "manim.mobject.vector_field.ArrowVectorField")
and [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines")
* [PR #1469](https://github.com/ManimCommunity/manim/pull/1469)
: Added [`VMobject.proportion_from_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.proportion_from_point "manim.mobject.types.vectorized_mobject.VMobject.proportion_from_point")
to measure the proportion of points along a Bezier curve
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#enhancements "Link to this heading")
* [PR #2111](https://github.com/ManimCommunity/manim/pull/2111)
: Improved setting of OpenGL colors
* [PR #2113](https://github.com/ManimCommunity/manim/pull/2113)
: Added OpenGL compatibility to [`ThreeDScene.begin_ambient_camera_rotation()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.begin_ambient_camera_rotation "manim.scene.three_d_scene.ThreeDScene.begin_ambient_camera_rotation")
and [`ThreeDScene.move_camera()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.move_camera "manim.scene.three_d_scene.ThreeDScene.move_camera")
* [PR #2016](https://github.com/ManimCommunity/manim/pull/2016)
: Added OpenGL support for `boolean_ops`
* [PR #2084](https://github.com/ManimCommunity/manim/pull/2084)
: Added `get_highlighted_cell()` and fixed `add_highlighted_cell()`
* [PR #2013](https://github.com/ManimCommunity/manim/pull/2013)
: Removed unnecessary check in [`TransformMatchingAbstractBase`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingAbstractBase.html#manim.animation.transform_matching_parts.TransformMatchingAbstractBase "manim.animation.transform_matching_parts.TransformMatchingAbstractBase")
* [PR #1971](https://github.com/ManimCommunity/manim/pull/1971)
: Added OpenGL support for [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines")
* [PR #2041](https://github.com/ManimCommunity/manim/pull/2041)
: Added config option to enable OpenGL wireframe for debugging
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2070](https://github.com/ManimCommunity/manim/pull/2070)
: Fixed `get_frame()` when window is created
* [PR #2071](https://github.com/ManimCommunity/manim/pull/2071)
: Fixed `AnimationGroup` OpenGL compatibility
* [PR #2108](https://github.com/ManimCommunity/manim/pull/2108)
: Fixed swapped axis step values in [`NumberPlane`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.NumberPlane.html#manim.mobject.graphing.coordinate_systems.NumberPlane "manim.mobject.graphing.coordinate_systems.NumberPlane")
* [PR #2072](https://github.com/ManimCommunity/manim/pull/2072)
: Added OpenGL compatibility for [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
.
* [PR #2060](https://github.com/ManimCommunity/manim/pull/2060)
: Fixed OpenGL compatibility issue for meth:~Line.set\_opacity
* [PR #2037](https://github.com/ManimCommunity/manim/pull/2037)
: Fixed return value of `apply_complex_function()`
* [PR #2039](https://github.com/ManimCommunity/manim/pull/2039)
: Added OpenGL compatibility for `add_bases()`.
* [PR #2066](https://github.com/ManimCommunity/manim/pull/2066)
: Fixed error raised by logging when cache is full
* [PR #2026](https://github.com/ManimCommunity/manim/pull/2026)
: Fixed OpenGL shift animation for [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
* [PR #2028](https://github.com/ManimCommunity/manim/pull/2028)
: Fixed OpenGL overriding SVG fill color
* [PR #2043](https://github.com/ManimCommunity/manim/pull/2043)
: Fixed bug where [`NumberLine.add_labels()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine.add_labels "manim.mobject.graphing.number_line.NumberLine.add_labels")
cannot accept non-mobject labels
* [PR #2011](https://github.com/ManimCommunity/manim/pull/2011)
: Fixed `-a` flag for OpenGL rendering
* [PR #1994](https://github.com/ManimCommunity/manim/pull/1994)
: Fix [`input_to_graph_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_point")
when passing a line graph (from `Axes.get_line_graph()`)
* [PR #2017](https://github.com/ManimCommunity/manim/pull/2017)
: Avoided using deprecated `get_points` method and fixed `OpenGLPMPoint` color
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2131](https://github.com/ManimCommunity/manim/pull/2131)
: Copyedited the configuration tutorial in the documentation
* [PR #2120](https://github.com/ManimCommunity/manim/pull/2120)
: Changed `manim_directive` to use a clean configuration via `tempconfig`
* [PR #2122](https://github.com/ManimCommunity/manim/pull/2122)
: Fixed broken links in inheritance graphs by moving them to `reference.rst`
* [PR #2115](https://github.com/ManimCommunity/manim/pull/2115)
: Improved docstring of [`PMobject.add_points()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.add_points "manim.mobject.types.point_cloud_mobject.PMobject.add_points")
* [PR #2116](https://github.com/ManimCommunity/manim/pull/2116)
: Made type hint for `line_spacing` argument of [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
more accurate
* [PR #2117](https://github.com/ManimCommunity/manim/pull/2117)
: Changed the way the background color was set in a documentation example to avoid leaking the setting to other examples
* [PR #2101](https://github.com/ManimCommunity/manim/pull/2101)
: Added note that translation process is not ready
* [PR #2055](https://github.com/ManimCommunity/manim/pull/2055)
: Fixed parameter types of `Graph.add_edges()` and `Graph.add_vertices()`
* [PR #862](https://github.com/ManimCommunity/manim/pull/862)
: Prepared documentation for translation (still work in progress)
* [PR #2035](https://github.com/ManimCommunity/manim/pull/2035)
: Fixed broken link in README
* [PR #2020](https://github.com/ManimCommunity/manim/pull/2020)
: Corrected paths to user-wide configuration files for MacOS and Linux
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #2008](https://github.com/ManimCommunity/manim/pull/2008)
: Reuse CLI flag tests for OpenGL
* [PR #2080](https://github.com/ManimCommunity/manim/pull/2080)
: Reused [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
tests for `OpenGLMobject`
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2004](https://github.com/ManimCommunity/manim/pull/2004)
: Cancel previous workflows in the same branch in Github Actions
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2050](https://github.com/ManimCommunity/manim/pull/2050)
: Make colour aliases IDE-friendly
* [PR #2126](https://github.com/ManimCommunity/manim/pull/2126)
: Fixed whitespace in info message issued by [`SceneFileWriter.clean_cache()`](https://docs.manim.community/en/stable/reference/manim.scene.scene_file_writer.SceneFileWriter.html#manim.scene.scene_file_writer.SceneFileWriter.clean_cache "manim.scene.scene_file_writer.SceneFileWriter.clean_cache")
* [PR #2124](https://github.com/ManimCommunity/manim/pull/2124)
: Upgraded several dependencies (in particular: `skia-pathops`)
* [PR #2001](https://github.com/ManimCommunity/manim/pull/2001)
: Fixed several warnings issued by LGTM
* [PR #2064](https://github.com/ManimCommunity/manim/pull/2064)
: Removed duplicate insert shader directory
* [PR #2027](https://github.com/ManimCommunity/manim/pull/2027)
: Improved wording in info message issued by [`SceneFileWriter.clean_cache()`](https://docs.manim.community/en/stable/reference/manim.scene.scene_file_writer.SceneFileWriter.html#manim.scene.scene_file_writer.SceneFileWriter.clean_cache "manim.scene.scene_file_writer.SceneFileWriter.clean_cache")
* [PR #1968](https://github.com/ManimCommunity/manim/pull/1968)
: Sharpened Flake8 configuration and fixed resulting warnings
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.11.0-changelog.html#new-releases "Link to this heading")
* [PR #2114](https://github.com/ManimCommunity/manim/pull/2114)
: Prepared new release, `v0.11.0`
---
# v0.1.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.1.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.1.0-changelog.rst "Edit this page")
v0.1.0[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#v0-1-0 "Link to this heading")
===============================================================================================================
Date:
October 21, 2020
This is the first release of manimce after forking from 3b1b/manim. As such, developers have focused on cleaning up and refactoring the codebase while still maintaining backwards compatibility wherever possible.
New Features[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#new-features "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
### Command line[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#command-line "Link to this heading")
1. Output of ‘manim –help’ has been improved
2. Implement logging with the `rich` library and a `logger` object instead of plain ol’ prints
3. Added a flag `--dry_run`, which doesn’t write any media
4. Allow for running manim with `python3 -m manim`
5. Refactored Tex Template management. You can now use custom templates with command line args using `--tex_template`!
6. Re-add `--save_frames` flag, which will save each frame as a png
7. Re-introduce manim feature that allows you to type manim code in `stdin` if you pass a minus sign `(-)` as filename
8. Added the `--custom_folders` flag which yields a simpler output folder structure
9. Re-implement GIF export with the `-i` flag (using this flag outputs ONLY a .gif file, and no .mp4 file)
10. Added a `--verbose` flag
11. You can save the logs to a file by using `--log_to_file`
12. Read `tex_template` from config file if not specified by `--tex_template`.
13. Add experimental javascript rendering with `--use_js_renderer`
14. Add `-q/--quality [k|p|h|m|l]` flag and removed `-m/-l` flags.
15. Removed `--sound` flag
### Config system[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#config-system "Link to this heading")
1. Implement a `manim.cfg` config file system, that consolidates the global configuration, the command line argument parsing, and some of the constants defined in `constants.py`
2. Added utilities for manipulating Manim’s `.cfg` files.
3. Added a subcommand structure for easier use of utilities managing `.cfg` files
4. Also some variables have been moved from `constants.py` to the new config system:
> 1. `FRAME_HEIGHT` to `config["frame_width"]`
>
> 2. `TOP` to `config["frame_height"] / 2 * UP`
>
> 3. `BOTTOM` to `config["frame_height"] / 2 * DOWN`
>
> 4. `LEFT_SIDE` to `config["frame_width"] / 2 * LEFT`
>
> 5. `RIGHT_SIDE` to `config["frame_width"] / 2 * RIGHT`
>
> 6. `self.camera.frame_rate` to `config["frame_rate"]`
>
### Mobjects, Scenes, and Animations[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#mobjects-scenes-and-animations "Link to this heading")
1. Add customizable left and right bracket for `Matrix` mobject and `set_row_colors` method for matrix mobject
2. Add `AddTeXLetterByLetter` animation
3. Enhanced GraphScene
> 1. You can now add arrow tips to axes
>
> 2. extend axes a bit at the start and/or end
>
> 3. have invisible axes
>
> 4. highlight the area between two curves
>
4. ThreeDScene now supports 3dillusion\_camera\_rotation
5. Add `z_index` for manipulating depth of Objects on scene.
6. Add a `VDict` class: a `VDict` is to a `VGroup` what a `dict` is to a `list`
7. Added Scene-caching feature. Now, if a partial movie file is unchanged in your code, it isn’t rendered again! \[HIGHLY UNSTABLE We’re working on it ;)\]
8. Most `get_` and `set_` methods have been removed in favor of instance attributes and properties
9. The `Container` class has been made into an AbstractBaseClass, i.e. in cannot be instantiated. Instead, use one of its children classes
10. The `TextMobject` and `TexMobject` objects have been deprecated, due to their confusing names, in favour of `Tex` and `MathTex`. You can still, however, continue to use `TextMobject` and `TexMobject`, albeit with Deprecation Warnings constantly reminding you to switch.
11. Add a `Variable` class for displaying text that continuously updates to reflect the value of a python variable.
12. The `Tex` and `MathTex` objects allow you to specify a custom TexTemplate using the `template` keyword argument.
13. `VGroup` now supports printing the class names of contained mobjects and `VDict` supports printing the internal dict of mobjects
14. Add all the standard easing functions
15. `Scene` now renders when `Scene.render()` is called rather than upon instantiation.
16. `ValueTracker` now supports increment using the += operator (in addition to the already existing increment\_value method)
17. Add `PangoText` for rendering texts using Pango.
Documentation[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#documentation "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
1. Added clearer installation instructions, tutorials, examples, and API reference \[WIP\]
Fixes[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#fixes "Link to this heading")
-------------------------------------------------------------------------------------------------------------
1. Initialization of directories has been moved to `config.py`, and a bunch of bugs associated to file structure generation have been fixed
2. Nonfunctional file `media_dir.txt` has been removed
3. Nonfunctional `if` statements in `scene_file_writer.py` have been removed
4. Fix a bug where trying to render the example scenes without specifying the scene would show all scene objects in the library
5. Many `Exceptions` have been replaced for more specific exception subclasses
6. Fixed a couple of subtle bugs in `ArcBetweenPoints`
Of interest to developers[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#of-interest-to-developers "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------------
1. Python code formatting is now enforced by using the `black` tool
2. PRs now require two approving code reviews from community devs before they can be merged
3. Added tests to ensure stuff doesn’t break between commits (For developers) \[Uses Github CI, and Pytest\]
4. Add contribution guidelines (for developers)
5. Added autogenerated documentation with sphinx and autodoc/autosummary \[WIP\]
6. Made manim internally use relative imports
7. Since the introduction of the `TexTemplate` class, the files `tex_template.tex` and `ctex_template.tex` have been removed
8. Added logging tests tools.
9. Added ability to save logs in json
10. Move to Poetry.
11. Colors have moved to an Enum
Other Changes[¶](https://docs.manim.community/en/stable/changelog/0.1.0-changelog.html#other-changes "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
1. Cleanup 3b1b Specific Files
2. Rename package from manimlib to manim
3. Move all imports to `__init__`, so `from manim import *` replaces `from manimlib.imports import *`
4. Global dir variable handling has been removed. Instead `initialize_directories`, if needed, overrides the values from the cfg files at runtime.
---
# v0.1.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.1.1-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.1.1-changelog.rst "Edit this page")
v0.1.1[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#v0-1-1 "Link to this heading")
===============================================================================================================
Date:
December 1, 2020
Changes since Manim Community release v0.1.0
Plugins[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#plugins "Link to this heading")
-----------------------------------------------------------------------------------------------------------------
1. Provided a standardized method for plugin discoverability, creation, installation, and usage. See the [documentation](https://docs.manim.community/en/stable/plugins.html#plugins)
.
Fixes[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#fixes "Link to this heading")
-------------------------------------------------------------------------------------------------------------
1. JsRender is optional to install. (via [PR #697](https://github.com/ManimCommunity/manim/pull/697)
).
2. Allow importing modules from the same directory as the input file when using `manim` from the command line (via [PR #724](https://github.com/ManimCommunity/manim/pull/724)
).
3. Remove some unnecessary or unpythonic methods from [`Scene`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene "manim.scene.scene.Scene")
(`get_mobjects`, `add_mobjects_among`, `get_mobject_copies`), via [PR #758](https://github.com/ManimCommunity/manim/pull/758)
.
4. Fix formatting of [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
(via [PR #798](https://github.com/ManimCommunity/manim/pull/798)
).
Configuration[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#configuration "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
1. Removed the `skip_animations` config option and added the `Renderer.skip_animations` attribute instead (via [PR #696](https://github.com/ManimCommunity/manim/pull/696)
).
2. The global `config` dict has been replaced by a global `config` instance of the new class [`ManimConfig`](https://docs.manim.community/en/stable/reference/manim._config.utils.ManimConfig.html#manim._config.utils.ManimConfig "manim._config.utils.ManimConfig")
. This class has a dict-like API, so this should not break user code, only make it more robust. See the Configuration tutorial for details.
3. Added the option to configure a directory for external assets (via [PR #649](https://github.com/ManimCommunity/manim/pull/649)
).
Documentation[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#documentation "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
1. Add `:issue:` and `:pr:` directives for simplifying linking to issues and pull requests on GitHub (via [PR #685](https://github.com/ManimCommunity/manim/pull/685)
).
2. Add a `skip-manim` tag for skipping the `.. manim::` directive when building the documentation locally (via [PR #796](https://github.com/ManimCommunity/manim/pull/796)
).
Mobjects, Scenes, and Animations[¶](https://docs.manim.community/en/stable/changelog/0.1.1-changelog.html#mobjects-scenes-and-animations "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1. The `alignment` attribute to Tex and MathTex has been removed in favour of `tex_environment`.
2. [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
now uses Pango for rendering. `PangoText` has been removed. The old implementation is still available as a fallback as `CairoText`.
3. Variations of [`Dot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Dot.html#manim.mobject.geometry.arc.Dot "manim.mobject.geometry.arc.Dot")
have been added as [`AnnotationDot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.AnnotationDot.html#manim.mobject.geometry.arc.AnnotationDot "manim.mobject.geometry.arc.AnnotationDot")
(a bigger dot with bolder stroke) and [`LabeledDot`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.LabeledDot.html#manim.mobject.geometry.arc.LabeledDot "manim.mobject.geometry.arc.LabeledDot")
(a dot containing a label).
4. Scene.set\_variables\_as\_attrs has been removed (via [PR #692](https://github.com/ManimCommunity/manim/pull/692)
).
5. Ensure that the axes for graphs (`GraphScene`) always intersect ([PR #580](https://github.com/ManimCommunity/manim/pull/580)
).
6. Now Mobject.add\_updater does not call the newly-added updater by default (use `call_updater=True` instead) (via [PR #710](https://github.com/ManimCommunity/manim/pull/710)
)
7. VMobject now has methods to determine and change the direction of the points (via [PR #647](https://github.com/ManimCommunity/manim/pull/647)
).
8. Added BraceBetweenPoints (via [PR #693](https://github.com/ManimCommunity/manim/pull/693)
).
9. Added ArcPolygon and ArcPolygonFromArcs (via [PR #707](https://github.com/ManimCommunity/manim/pull/707)
).
10. Added Cutout (via [PR #760](https://github.com/ManimCommunity/manim/pull/760)
).
11. Added Mobject raise not implemented errors for dunder methods and implementations for VGroup dunder methods (via [PR #790](https://github.com/ManimCommunity/manim/pull/790)
).
12. Added [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
for a animated version of our logo and banner (via [PR #729](https://github.com/ManimCommunity/manim/pull/729)
)
13. The background color of a scene can now be changed reliably by setting, e.g., `self.camera.background_color = RED` (via [PR #716](https://github.com/ManimCommunity/manim/pull/716)
).
---
# debug - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.debug.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.debug.rst "Edit this page")
debug[¶](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#module-manim.utils.debug "Link to this heading")
==================================================================================================================================
Debugging utilities.
Functions
index\_labels(_mobject_, _label\_height\=0.15_, _background\_stroke\_width\=5_, _background\_stroke\_color\=ManimColor('#000000')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/debug.html#index_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#manim.utils.debug.index_labels "Link to this definition")
Returns a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
mobjects that shows the index of each submobject.
Useful for working with parts of complicated mobjects.
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject that will have its submobjects labelled.
* **label\_height** (_float_) – The height of the labels, by default 0.15.
* **background\_stroke\_width** (_float_) – The stroke width of the outline of the labels, by default 5.
* **background\_stroke\_color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The stroke color of the outline of labels.
* **kwargs** (_Any_) – Additional parameters to be passed into the :class\`~.Integer\` mobjects used to construct the labels.
Return type:
[_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: IndexLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#indexlabelsexample)

from manim import \*
class IndexLabelsExample(Scene):
def construct(self):
text \= MathTex(
"\\\\frac{d}{dx}f(x)g(x)=",
"f(x)\\\\frac{d}{dx}g(x)",
"+",
"g(x)\\\\frac{d}{dx}f(x)",
)
#index the fist term in the MathTex mob
indices \= index\_labels(text\[0\])
text\[0\]\[1\].set\_color(PURPLE\_B)
text\[0\]\[8:12\].set\_color(DARK\_BLUE)
self.add(text, indices)
class IndexLabelsExample(Scene):
def construct(self):
text = MathTex(
"\\\\frac{d}{dx}f(x)g(x)=",
"f(x)\\\\frac{d}{dx}g(x)",
"+",
"g(x)\\\\frac{d}{dx}f(x)",
)
#index the fist term in the MathTex mob
indices = index\_labels(text\[0\])
text\[0\]\[1\].set\_color(PURPLE\_B)
text\[0\]\[8:12\].set\_color(DARK\_BLUE)
self.add(text, indices)
print\_family(_mobject_, _n\_tabs\=0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/debug.html#print_family)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#manim.utils.debug.print_family "Link to this definition")
For debugging purposes
Parameters:
* **mobject** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **n\_tabs** (_int_)
Return type:
None
---
# v0.12.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.12.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.12.0-changelog.rst "Edit this page")
v0.12.0[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#v0-12-0 "Link to this heading")
==================================================================================================================
Date:
November 02, 2021
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 40 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Anima. +
* Arcstur +
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* David Yang +
* Dhananjay Goratela +
* Ethan Rooke +
* Eugene Chung +
* GameDungeon
* Gustav-Rixon +
* Jan-Hendrik Müller
* Josiah Winslow +
* Laith Bahodi
* Martmists +
* Michael Hill +
* Naveen M K
* Nick +
* NotWearingPants +
* Peeter Joot +
* Ryan McCauley
* Viicos +
* heitor +
* icedcoffeeee
* kieran-pringle +
* Виктор Виктор +
The patches included in this release have been reviewed by the following contributors.
* Alex Lembcke
* Anima.
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* David Yang
* Dhananjay Goratela
* Ethan Rooke
* Eugene Chung
* Gustav-Rixon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Laith Bahodi
* Mysaa
* Naveen M K
* Nick
* Oliver
* Ryan McCauley
* Viicos
* icedcoffeeee
* kieran-pringle
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 52 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#highlights "Link to this heading")
* [PR #1812](https://github.com/ManimCommunity/manim/pull/1812)
: Implemented logarithmic scaling for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
/ [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
This implements scaling bases that can be passed to the `scaling` keyword argument of [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
. See [`LogBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LogBase.html#manim.mobject.graphing.scale.LogBase "manim.mobject.graphing.scale.LogBase")
(for a logarithmic scale) and [`LinearBase`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.scale.LinearBase.html#manim.mobject.graphing.scale.LinearBase "manim.mobject.graphing.scale.LinearBase")
(for the default scale) for more details and examples.
* [PR #2152](https://github.com/ManimCommunity/manim/pull/2152)
: Introduced API for scene sections via [`Scene.next_section()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.next_section "manim.scene.scene.Scene.next_section")
Sections divide a scene into multiple parts, resulting in multiple output videos (when using the `--save_sections` flag). The cuts between two sections are defined by the user in the [`construct()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.construct "manim.scene.scene.Scene.construct")
method. Each section has an optional name and type, which can be used by a plugin ([see an example](https://github.com/ManimEditorProject/manim_editor)
). You can skip rendering specific sections with the `skip_animations` keyword argument.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #1926](https://github.com/ManimCommunity/manim/pull/1926)
: OpenGL: changed `submobjects` to be a property
* [PR #2245](https://github.com/ManimCommunity/manim/pull/2245)
: Removed deprecated method `get_center_point` and parameters `azimuth_label_scale`, `number_scale_value`, `label_scale`, `scale_factor`, `size`, `x_min`, `x_max`, `delta_x`, `y_min`, `y_max`, `delta_y`
* [PR #2187](https://github.com/ManimCommunity/manim/pull/2187)
: Renamed `get_graph` and its variants to [`plot()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot")
* [PR #2065](https://github.com/ManimCommunity/manim/pull/2065)
: Deprecated `FullScreenFadeRectangle` and `PictureInPictureFrame`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#new-features "Link to this heading")
* [PR #2025](https://github.com/ManimCommunity/manim/pull/2025)
: Implemented [`CoordinateSystem.input_to_graph_coords()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords "manim.mobject.graphing.coordinate_systems.CoordinateSystem.input_to_graph_coords")
and fixed [`CoordinateSystem.angle_of_tangent()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.angle_of_tangent "manim.mobject.graphing.coordinate_systems.CoordinateSystem.angle_of_tangent")
* [PR #2151](https://github.com/ManimCommunity/manim/pull/2151)
: Added option to set the input file from a config file
* [PR #2128](https://github.com/ManimCommunity/manim/pull/2128)
: Added keyword arguments `match_center`, `match_width` etc. to [`Mobject.become()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "manim.mobject.mobject.Mobject.become")
* [PR #2162](https://github.com/ManimCommunity/manim/pull/2162)
: Implemented [`MovingCamera.auto_zoom()`](https://docs.manim.community/en/stable/reference/manim.camera.moving_camera.MovingCamera.html#manim.camera.moving_camera.MovingCamera.auto_zoom "manim.camera.moving_camera.MovingCamera.auto_zoom")
for automatically zooming onto specified mobjects
* [PR #2236](https://github.com/ManimCommunity/manim/pull/2236)
: Added `skip_animations` argument to [`Scene.next_section()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.next_section "manim.scene.scene.Scene.next_section")
* [PR #2196](https://github.com/ManimCommunity/manim/pull/2196)
: Implemented [`Line3D.parallel_to()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.parallel_to "manim.mobject.three_d.three_dimensions.Line3D.parallel_to")
and [`Line3D.perpendicular_to()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.perpendicular_to "manim.mobject.three_d.three_dimensions.Line3D.perpendicular_to")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#enhancements "Link to this heading")
* [PR #2138](https://github.com/ManimCommunity/manim/pull/2138)
: Fixed example for [`coordinate_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector.coordinate_label "manim.mobject.geometry.line.Vector.coordinate_label")
and added more customization for [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
* Additional keyword arguments for [`coordinate_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Vector.html#manim.mobject.geometry.line.Vector.coordinate_label "manim.mobject.geometry.line.Vector.coordinate_label")
are passed to the constructed matrix.
* [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
now accepts a `bracket_config` keyword argument.
* [PR #2139](https://github.com/ManimCommunity/manim/pull/2139)
: Changed the color of [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
from `LIGHT_GREY` to `WHITE`
* [PR #2157](https://github.com/ManimCommunity/manim/pull/2157)
: Added [`CoordinateSystem.plot_polar_graph()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_polar_graph "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot_polar_graph")
* [PR #2243](https://github.com/ManimCommunity/manim/pull/2243)
: Fixed wasteful recursion in [`Mobject.get_merged_array()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.get_merged_array "manim.mobject.mobject.Mobject.get_merged_array")
* [PR #2205](https://github.com/ManimCommunity/manim/pull/2205)
: Improved last frame output handling for the OpenGL renderer
* [PR #2172](https://github.com/ManimCommunity/manim/pull/2172)
: Added `should_render` attribute to disable rendering mobjects
* [PR #2182](https://github.com/ManimCommunity/manim/pull/2182)
: Changed the default width of videos in Jupyter notebooks to 60%
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2244](https://github.com/ManimCommunity/manim/pull/2244)
: Fixed [`CoordinateSystem.get_area()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area "manim.mobject.graphing.coordinate_systems.CoordinateSystem.get_area")
when using few plot points and a boundary graph
* [PR #2232](https://github.com/ManimCommunity/manim/pull/2232)
: Fixed [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
stopping to update after animating additions/deletions of vertices or edges
* [PR #2142](https://github.com/ManimCommunity/manim/pull/2142)
: Fixed issue with duplicates in OpenGL family and added tests
* [PR #2168](https://github.com/ManimCommunity/manim/pull/2168)
: Fixed order of return values of [`space_ops.cartesian_to_spherical()`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.cartesian_to_spherical "manim.utils.space_ops.cartesian_to_spherical")
* [PR #2160](https://github.com/ManimCommunity/manim/pull/2160)
: Made projection shaders compatible with [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines")
* [PR #2140](https://github.com/ManimCommunity/manim/pull/2140)
: Fixed passing color lists to [`Mobject.set_color()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_color "manim.mobject.mobject.Mobject.set_color")
for the OpenGL renderer
* [PR #2211](https://github.com/ManimCommunity/manim/pull/2211)
: Fixed animations not respecting the specified rate function
* [PR #2161](https://github.com/ManimCommunity/manim/pull/2161)
: Fixed `IndexOutOfBoundsError` in TeX logging
* [PR #2148](https://github.com/ManimCommunity/manim/pull/2148)
: Fixed [`Arrow`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Arrow.html#manim.mobject.geometry.line.Arrow "manim.mobject.geometry.line.Arrow")
tip disorientation with [`Line.put_start_and_end_on()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.put_start_and_end_on "manim.mobject.geometry.line.Line.put_start_and_end_on")
* [PR #2192](https://github.com/ManimCommunity/manim/pull/2192)
: Fixed `svg_path.string_to_numbers()` sometimes returning strings
* [PR #2185](https://github.com/ManimCommunity/manim/pull/2185)
: Fixed type mismatch for height and width parameters of [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2228](https://github.com/ManimCommunity/manim/pull/2228)
: Added a new boolean operation example to the gallery
* [PR #2239](https://github.com/ManimCommunity/manim/pull/2239)
: Removed erroneous raw string from text tutorial
* [PR #2184](https://github.com/ManimCommunity/manim/pull/2184)
: Moved comments in [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
to documentation
* [PR #2217](https://github.com/ManimCommunity/manim/pull/2217)
: Removed superfluous dots in documentation of [`Section`](https://docs.manim.community/en/stable/reference/manim.scene.section.Section.html#manim.scene.section.Section "manim.scene.section.Section")
* [PR #2215](https://github.com/ManimCommunity/manim/pull/2215)
: Fixed typo in docstring of [`ThreeDAxes.get_z_axis_label()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label "manim.mobject.graphing.coordinate_systems.ThreeDAxes.get_z_axis_label")
* [PR #2212](https://github.com/ManimCommunity/manim/pull/2212)
: Fixed Documentation for Sections
* [PR #2201](https://github.com/ManimCommunity/manim/pull/2201)
: Fixed a typo in the documentation
* [PR #2165](https://github.com/ManimCommunity/manim/pull/2165)
: Added Crowdin configuration and changed source files to `.pot` format
* [PR #2130](https://github.com/ManimCommunity/manim/pull/2130)
: Transferred troubleshooting installation related snippets from Discord to the documentation
* [PR #2176](https://github.com/ManimCommunity/manim/pull/2176)
: Modified [`Mobject.set_default()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.set_default "manim.mobject.mobject.Mobject.set_default")
example to prevent leaking across the docs
### Changes concerning the testing system[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#changes-concerning-the-testing-system "Link to this heading")
* [PR #2197](https://github.com/ManimCommunity/manim/pull/2197)
: Added tests for resolution flag
* [PR #2146](https://github.com/ManimCommunity/manim/pull/2146)
: Increased test coverage for OpenGL renderer
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2191](https://github.com/ManimCommunity/manim/pull/2191)
: Removed `add-trailing-comma` pre-commit hook
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2136](https://github.com/ManimCommunity/manim/pull/2136)
: Added type hints to all colors
* [PR #2220](https://github.com/ManimCommunity/manim/pull/2220)
: Cleanup: let `Scene.renderer.time` return something that makes sense
* [PR #2222](https://github.com/ManimCommunity/manim/pull/2222)
: Updated Classifiers in `pyproject.toml`: removed Python 3.6, added Python 3.9
* [PR #2213](https://github.com/ManimCommunity/manim/pull/2213)
: Removed redundant `partial_movie_files` parameter in [`SceneFileWriter.combine_to_movie()`](https://docs.manim.community/en/stable/reference/manim.scene.scene_file_writer.SceneFileWriter.html#manim.scene.scene_file_writer.SceneFileWriter.combine_to_movie "manim.scene.scene_file_writer.SceneFileWriter.combine_to_movie")
* [PR #2200](https://github.com/ManimCommunity/manim/pull/2200)
: Addressed some maintenance TODOs
* Changed an Exception to ValueError
* Fixed `MappingCamera.points_to_pixel_coords()` by adding the `mobject` argument of the parent
* Rounded up width in [`SplitScreenCamera`](https://docs.manim.community/en/stable/reference/manim.camera.mapping_camera.SplitScreenCamera.html#manim.camera.mapping_camera.SplitScreenCamera "manim.camera.mapping_camera.SplitScreenCamera")
* Added docstring to [`Camera.capture_mobject()`](https://docs.manim.community/en/stable/reference/manim.camera.camera.Camera.html#manim.camera.camera.Camera.capture_mobject "manim.camera.camera.Camera.capture_mobject")
* [PR #2194](https://github.com/ManimCommunity/manim/pull/2194)
: Added type hints to [`utils.images`](https://docs.manim.community/en/stable/reference/manim.utils.images.html#module-manim.utils.images "manim.utils.images")
* [PR #2171](https://github.com/ManimCommunity/manim/pull/2171)
: Added type hints to [`utils.ipython_magic`](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.html#module-manim.utils.ipython_magic "manim.utils.ipython_magic")
* [PR #2164](https://github.com/ManimCommunity/manim/pull/2164)
: Improved readability of regular expression
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.12.0-changelog.html#new-releases "Link to this heading")
* [PR #2247](https://github.com/ManimCommunity/manim/pull/2247)
: Prepared new release `v0.12.0`
---
# v0.2.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.2.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.2.0-changelog.rst "Edit this page")
v0.2.0[¶](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#v0-2-0 "Link to this heading")
===============================================================================================================
Date:
January 1, 2021
The changes since Manim Community release v0.1.1 are listed below.
Breaking Changes[¶](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#breaking-changes "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------
* Remove all CONFIG dictionaries and all calls to `digest_config` and allow passing options directly to the constructor of the corresponding classes ([PR #783](https://github.com/ManimCommunity/manim/pull/783)
).
Practically, this means that old constructions using `CONFIG` like:
class SomeMobject(Thing):
CONFIG \= {
"my\_awesome\_property": 42
}
where corresponding objects were then instantiated as `my_mobject = SomeMobject()` should now be created simply using `my_mobject = SomeMobject(my_awesome_property=42)`.
* Remove old syntax for animating mobject methods by passing the methods and arguments to `self.play`, and use a new syntax featuring the `animate` property ([PR #881](https://github.com/ManimCommunity/manim/pull/881)
).
For example: the old-style `play` call
self.play(my\_square.shift, LEFT)
should be replaced with the new following call using the `animate` property:
self.play(my\_square.animate.shift(LEFT))
New Features[¶](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#new-features "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
* Added creation animation for [`ManimBanner`](https://docs.manim.community/en/stable/reference/manim.mobject.logo.ManimBanner.html#manim.mobject.logo.ManimBanner "manim.mobject.logo.ManimBanner")
([PR #814](https://github.com/ManimCommunity/manim/pull/814)
)
* Added some documentation to [`construct()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.construct "manim.scene.scene.Scene.construct")
([PR #753](https://github.com/ManimCommunity/manim/pull/753)
)
* Added a black and white monochromatic version of Manim’s logo ([PR #826](https://github.com/ManimCommunity/manim/pull/826)
)
* Added support for a plugin system (`manim plugin` subcommand + documentation) ([PR #784](https://github.com/ManimCommunity/manim/pull/784)
)
* Implemented `__add__`, `__iadd__`, `__sub__`, and `__isub__` for [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
(allowing for notation like `some_vgroup + some_mobject`) ([PR #790](https://github.com/ManimCommunity/manim/pull/790)
)
* Added type hints to several files in the library ([PR #835](https://github.com/ManimCommunity/manim/pull/835)
)
* Added some examples to [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
([PR #820](https://github.com/ManimCommunity/manim/pull/820)
)
* Added some examples to [`DashedLine`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.DashedLine.html#manim.mobject.geometry.line.DashedLine "manim.mobject.geometry.line.DashedLine")
and [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
([PR #833](https://github.com/ManimCommunity/manim/pull/833)
)
* Added new implementation for text rendered with Pango, [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
, which can be formatted with an HTML-like syntax ([PR #855](https://github.com/ManimCommunity/manim/pull/855)
)
* Added Fading in and out examples and deprecation of `FadeInFromDown` and `FadeOutAndShiftDown` ([PR #827](https://github.com/ManimCommunity/manim/pull/827)
)
* Added example for [`MoveAlongPath`](https://docs.manim.community/en/stable/reference/manim.animation.movement.MoveAlongPath.html#manim.animation.movement.MoveAlongPath "manim.animation.movement.MoveAlongPath")
to the docs ([PR #873](https://github.com/ManimCommunity/manim/pull/873)
)
* Added ambient rotate for other angles - theta, phi, gamma ([PR #660](https://github.com/ManimCommunity/manim/pull/660)
)
* Use custom bindings for Pango ([PR #878](https://github.com/ManimCommunity/manim/pull/878)
)
* Added [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
, a basic implementation for (graph theory) graphs ([PR #861](https://github.com/ManimCommunity/manim/pull/861)
)
* Allow for chaining methods when using the new `.animate` syntax in [`play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
([PR #889](https://github.com/ManimCommunity/manim/pull/889)
)
Bugfixes[¶](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#bugfixes "Link to this heading")
-------------------------------------------------------------------------------------------------------------------
* Fix doctests in .rst files ([PR #797](https://github.com/ManimCommunity/manim/pull/797)
)
* Fix failing doctest after adding `manim plugin` subcommand ([PR #831](https://github.com/ManimCommunity/manim/pull/831)
)
* Normalize the direction vector in `always_shift()` ([PR #839](https://github.com/ManimCommunity/manim/pull/839)
)
* Add `disable_ligatures` to [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
(via [PR #804](https://github.com/ManimCommunity/manim/pull/804)
)
* Make scene caching aware of order of Mobjects ([PR #845](https://github.com/ManimCommunity/manim/pull/845)
)
* Fix `CairoText` to work with new config structure ([PR #858](https://github.com/ManimCommunity/manim/pull/858)
)
* Added missing argument to classes inheriting from [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
([PR #859](https://github.com/ManimCommunity/manim/pull/859)
)
* Fixed: `z_index` of mobjects contained in others as submobjects is now properly respected ([PR #872](https://github.com/ManimCommunity/manim/pull/872)
)
* Let `set_fill_by_checkboard()` return the modified surface to allow method chaining ([PR #883](https://github.com/ManimCommunity/manim/pull/883)
)
* Mobjects added during an updater are added to `Scene.moving_mobjects` ([PR #838](https://github.com/ManimCommunity/manim/pull/838)
)
* Pass background color to JS renderer ([PR #876](https://github.com/ManimCommunity/manim/pull/876)
)
* Small fixes to docstrings. Tiny cleanups. Remove `digest_mobject_attrs`. ([PR #834](https://github.com/ManimCommunity/manim/pull/834)
)
* Added closed shape detection in [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject")
in order to achieve an even dash pattern ([PR #884](https://github.com/ManimCommunity/manim/pull/884)
)
* Fix Spelling in docstrings and variables across the library ([PR #890](https://github.com/ManimCommunity/manim/pull/890)
)
Other changes[¶](https://docs.manim.community/en/stable/changelog/0.2.0-changelog.html#other-changes "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
* Change library name to manim ([PR #811](https://github.com/ManimCommunity/manim/pull/811)
)
* Docker: use local files when building an image ([PR #803](https://github.com/ManimCommunity/manim/pull/803)
)
* Let ffmpeg render partial movie files directly instead of temp files ([PR #817](https://github.com/ManimCommunity/manim/pull/817)
)
* `manimce` to `manim` & capitalizing Manim in readme ([PR #794](https://github.com/ManimCommunity/manim/pull/794)
)
* Added flowchart for different docstring categories ([PR #828](https://github.com/ManimCommunity/manim/pull/828)
)
* Improve example in module docstring of [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
+ explicitly document buff parameter in [`arrange()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange "manim.mobject.mobject.Mobject.arrange")
([PR #825](https://github.com/ManimCommunity/manim/pull/825)
)
* Disable CI pipeline for Python 3.6 ([PR #823](https://github.com/ManimCommunity/manim/pull/823)
)
* Update URLs in docs ([PR #832](https://github.com/ManimCommunity/manim/pull/832)
)
* Move upcoming changelog to GitHub-wiki ([PR #822](https://github.com/ManimCommunity/manim/pull/822)
)
* Change badges in readme ([PR #854](https://github.com/ManimCommunity/manim/pull/854)
)
* Exclude generated gRPC files from source control ([PR #868](https://github.com/ManimCommunity/manim/pull/868)
)
* Added linguist-generated attribute to `.gitattributes` ([PR #877](https://github.com/ManimCommunity/manim/pull/877)
)
* Cleanup: removed inheritance from `object` for some classes, refactor some imports ([PR #795](https://github.com/ManimCommunity/manim/pull/795)
)
* Change several `str.format()` to `f`\-strings ([PR #867](https://github.com/ManimCommunity/manim/pull/867)
)
* Update javascript renderer ([PR #830](https://github.com/ManimCommunity/manim/pull/830)
)
* Bump version number to 0.2.0, update changelog ([PR #894](https://github.com/ManimCommunity/manim/pull/894)
)
---
# Manim Development Process - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/contributing/development.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/contributing/development.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/contributing/development.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/contributing/development.md "Edit this page")
Manim Development Process[¶](https://docs.manim.community/en/stable/contributing/development.html#manim-development-process "Link to this heading")
====================================================================================================================================================
For first-time contributors[¶](https://docs.manim.community/en/stable/contributing/development.html#for-first-time-contributors "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------------------
1. Install git:
For instructions see [https://git-scm.com/](https://git-scm.com/)
.
2. Fork the project:
Go to [https://github.com/ManimCommunity/manim](https://github.com/ManimCommunity/manim)
and click the “fork” button to create a copy of the project for you to work on. You will need a GitHub account. This will allow you to make a “Pull Request” (PR) to the ManimCommunity repo later on.
3. Clone your fork to your local computer:
git clone https://github.com//manim.git
GitHub will provide both a SSH (`git@github.com:/manim.git`) and HTTPS (`https://github.com//manim.git`) URL for cloning. You can use SSH if you have SSH keys setup.
Warning
Do not clone the ManimCommunity repository. You must clone your own fork.
4. Change the directory to enter the project folder:
cd manim
5. Add the upstream repository, ManimCommunity:
git remote add upstream https://github.com/ManimCommunity/manim.git
6. Now, `git remote -v` should show two remote repositories named:
* `origin`, your forked repository
* `upstream` the ManimCommunity repository
7. Install the Python project management tool `uv`, as recommended in our [installation guide for users](https://docs.manim.community/en/stable/installation/uv.html)
.
8. Let `uv` create a virtual environment for your development installation by running
uv sync
In case you need (or want) to install some of the optional dependency groups defined in our [`pyproject.toml`](https://github.com/ManimCommunity/manim/blob/main/pyproject.toml)
, run `uv sync --all-extras`, or pass the `--extra` flag with the name of a group, for example `uv sync --extra jupyterhub`.
9. Install Pre-Commit:
uv run pre-commit install
This will ensure during development that each of your commits is properly formatted against our linter and formatters.
You are now ready to work on Manim!
Develop your contribution[¶](https://docs.manim.community/en/stable/contributing/development.html#develop-your-contribution "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------------------------------
1. Checkout your local repository’s main branch and pull the latest changes from ManimCommunity, `upstream`, into your local repository:
git switch main
git pull \--rebase upstream main
2. Create a branch for the changes you want to work on rather than working off of your local main branch:
git switch \-c upstream/main
This ensures you can easily update your local repository’s main with the first step and switch branches to work on multiple features.
3. Write some awesome code!
You’re ready to make changes in your local repository’s branch. You can add local files you’ve changed within the current directory with `git add .`, or add specific files with
git add
and commit these changes to your local history with `git commit`. If you have installed pre-commit, your commit will succeed only if none of the hooks fail.
Tip
When crafting commit messages, it is highly recommended that you adhere to [these guidelines](https://www.conventionalcommits.org/en/v1.0.0/)
.
4. Add new or update existing tests.
Depending on your changes, you may need to update or add new tests. For new features, it is required that you include tests with your PR. Details of our testing system are explained in the [testing guide](https://docs.manim.community/en/stable/contributing/testing.html)
.
5. Update docstrings and documentation:
Update the docstrings (the text in triple quotation marks) of any functions or classes you change and include them with any new functions you add. See the [documentation guide](https://docs.manim.community/en/stable/contributing/docs/docstrings.html)
for more information about how we prefer our code to be documented. The content of the docstrings will be rendered in the [reference manual](https://docs.manim.community/en/stable/reference.html)
.
Tip
Use the [`manim directive for Sphinx`](https://docs.manim.community/en/stable/reference/manim.utils.docbuild.manim_directive.html#module-manim.utils.docbuild.manim_directive "manim.utils.docbuild.manim_directive")
to add examples to the documentation!
As far as development on your local machine goes, these are the main steps you should follow.
Polishing Changes and Submitting a Pull Request[¶](https://docs.manim.community/en/stable/contributing/development.html#polishing-changes-and-submitting-a-pull-request "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
As soon as you are ready to share your local changes with the community so that they can be discussed, go through the following steps to open a pull request. A pull request signifies to the ManimCommunity organization, “Here are some changes I wrote; I think it’s worthwhile for you to maintain them.”
Note
You do not need to have everything (code/documentation/tests) complete to open a pull request (PR). If the PR is still under development, please mark it as a draft. Community developers will still be able to review the changes, discuss yet-to-be-implemented changes, and offer advice; however, the more complete your PR, the quicker it will be merged.
1. Update your fork on GitHub to reflect your local changes:
git push \-u origin
Doing so creates a new branch on your remote fork, `origin`, with the contents of your local repository on GitHub. In subsequent pushes, this local branch will track the branch `origin` and `git push` is enough.
2. Make a pull request (PR) on GitHub.
In order to make the ManimCommunity development team aware of your changes, you can make a PR to the ManimCommunity repository from your fork.
Warning
Make sure to select `ManimCommunity/manim` instead of `3b1b/manim` as the base repository!
Choose the branch from your fork as the head repository - see the screenshot below.

Please make sure you follow the template (this is the default text you are shown when first opening the ‘New Pull Request’ page).
Your changes are eligible to be merged if:
1. there are no merge conflicts
2. the tests in our pipeline pass
3. at least one (two for more complex changes) Community Developer approves the changes
You can check for merge conflicts between the current upstream/main and your branch by executing `git pull upstream main` locally. If this generates any merge conflicts, you need to resolve them and push an updated version of the branch to your fork of the repository.
Our pipeline consists of a series of different tests that ensure that Manim still works as intended and that the code you added sticks to our coding conventions.
* **Code style**: We use the code style imposed by [Black](https://black.readthedocs.io/en/stable/)
, [isort](https://pycqa.github.io/isort/)
and [flake8](https://flake8.pycqa.org/en/latest/)
. The GitHub pipeline makes sure that the (Python) files changed in your pull request also adhere to this code style. If this step of the pipeline fails, fix your code formatting automatically by running `black ` and `isort `. To fix code style problems, run `flake8 ` for a style report, and then fix the problems manually that were detected by `flake8`.
* **Tests**: The pipeline runs Manim’s test suite on different operating systems (the latest versions of Ubuntu, macOS, and Windows) for different versions of Python. The test suite consists of two different kinds of tests: integration tests and doctests. You can run them locally by executing `uv run pytest` and `uv run pytest --doctest-modules manim`, respectively, from the root directory of your cloned fork.
* **Documentation**: We also build a version of the documentation corresponding to your pull request. Make sure not to introduce any Sphinx errors, and have a look at the built HTML files to see whether the formatting of the documentation you added looks as you intended. You can build the documentation locally by running `make html` from the `docs` directory. Make sure you have [Graphviz](https://graphviz.org/)
installed locally in order to build the inheritance diagrams. See [Adding Documentation](https://docs.manim.community/en/stable/contributing/docs.html)
for more information.
Finally, if the pipeline passes and you are satisfied with your changes: wait for feedback and iterate over any requested changes. You will likely be asked to edit or modify your PR in one way or another during this process. This is not an indictment of your work, but rather a strong signal that the community wants to merge your changes! Once approved, your changes may be merged!
### Further useful guidelines[¶](https://docs.manim.community/en/stable/contributing/development.html#further-useful-guidelines "Link to this heading")
1. When submitting a PR, please mention explicitly if it includes breaking changes.
2. When submitting a PR, make sure that your proposed changes are as general as possible, and ready to be taken advantage of by all of Manim’s users. In particular, leave out any machine-specific configurations, or any personal information it may contain.
3. If you are a maintainer, please label issues and PRs appropriately and frequently.
4. When opening a new issue, if there are old issues that are related, add a link to them in your new issue (even if the old ones are closed).
5. When submitting a code review, it is highly recommended that you adhere to [these general guidelines](https://conventionalcomments.org/)
.
6. If you find stale or inactive issues that seem to be irrelevant, please post a comment saying ‘This issue should be closed’, and a community developer will take a look.
7. Please do as much as possible to keep issues, PRs, and development in general as tidy as possible.
You can find examples for the `docs` in several places: the [Example Gallery](https://docs.manim.community/en/stable/examples.html)
, [Tutorials](https://docs.manim.community/en/stable/tutorials/index.html)
, and [Reference Classes](https://docs.manim.community/en/stable/reference.html)
.
**Thank you for contributing!**
---
# v0.15.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.15.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.15.0-changelog.rst "Edit this page")
v0.15.0[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#v0-15-0 "Link to this heading")
==================================================================================================================
Date:
February 26, 2022
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 34 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Alex Lembcke
* AnonymoZ +
* Benjamin Hackl
* Darylgolden
* Eshaan Naga Venkata +
* Faruk D. +
* GameDungeon
* Kevin Cen +
* Laith Bahodi
* Leo Xu
* Lucas Ricci
* Marcin Serwin
* Michael McNeil Forbes +
* Mysaa
* Naveen M K
* Pierre Couy +
* Simon Ellmann +
* Tommy Chu +
* Viicos
* ad\_chaos
* betafcc +
* friedkeenan
* icedcoffeeee
* vmoros +
* 鹤翔万里
The patches included in this release have been reviewed by the following contributors.
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* Eshaan Naga Venkata
* GameDungeon
* Jan-Hendrik Müller
* Laith Bahodi
* Marcin Kurczewski
* Marcin Serwin
* Naveen M K
* Raghav Goel
* RomainJMend
* Ryan McCauley
* Tommy Chu
* ad\_chaos
* betafcc
* icedcoffeeee
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 71 pull requests were merged for this release.
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#breaking-changes "Link to this heading")
* [PR #2476](https://github.com/ManimCommunity/manim/pull/2476)
: Improved structure of the [`mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#module-manim.mobject.mobject "manim.mobject.mobject")
module
Arrow tips now have to be imported from `manim.mobject.geometry.tips` instead of `manim.mobject.geometry`.
* [PR #2387](https://github.com/ManimCommunity/manim/pull/2387)
: Refactored [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart")
and made it inherit from [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
* [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart")
now inherits from [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
, allowing it to use [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
’ methods. Also improves [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart")
’s configuration and ease of use.
* Added [`get_bar_labels()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart.get_bar_labels "manim.mobject.graphing.probability.BarChart.get_bar_labels")
to annotate the value of each bar of a [`BarChart`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.probability.BarChart.html#manim.mobject.graphing.probability.BarChart "manim.mobject.graphing.probability.BarChart")
.
### Deprecated classes and functions[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#deprecated-classes-and-functions "Link to this heading")
* [PR #2568](https://github.com/ManimCommunity/manim/pull/2568)
: Removed Deprecated Methods
Removed methods and classes that were deprecated since v0.10.0 and v0.11.0
* [PR #2457](https://github.com/ManimCommunity/manim/pull/2457)
: Deprecated `ShowCreationThenFadeOut`
### New features[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#new-features "Link to this heading")
* [PR #2442](https://github.com/ManimCommunity/manim/pull/2442)
: Added `media_embed` config option to control whether media in Jupyter notebooks is embedded
* [PR #2504](https://github.com/ManimCommunity/manim/pull/2504)
: Added finer control over [`Scene.wait()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.wait "manim.scene.scene.Scene.wait")
being static (i.e., no updaters) or not
* Added keyword argument `frozen_frame` to [`Wait`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Wait.html#manim.animation.animation.Wait "manim.animation.animation.Wait")
and [`Scene.wait()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.wait "manim.scene.scene.Scene.wait")
* New convenience method: [`Scene.pause()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.pause "manim.scene.scene.Scene.pause")
(alias for `Scene.wait(frozen_frame=True)`)
* Changed default behavior for OpenGL updaters: updater functions are now not called by default when they are added
* Changed default behavior of `Scene.should_mobjects_update()`: made it respect the set value of `Wait.frozen_frame`, changed automatic determination of frozen frame state to also consider Scene updaters
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#enhancements "Link to this heading")
* [PR #2478](https://github.com/ManimCommunity/manim/pull/2478)
: Alternative scaling for tree graph layout
* [PR #2565](https://github.com/ManimCommunity/manim/pull/2565)
: Allowed passing vertex configuration keyword arguments to `Graph.add_edges()`
* [PR #2467](https://github.com/ManimCommunity/manim/pull/2467)
: [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
, [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
, [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
and [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
inherit color from their parent mobjects
* [PR #2537](https://github.com/ManimCommunity/manim/pull/2537)
: Added support for PySide coordinate system
* [PR #2158](https://github.com/ManimCommunity/manim/pull/2158)
: Added OpenGL compatibility to [`ThreeDScene.add_fixed_orientation_mobjects()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.add_fixed_orientation_mobjects "manim.scene.three_d_scene.ThreeDScene.add_fixed_orientation_mobjects")
and [`ThreeDScene.add_fixed_in_frame_mobjects()`](https://docs.manim.community/en/stable/reference/manim.scene.three_d_scene.ThreeDScene.html#manim.scene.three_d_scene.ThreeDScene.add_fixed_in_frame_mobjects "manim.scene.three_d_scene.ThreeDScene.add_fixed_in_frame_mobjects")
* [PR #2535](https://github.com/ManimCommunity/manim/pull/2535)
: Implemented performance enhancement for [`VMobject.insert_n_curves_to_point_list()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.insert_n_curves_to_point_list "manim.mobject.types.vectorized_mobject.VMobject.insert_n_curves_to_point_list")
* [PR #2516](https://github.com/ManimCommunity/manim/pull/2516)
: Cached view matrix for `OpenGLCamera`
* [PR #2508](https://github.com/ManimCommunity/manim/pull/2508)
: Improve performance for [`Mobject.become()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.become "manim.mobject.mobject.Mobject.become")
* [PR #2332](https://github.com/ManimCommunity/manim/pull/2332)
: Changed `color`, `stroke_color` and `fill_color` attributes to properties
* [PR #2396](https://github.com/ManimCommunity/manim/pull/2396)
: Fixed animations introducing or removing objects
* [`ShowPassingFlash`](https://docs.manim.community/en/stable/reference/manim.animation.indication.ShowPassingFlash.html#manim.animation.indication.ShowPassingFlash "manim.animation.indication.ShowPassingFlash")
now removes objects when the animation is finished
* Added `introducer` keyword argument to [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
analogous to `remover`
* Updated [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
vertex addition handling
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #2574](https://github.com/ManimCommunity/manim/pull/2574)
: Improved Error in [`utils.tex_file_writing`](https://docs.manim.community/en/stable/reference/manim.utils.tex_file_writing.html#module-manim.utils.tex_file_writing "manim.utils.tex_file_writing")
* [PR #2580](https://github.com/ManimCommunity/manim/pull/2580)
: Fixed [`find_intersection()`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#manim.utils.space_ops.find_intersection "manim.utils.space_ops.find_intersection")
in [`space_ops`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#module-manim.utils.space_ops "manim.utils.space_ops")
* [PR #2576](https://github.com/ManimCommunity/manim/pull/2576)
: Fixed a bug with animation of removal of edges from a [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
* [PR #2556](https://github.com/ManimCommunity/manim/pull/2556)
: Fixed showing highlighted cells when creating [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
* [PR #2559](https://github.com/ManimCommunity/manim/pull/2559)
: Fix setting line numbers in [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
when using ManimPango settings
* [PR #2557](https://github.com/ManimCommunity/manim/pull/2557)
: Fixed logger bug in [`Camera.make_background_from_func()`](https://docs.manim.community/en/stable/reference/manim.camera.camera.Camera.html#manim.camera.camera.Camera.make_background_from_func "manim.camera.camera.Camera.make_background_from_func")
* [PR #2548](https://github.com/ManimCommunity/manim/pull/2548)
: Fixed [`Axes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes "manim.mobject.graphing.coordinate_systems.Axes")
plotting bug with logarithmic x-axis
* [PR #1547](https://github.com/ManimCommunity/manim/pull/1547)
: Fixed certain unicode characters in users’ paths causing issues on Windows
* [PR #2526](https://github.com/ManimCommunity/manim/pull/2526)
: Fixed segfault when using `--enable_gui`
* [PR #2538](https://github.com/ManimCommunity/manim/pull/2538)
: Fixed flickering OpenGL preview when using `frozen_frame`
* [PR #2528](https://github.com/ManimCommunity/manim/pull/2528)
: Fixed custom naming of gifs and added some tests
* [PR #2487](https://github.com/ManimCommunity/manim/pull/2487)
: Fixed [`ThreeDCamera.remove_fixed_orientation_mobjects()`](https://docs.manim.community/en/stable/reference/manim.camera.three_d_camera.ThreeDCamera.html#manim.camera.three_d_camera.ThreeDCamera.remove_fixed_orientation_mobjects "manim.camera.three_d_camera.ThreeDCamera.remove_fixed_orientation_mobjects")
* [PR #2530](https://github.com/ManimCommunity/manim/pull/2530)
: Use single source of truth for default text values
* [PR #2494](https://github.com/ManimCommunity/manim/pull/2494)
: Fixed an issue related to previewing gifs
* [PR #2490](https://github.com/ManimCommunity/manim/pull/2490)
: Fixed order of transformation application in [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
* [PR #2357](https://github.com/ManimCommunity/manim/pull/2357)
: Fixed `screeninfo.get_monitors` for MacOS
* [PR #2444](https://github.com/ManimCommunity/manim/pull/2444)
: Fixed [`VectorScene.add_axes()`](https://docs.manim.community/en/stable/reference/manim.scene.vector_space_scene.VectorScene.html#manim.scene.vector_space_scene.VectorScene.add_axes "manim.scene.vector_space_scene.VectorScene.add_axes")
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #2560](https://github.com/ManimCommunity/manim/pull/2560)
: Refactored more docstrings in [`geometry`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html#module-manim.mobject.geometry "manim.mobject.geometry")
* [PR #2571](https://github.com/ManimCommunity/manim/pull/2571)
: Refactored docstrings in [`graphing`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.html#module-manim.mobject.graphing "manim.mobject.graphing")
* [PR #2569](https://github.com/ManimCommunity/manim/pull/2569)
: Refactored docstrings in [`geometry`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html#module-manim.mobject.geometry "manim.mobject.geometry")
* [PR #2549](https://github.com/ManimCommunity/manim/pull/2549)
: Added a page for internals which links to our GitHub wiki
* [PR #2458](https://github.com/ManimCommunity/manim/pull/2458)
: Improved documentation for [`Rotate`](https://docs.manim.community/en/stable/reference/manim.animation.rotation.Rotate.html#manim.animation.rotation.Rotate "manim.animation.rotation.Rotate")
* [PR #2459](https://github.com/ManimCommunity/manim/pull/2459)
: Added examples to some transform animations
* [PR #2517](https://github.com/ManimCommunity/manim/pull/2517)
: Added guide on profiling and improving performance
* [PR #2518](https://github.com/ManimCommunity/manim/pull/2518)
: Added imports to examples for `deprecation` decorator
* [PR #2499](https://github.com/ManimCommunity/manim/pull/2499)
: Improved help text for `--write_to_movie`
* [PR #2465](https://github.com/ManimCommunity/manim/pull/2465)
: Added documentation for [`index_labels()`](https://docs.manim.community/en/stable/reference/manim.utils.debug.html#manim.utils.debug.index_labels "manim.utils.debug.index_labels")
* [PR #2495](https://github.com/ManimCommunity/manim/pull/2495)
: Updated minimal LaTeX installation instructions
* [PR #2500](https://github.com/ManimCommunity/manim/pull/2500)
: Added note about contributions during refactor period
* [PR #2431](https://github.com/ManimCommunity/manim/pull/2431)
: Changed example in [`Surface.set_fill_by_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value "manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value")
* [PR #2485](https://github.com/ManimCommunity/manim/pull/2485)
: Fixed some typos in documentation
* [PR #2493](https://github.com/ManimCommunity/manim/pull/2493)
: Fixed typo in documentation for parameters of [`Square`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Square.html#manim.mobject.geometry.polygram.Square "manim.mobject.geometry.polygram.Square")
* [PR #2482](https://github.com/ManimCommunity/manim/pull/2482)
: Updated Python version requirement in installation guide
* [PR #2438](https://github.com/ManimCommunity/manim/pull/2438)
: Removed unnecessary rotation from example
* [PR #2468](https://github.com/ManimCommunity/manim/pull/2468)
: Hid more private methods from the docs
* [PR #2466](https://github.com/ManimCommunity/manim/pull/2466)
: Fixed a typo in the documentation for plugins
* [PR #2448](https://github.com/ManimCommunity/manim/pull/2448)
: Improvements to the `.pot` files cleaning system
* [PR #2436](https://github.com/ManimCommunity/manim/pull/2436)
: Fixed typo and improved example in building blocks tutorial
### Changes to our development infrastructure[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#changes-to-our-development-infrastructure "Link to this heading")
* [PR #2554](https://github.com/ManimCommunity/manim/pull/2554)
: Removed `Remove-Item` calls for MSYS2 Python
* [PR #2531](https://github.com/ManimCommunity/manim/pull/2531)
: Added a GitHub Action for automatic validation of citation metadata
* [PR #2536](https://github.com/ManimCommunity/manim/pull/2536)
: Upgraded version of setup-ffmpeg CI action
* [PR #2484](https://github.com/ManimCommunity/manim/pull/2484)
: Updated tinytex download URL
### Code quality improvements and similar refactors[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#code-quality-improvements-and-similar-refactors "Link to this heading")
* [PR #2573](https://github.com/ManimCommunity/manim/pull/2573)
: Moved [`value_tracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.html#module-manim.mobject.value_tracker "manim.mobject.value_tracker")
back inside [`mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.html#module-manim.mobject.mobject "manim.mobject.mobject")
* [PR #2566](https://github.com/ManimCommunity/manim/pull/2566)
: Removed unused livestream-related imports and functions from [`scene_file_writer`](https://docs.manim.community/en/stable/reference/manim.scene.scene_file_writer.html#module-manim.scene.scene_file_writer "manim.scene.scene_file_writer")
* [PR #2524](https://github.com/ManimCommunity/manim/pull/2524)
: Reworked [`space_ops`](https://docs.manim.community/en/stable/reference/manim.utils.space_ops.html#module-manim.utils.space_ops "manim.utils.space_ops")
* [PR #2519](https://github.com/ManimCommunity/manim/pull/2519)
: Removed outdated comment
* [PR #2503](https://github.com/ManimCommunity/manim/pull/2503)
: Removed unused imports
* [PR #2475](https://github.com/ManimCommunity/manim/pull/2475)
: Removed setuptools dependency
* [PR #2472](https://github.com/ManimCommunity/manim/pull/2472)
: Removed unnecessary comment in [`simple_functions`](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#module-manim.utils.simple_functions "manim.utils.simple_functions")
* [PR #2429](https://github.com/ManimCommunity/manim/pull/2429)
: Upgraded to future-style type annotations
* [PR #2464](https://github.com/ManimCommunity/manim/pull/2464)
: Bump pillow from 8.4.0 to 9.0.0
* [PR #2376](https://github.com/ManimCommunity/manim/pull/2376)
: Updated dependencies for Python 3.10
* [PR #2437](https://github.com/ManimCommunity/manim/pull/2437)
: Cleaned up [`simple_functions`](https://docs.manim.community/en/stable/reference/manim.utils.simple_functions.html#module-manim.utils.simple_functions "manim.utils.simple_functions")
* Removed `fdiv` as in all cases where it was used, it was just doing the same thing as numpy array division.
* Replaced old implementation of the choose function with scipy’s implementation
* Use `lru_cache` (least recently used cache) for caching the choose function. Since it’s only used for beziers, only 2 choose k and 3 choose k will be used, hence a size of 10 should be enough.
* Removed `clip_in_place` in favor of `np.clip`
* Removed one use of `clip_in_place` that wasn’t actually doing anything
* [PR #2439](https://github.com/ManimCommunity/manim/pull/2439)
: Removed twitter template from scripts
### New releases[¶](https://docs.manim.community/en/stable/changelog/0.15.0-changelog.html#new-releases "Link to this heading")
* [PR #2547](https://github.com/ManimCommunity/manim/pull/2547)
: Prepared new release, `v0.15.0`
---
# Code of Conduct - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/conduct.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/conduct.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/conduct.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/conduct.md "Edit this page")
Code of Conduct[¶](https://docs.manim.community/en/stable/conduct.html#code-of-conduct "Link to this heading")
===============================================================================================================
> TL;DR Be excellent to each other; we’re a community after all. If you run into issues with others in our community, please [contact](https://www.manim.community/discord/)
> a Manim Community Dev, or Moderator.
Purpose[¶](https://docs.manim.community/en/stable/conduct.html#purpose "Link to this heading")
-----------------------------------------------------------------------------------------------
The Manim Community includes members of varying skills, languages, personalities, cultural backgrounds, and experiences from around the globe. Through these differences, we continue to grow and collectively improve upon an open-source animation engine. When working in a community, it is important to remember that you are interacting with humans on the other end of your screen. This code of conduct will guide your interactions and keep Manim a positive environment for our developers, users, and fundamentally our growing community.
Our Community[¶](https://docs.manim.community/en/stable/conduct.html#our-community "Link to this heading")
-----------------------------------------------------------------------------------------------------------
Members of Manim Community are respectful, open, and considerate. Behaviors that reinforce these values contribute to our positive environment, and include:
* **Being respectful.** Respectful of others, their positions, experiences, viewpoints, skills, commitments, time, and efforts.
* **Being open.** Open to collaboration, whether it’s on problems, Pull Requests, issues, or otherwise.
* **Being considerate.** Considerate of their peers – other Manim users and developers.
* **Focusing on what is best for the community.** We’re respectful of the processes set forth in the community, and we work within them.
* **Showing empathy towards other community members.** We’re attentive in our communications, whether in person or online, and we’re tactful when approaching differing views.
* **Gracefully accepting constructive criticism.** When we disagree, we are courteous in raising our issues.
* **Using welcoming and inclusive language.** We’re accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.
Our Standards[¶](https://docs.manim.community/en/stable/conduct.html#our-standards "Link to this heading")
-----------------------------------------------------------------------------------------------------------
Every member of our community has the right to have their identity respected. Manim Community is dedicated to providing a positive environment for everyone, regardless of age, gender identity and expression, sexual orientation, disability, physical appearance, body size, ethnicity, nationality, race, religion (or lack thereof), education, or socioeconomic status.
Inappropriate Behavior[¶](https://docs.manim.community/en/stable/conduct.html#inappropriate-behavior "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
Examples of unacceptable behavior by participants include:
* Harassment of any participants in any form
* Deliberate intimidation, stalking, or following
* Logging or taking screenshots of online activity for harassment purposes
* Publishing others’ private information, such as a physical or electronic address, without explicit permission
* Violent threats or language directed against another person
* Incitement of violence or harassment towards any individual, including encouraging a person to commit suicide or to engage in self-harm
* Creating additional online accounts in order to harass another person or circumvent a ban
* Sexual language and imagery in online communities or any conference venue, including talks
* Insults, put-downs, or jokes that are based upon stereotypes, that are exclusionary, or that hold others up for ridicule
* Excessive swearing
* Unwelcome sexual attention or advances
* Unwelcome physical contact, including simulated physical contact (eg, textual descriptions like “hug” or “backrub”) without consent or after a request to stop
* Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others
* Sustained disruption of online community discussions, in-person presentations, or other in-person events
* Continued one-on-one communication after requests to cease
* Other conduct that is inappropriate for a professional audience including people of many different backgrounds Community members asked to stop any inappropriate behavior are expected to comply immediately.
Manim Community Online Spaces[¶](https://docs.manim.community/en/stable/conduct.html#manim-community-online-spaces "Link to this heading")
-------------------------------------------------------------------------------------------------------------------------------------------
This Code of Conduct applies to the following online spaces:
* The [ManimCommunity GitHub Organization](https://github.com/ManimCommunity)
and all of its repositories
* The Manim [Discord](https://www.manim.community/discord/)
* The Manim [Reddit](https://www.reddit.com/r/manim/)
* The Manim [Twitter](https://twitter.com/manim_community/)
This Code of Conduct applies to every member in official Manim Community online spaces, including:
* Moderators
* Maintainers
* Developers
* Reviewers
* Contributors
* Users
* All community members
Consequences[¶](https://docs.manim.community/en/stable/conduct.html#consequences "Link to this heading")
---------------------------------------------------------------------------------------------------------
If a member’s behavior violates this code of conduct, the Manim Community Code of Conduct team may take any action they deem appropriate, including, but not limited to: warning the offender, temporary bans, deletion of offending messages, and expulsion from the community and its online spaces. The full list of consequences for inappropriate behavior is listed below in the Enforcement Procedures.
Thank you for helping make this a welcoming, friendly community for everyone.
Contact Information[¶](https://docs.manim.community/en/stable/conduct.html#contact-information "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------
If you believe someone is violating the code of conduct, or have any other concerns, please contact a Manim Community Dev, or Moderator immediately. They can be reached on Manim’s Community [Discord](https://www.manim.community/discord/)
.
* * *
* * *
Enforcement Procedures[¶](https://docs.manim.community/en/stable/conduct.html#enforcement-procedures "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------
This document summarizes the procedures the Manim Community Code of Conduct team uses to enforce the Code of Conduct.
### Summary of processes[¶](https://docs.manim.community/en/stable/conduct.html#summary-of-processes "Link to this heading")
When the team receives a report of a possible Code of Conduct violation, it will:
1. Acknowledge the receipt of the report.
2. Evaluate conflicts of interest.
3. Call a meeting of code of conduct team members without a conflict of interest.
4. Evaluate the reported incident.
5. Propose a behavioral modification plan.
6. Propose consequences for the reported behavior.
7. Vote on behavioral modification plan and consequences for the reported person.
8. Contact Manim Community moderators to approve the behavioral modification plan and consequences.
9. Follow up with the reported person.
10. Decide further responses.
11. Follow up with the reporter.
### Acknowledge the report[¶](https://docs.manim.community/en/stable/conduct.html#acknowledge-the-report "Link to this heading")
Reporters should receive an acknowledgment of the receipt of their report within 48 hours.
### Conflict of interest policy[¶](https://docs.manim.community/en/stable/conduct.html#conflict-of-interest-policy "Link to this heading")
Examples of conflicts of interest include:
* You have a romantic or platonic relationship with either the reporter or the reported person. It’s fine to participate if they are an acquaintance.
* The reporter or reported person is someone you work closely with. This could be someone on your team or someone who works on the same project as you.
* The reporter or reported person is a maintainer who regularly reviews your contributions
* The reporter or reported person is your metamour.
* The reporter or reported person is your family member
Committee members do not need to state why they have a conflict of interest, only that one exists. Other team members should not ask why the person has a conflict of interest.
Anyone who has a conflict of interest will remove themselves from the discussion of the incident, and recluse themselves from voting on a response to the report.
### Evaluating a report[¶](https://docs.manim.community/en/stable/conduct.html#evaluating-a-report "Link to this heading")
#### Jurisdiction[¶](https://docs.manim.community/en/stable/conduct.html#jurisdiction "Link to this heading")
* _Is this a Code of Conduct violation?_ Is this behavior on our list of inappropriate behavior? Is it borderline inappropriate behavior? Does it violate our community norms?
* _Did this occur in a space that is within our Code of Conduct’s scope?_ If the incident occurred outside the community, but a community member’s mental health or physical safety may be negatively impacted if no action is taken, the incident may be in scope. Private conversations in community spaces are also in scope.
#### Impact[¶](https://docs.manim.community/en/stable/conduct.html#impact "Link to this heading")
* _Did this incident occur in a private conversation or a public space?_ Incidents that all community members can see will have a more negative impact.
* _Does this behavior negatively impact a marginalized group in our community?_ Is the reporter a person from a marginalized group in our community? How is the reporter being negatively impacted by the reported person’s behavior? Are members of the marginalized group likely to disengage with the community if no action was taken on this report?
* _Does this incident involve a community leader?_ Community members often look up to community leaders to set the standard of acceptable behavior
#### Risk[¶](https://docs.manim.community/en/stable/conduct.html#risk "Link to this heading")
* _Does this incident include sexual harassment?_
* _Does this pose a safety risk?_ Does the behavior put a person’s physical safety at risk? Will this incident severely negatively impact someone’s mental health?
* _Is there a risk of this behavior being repeated?_ Does the reported person understand why their behavior was inappropriate? Is there an established pattern of behavior from past reports?
Reports which involve higher risk or higher impact may face more severe consequences than reports which involve lower risk or lower impact.
### Propose consequences[¶](https://docs.manim.community/en/stable/conduct.html#propose-consequences "Link to this heading")
What follows are examples of possible consequences of an incident report. This list of consequences is not exhaustive, and the Manim Community Code of Conduct team reserves the right to take any action it deems necessary.
Possible private responses to an incident include:
* Nothing, if the behavior was determined to not be a Code of Conduct violation
* A warning
* A final warning
* Temporarily removing the reported person from the community’s online space(s)
* Permanently removing the reported person from the community’s online space(s)
* Publishing an account of the incident
### Team vote[¶](https://docs.manim.community/en/stable/conduct.html#team-vote "Link to this heading")
Some team members may have a conflict of interest and may be excluded from discussions of a particular incident report. Excluding those members, decisions on the behavioral modification plans and consequences will be determined by a two-thirds majority vote of the Manim Community Code of Conduct team.
### Moderators approval[¶](https://docs.manim.community/en/stable/conduct.html#moderators-approval "Link to this heading")
Once the team has approved the behavioral modification plans and consequences, they will communicate the recommended response to the Manim Community moderators. The team should not state who reported this incident. They should attempt to anonymize any identifying information from the report.
Moderators are required to respond with whether they accept the recommended response to the report. If they disagree with the recommended response, they should provide a detailed response or additional context as to why they disagree. Moderators are encouraged to respond within a week.
In cases where the moderators disagree on the suggested resolution for a report, the Manim Community Code of Conduct team may choose to notify the Manim Community Moderators.
### Follow up with the reported person[¶](https://docs.manim.community/en/stable/conduct.html#follow-up-with-the-reported-person "Link to this heading")
The Manim Community Code of Conduct team will work with Manim Community moderators to draft a response to the reported person. The response should contain:
* A description of the person’s behavior in neutral language
* The negative impact of that behavior
* A concrete behavioral modification plan
* Any consequences of their behavior The team should not state who reported this incident. They should attempt to anonymize any identifying information from the report. The reported person should be discouraged from contacting the reporter to discuss the report. If they wish to apologize to the reporter, the team can accept the apology on behalf of the reporter.
### Decide further responses[¶](https://docs.manim.community/en/stable/conduct.html#decide-further-responses "Link to this heading")
If the reported person provides additional context, the Manim Community Code of Conduct team may need to re-evaluate the behavioral modification plan and consequences.
### Follow up with the reporter[¶](https://docs.manim.community/en/stable/conduct.html#follow-up-with-the-reporter "Link to this heading")
A person who makes a report should receive a follow-up response stating what action was taken in response to the report. If the team decided no response was needed, they should provide an explanation why it was not a Code of Conduct violation. Reports that are not made in good faith (such as “reverse sexism” or “reverse racism”) may receive no response.
The follow-up should be sent no later than one week after the receipt of the report. If deliberation or follow-up with the reported person takes longer than one week, the team should send a status update to the reporter.
### Changes to Code of Conduct[¶](https://docs.manim.community/en/stable/conduct.html#changes-to-code-of-conduct "Link to this heading")
When discussing a change to the Manim Community code of conduct or enforcement procedures, the Manim Community Code of Conduct team will follow this decision-making process:
* **Brainstorm options.** Team members should discuss any relevant context and brainstorm a set of possible options. It is important to provide constructive feedback without getting side-tracked from the main question.
* **Vote.** Proposed changes to the code of conduct will be decided by a two-thirds majority of all voting members of the Code of Conduct team. Team members are listed in the charter. Currently active voting members are listed in the following section.
* **Board Vote.** Once a working draft is in place for the Code of Conduct and procedures, the Code of Conduct team shall provide the Manim Community Moderators with a draft of the changes. The Manim Community Moderators will vote on the changes at a board meeting.
### Current list of voting members[¶](https://docs.manim.community/en/stable/conduct.html#current-list-of-voting-members "Link to this heading")
* All available Community Developers (i.e. those with “write” permissions, or above, on the Manim Community GitHub organization).
License[¶](https://docs.manim.community/en/stable/conduct.html#license "Link to this heading")
-----------------------------------------------------------------------------------------------
This Code of Conduct is licensed under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](https://creativecommons.org/licenses/by-sa/3.0/)
.
Attributions[¶](https://docs.manim.community/en/stable/conduct.html#attributions "Link to this heading")
---------------------------------------------------------------------------------------------------------
This Code of Conduct was forked from the code of conduct from the [Python Software Foundation](https://www.python.org/psf/conduct/)
and adapted by Manim Community.
---
# v0.18.1 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.18.1-changelog.md?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.18.1-changelog.md "Edit this page")
v0.18.1[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#v0-18-1 "Link to this heading")
==================================================================================================================
Date
April 28, 2024
What’s Changed[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#what-s-changed "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------
### Breaking Changes and Deprecations[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#breaking-changes-and-deprecations "Link to this heading")
* Removed deprecated `manim new` command by [@chopan050](https://github.com/chopan050)
in [PR #3512](https://github.com/ManimCommunity/manim/pull/3512)
* Removed support for dynamic plugin imports by [@Viicos](https://github.com/Viicos)
in [PR #3524](https://github.com/ManimCommunity/manim/pull/3524)
* Remove meth:`.Mobject.wag` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3539](https://github.com/ManimCommunity/manim/pull/3539)
* Remove deprecated parameters and animations by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3688](https://github.com/ManimCommunity/manim/pull/3688)
### New Features[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#new-features "Link to this heading")
* Added `cap_style` feature to `VMobject` by [@MathItYT](https://github.com/MathItYT)
in [PR #3516](https://github.com/ManimCommunity/manim/pull/3516)
* Allow hiding version splash by [@jeertmans](https://github.com/jeertmans)
in [PR #3329](https://github.com/ManimCommunity/manim/pull/3329)
* Added the ability to pass lists and generators to `Scene.play()` by [@MrDiver](https://github.com/MrDiver)
in [PR #3365](https://github.com/ManimCommunity/manim/pull/3365)
* Added `--preview_command` cli flag by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3615](https://github.com/ManimCommunity/manim/pull/3615)
### Fixed Bugs and Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#fixed-bugs-and-enhancements "Link to this heading")
* Allow accessing ghost vectors in :class:`.LinearTransformationScene` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3435](https://github.com/ManimCommunity/manim/pull/3435)
* Optimized `get_unit_normal()` and replaced `np.cross()` with custom `cross()` in `manim.utils.space_ops` by [@chopan050](https://github.com/chopan050)
in [PR #3494](https://github.com/ManimCommunity/manim/pull/3494)
* Implement caching of fonts list to improve runtime performance by [@MrDiver](https://github.com/MrDiver)
in [PR #3316](https://github.com/ManimCommunity/manim/pull/3316)
* Reformatting the `--save_sections` output to have the format `__` by [@doaamuham](https://github.com/doaamuham)
in [PR #3499](https://github.com/ManimCommunity/manim/pull/3499)
* Account for dtype in the pixel array so the maximum value stays correct in the invert function by [@jeertmans](https://github.com/jeertmans)
in [PR #3493](https://github.com/ManimCommunity/manim/pull/3493)
* Added `grid_lines` attribute to `Rectangle` to add individual styling to the grid lines by [@RobinPH](https://github.com/RobinPH)
in [PR #3428](https://github.com/ManimCommunity/manim/pull/3428)
* Fixed rectangle grid properties (#3082) by [@pauluhlenbruck](https://github.com/pauluhlenbruck)
in [PR #3513](https://github.com/ManimCommunity/manim/pull/3513)
* Fixed animations with zero runtime length to give a useful error instead of a broken pipe by [@MrDiver](https://github.com/MrDiver)
in [PR #3491](https://github.com/ManimCommunity/manim/pull/3491)
* Fixed stroke width being ignored by `StreamLines` with a single color by [@yashm277](https://github.com/yashm277)
in [PR #3436](https://github.com/ManimCommunity/manim/pull/3436)
* Fixed formatting of `MoveAlongPath` docs by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3541](https://github.com/ManimCommunity/manim/pull/3541)
* Added helpful hints to `VGroup.add()` error message by [@vvolhejn](https://github.com/vvolhejn)
in [PR #3561](https://github.com/ManimCommunity/manim/pull/3561)
* Made `earclip_triangulation` more robust by [@hydromelvictor](https://github.com/hydromelvictor)
in [PR #3574](https://github.com/ManimCommunity/manim/pull/3574)
* Refactored `TexTemplate` by [@Viicos](https://github.com/Viicos)
in [PR #3520](https://github.com/ManimCommunity/manim/pull/3520)
* Fixed `write_subcaption_file` error when using OpenGL renderer by [@yuan-xy](https://github.com/yuan-xy)
in [PR #3546](https://github.com/ManimCommunity/manim/pull/3546)
* Fixed `get_arc_center()` returning reference of point by [@sparshg](https://github.com/sparshg)
in [PR #3599](https://github.com/ManimCommunity/manim/pull/3599)
* Improved handling of specified font name by [@staghado](https://github.com/staghado)
in [PR #3429](https://github.com/ManimCommunity/manim/pull/3429)
* Fixing the behavior of `.become` to not modify target mobject via side effects fix color linking by [@MrDiver](https://github.com/MrDiver)
in [PR #3508](https://github.com/ManimCommunity/manim/pull/3508)
* Fixed bug in :class:`.VMobjectFromSVGPath` by [@abul4fia](https://github.com/abul4fia)
in [PR #3677](https://github.com/ManimCommunity/manim/pull/3677)
* Fix for windows cp1252 encoding failure (fix test pipeline) by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3687](https://github.com/ManimCommunity/manim/pull/3687)
* Fix NameError in try… except by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3694](https://github.com/ManimCommunity/manim/pull/3694)
* Fix successive calls of :meth:`.LinearTransformationScene.apply_matrix` by [@SirJamesClarkMaxwell](https://github.com/SirJamesClarkMaxwell)
in [PR #3675](https://github.com/ManimCommunity/manim/pull/3675)
* Fixed `Mobject.put_start_and_end_on` with same start and end point by [@MontroyJosh](https://github.com/MontroyJosh)
in [PR #3718](https://github.com/ManimCommunity/manim/pull/3718)
* Fixed issue where `SpiralIn` doesn’t show elements by [@Gixtox](https://github.com/Gixtox)
in [PR #3589](https://github.com/ManimCommunity/manim/pull/3589)
* Cleaned `Graph` layouts and increase flexibility by [@Nikhil-42](https://github.com/Nikhil-42)
in [PR #3434](https://github.com/ManimCommunity/manim/pull/3434)
* `AnimationGroup`: optimized `interpolate()` and fixed alpha bug on `finish()` by [@chopan050](https://github.com/chopan050)
in [PR #3542](https://github.com/ManimCommunity/manim/pull/3542)
* Fixed warning about missing plugin `""` by [@behackl](https://github.com/behackl)
in [PR #3734](https://github.com/ManimCommunity/manim/pull/3734)
### Documentation[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#documentation "Link to this heading")
* Typo in `indication` documentation by [@jcep](https://github.com/jcep)
in [PR #3477](https://github.com/ManimCommunity/manim/pull/3477)
* Fixed typo: 360° to 180° in quickstart tutorial by [@szchixy](https://github.com/szchixy)
in [PR #3498](https://github.com/ManimCommunity/manim/pull/3498)
* Fixed typo in mobject docstring: `line` -> `square` by [@yuan-xy](https://github.com/yuan-xy)
in [PR #3509](https://github.com/ManimCommunity/manim/pull/3509)
* Explain `.Transform` vs `.ReplacementTransform` in quickstart examples by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3500](https://github.com/ManimCommunity/manim/pull/3500)
* Fixed formatting in building blocks tutorial by [@MrDiver](https://github.com/MrDiver)
in [PR #3515](https://github.com/ManimCommunity/manim/pull/3515)
* Fixed `Indicate` docstring typo by [@Lawqup](https://github.com/Lawqup)
in [PR #3461](https://github.com/ManimCommunity/manim/pull/3461)
* Added Documentation to `.to_edge` and `to_corner` by [@TheMathematicFanatic](https://github.com/TheMathematicFanatic)
in [PR #3408](https://github.com/ManimCommunity/manim/pull/3408)
* Added some words about Cairo 1.18 by [@jeertmans](https://github.com/jeertmans)
in [PR #3530](https://github.com/ManimCommunity/manim/pull/3530)
* Fixed typo of `get_y_axis_label` parameter documentation by [@yuan-xy](https://github.com/yuan-xy)
in [PR #3547](https://github.com/ManimCommunity/manim/pull/3547)
* Added note in docstring of `ManimColor` about class constructors by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3554](https://github.com/ManimCommunity/manim/pull/3554)
* Improve documentation section about contributing to docs by [@chopan050](https://github.com/chopan050)
in [PR #3555](https://github.com/ManimCommunity/manim/pull/3555)
* Removed duplicated documentation for -s / –save\_last\_frame CLI flag by [@Gixtox](https://github.com/Gixtox)
in [PR #3528](https://github.com/ManimCommunity/manim/pull/3528)
* Updated Docker instructions to use bash from the PATH by [@NotWearingPants](https://github.com/NotWearingPants)
in [PR #3582](https://github.com/ManimCommunity/manim/pull/3582)
* Fixed typo in `value_tracker.py` by [@yuan-xy](https://github.com/yuan-xy)
in [PR #3594](https://github.com/ManimCommunity/manim/pull/3594)
* Added `ref_class` for `BooleanOperations` in Example Gallery by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3598](https://github.com/ManimCommunity/manim/pull/3598)
* Changed `Vector3` to `Vector3D` in contributing docs by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3639](https://github.com/ManimCommunity/manim/pull/3639)
* Added some examples for `Mobject`/`VMobject` methods by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3641](https://github.com/ManimCommunity/manim/pull/3641)
* Fixed broken link to Poetry’s installation guide in the documentation by [@biinnnggggg](https://github.com/biinnnggggg)
in [PR #3692](https://github.com/ManimCommunity/manim/pull/3692)
* Fixed minor grammatical errors found in the index page of the documentation by [@biinnnggggg](https://github.com/biinnnggggg)
in [PR #3690](https://github.com/ManimCommunity/manim/pull/3690)
* Fixed typo on page about translations by [@biinnnggggg](https://github.com/biinnnggggg)
in [PR #3696](https://github.com/ManimCommunity/manim/pull/3696)
* Fixed outdated description of CLI option in Manim’s Output Settings by [@HairlessVillager](https://github.com/HairlessVillager)
in [PR #3674](https://github.com/ManimCommunity/manim/pull/3674)
* Mention pixi in installation guide by [@pavelzw](https://github.com/pavelzw)
in [PR #3678](https://github.com/ManimCommunity/manim/pull/3678)
* Updated typing guidelines by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3704](https://github.com/ManimCommunity/manim/pull/3704)
* Updated documentation and typings for `ParametricFunction` by [@danielzsh](https://github.com/danielzsh)
in [PR #3703](https://github.com/ManimCommunity/manim/pull/3703)
* Fixed docstring markup in `Rotate` by [@TheCrowned](https://github.com/TheCrowned)
in [PR #3721](https://github.com/ManimCommunity/manim/pull/3721)
* Improve consistency in axis label example by [@amrear](https://github.com/amrear)
in [PR #3730](https://github.com/ManimCommunity/manim/pull/3730)
### Maintenance and Testing[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#maintenance-and-testing "Link to this heading")
* Fixed wrong path in action building downloadable docs by [@behackl](https://github.com/behackl)
in [PR #3450](https://github.com/ManimCommunity/manim/pull/3450)
* Add type hints to `_config` by [@Viicos](https://github.com/Viicos)
in [PR #3440](https://github.com/ManimCommunity/manim/pull/3440)
* Update dependency constraints, fix deprecation warnings by [@Viicos](https://github.com/Viicos)
in [PR #3376](https://github.com/ManimCommunity/manim/pull/3376)
* Update Docker base image to python3.12-slim (#3458) by [@PikaBlue107](https://github.com/PikaBlue107)
in [PR #3459](https://github.com/ManimCommunity/manim/pull/3459)
* Fixed `line_join` to `joint_type` in example\_scenes/basic.py by [@szchixy](https://github.com/szchixy)
in [PR #3510](https://github.com/ManimCommunity/manim/pull/3510)
* Fixed :attr:`.Mobject.animate` type-hint to allow LSP autocomplete by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3543](https://github.com/ManimCommunity/manim/pull/3543)
* Finish TODO’s in `contributing/typings.rst` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3545](https://github.com/ManimCommunity/manim/pull/3545)
* Fixed use of `Mobject`’s deprecated `get_*()` and `set_*()` methods in Cairo tests by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3549](https://github.com/ManimCommunity/manim/pull/3549)
* Added support for Manim type aliases in Sphinx docs and added new TypeAliases by [@chopan050](https://github.com/chopan050)
in [PR #3484](https://github.com/ManimCommunity/manim/pull/3484)
* Fixed typing of `Animation` by [@dandavison](https://github.com/dandavison)
in [PR #3568](https://github.com/ManimCommunity/manim/pull/3568)
* Added some TODOs for future use of `ManimFrame` by [@chopan050](https://github.com/chopan050)
in [PR #3553](https://github.com/ManimCommunity/manim/pull/3553)
* Fixed typehint of :attr:`InternalPoint2D_Array` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3592](https://github.com/ManimCommunity/manim/pull/3592)
* Fixed error in Windows CI pipeline by [@behackl](https://github.com/behackl)
in [PR #3611](https://github.com/ManimCommunity/manim/pull/3611)
* Fixed type hint of indication.py by [@yuan-xy](https://github.com/yuan-xy)
in [PR #3613](https://github.com/ManimCommunity/manim/pull/3613)
* Revert vector type aliases to NumPy ndarrays by [@chopan050](https://github.com/chopan050)
in [PR #3595](https://github.com/ManimCommunity/manim/pull/3595)
* Run `poetry lock --no-update` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3621](https://github.com/ManimCommunity/manim/pull/3621)
* Code Cleanup: removing unused imports and global variables by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3620](https://github.com/ManimCommunity/manim/pull/3620)
* Fixed type hint of `Vector` direction parameter by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3640](https://github.com/ManimCommunity/manim/pull/3640)
* Flake8 rule C901 is about McCabe code complexity by [@cclauss](https://github.com/cclauss)
in [PR #3673](https://github.com/ManimCommunity/manim/pull/3673)
* Updated year in license by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3689](https://github.com/ManimCommunity/manim/pull/3689)
* Automated copyright updating for docs by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3708](https://github.com/ManimCommunity/manim/pull/3708)
* Fixed some typehints in `mobject.py` by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3668](https://github.com/ManimCommunity/manim/pull/3668)
* Search for type aliases if TYPE\_CHECKING by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3671](https://github.com/ManimCommunity/manim/pull/3671)
* Follow-up to graph layout cleanup: improvements for tests and typing by [@behackl](https://github.com/behackl)
in [PR #3728](https://github.com/ManimCommunity/manim/pull/3728)
* GH Actions: Changed from macos-latest to macos-13 by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3729](https://github.com/ManimCommunity/manim/pull/3729)
* Fixed return type inconsistency for `get_anchors()` by [@JinchuLi2002](https://github.com/JinchuLi2002)
in [PR #3214](https://github.com/ManimCommunity/manim/pull/3214)
* Prepared new release: `v0.18.1` by [@behackl](https://github.com/behackl)
in [PR #3719](https://github.com/ManimCommunity/manim/pull/3719)
#### Dependency Version Changes[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#dependency-version-changes "Link to this heading")
* Bump jupyter-server from 2.9.1 to 2.11.2 by [@dependabot](https://github.com/dependabot)
in [PR #3497](https://github.com/ManimCommunity/manim/pull/3497)
* Bump github/codeql-action from 2 to 3 by [@dependabot](https://github.com/dependabot)
in [PR #3567](https://github.com/ManimCommunity/manim/pull/3567)
* Bump actions/upload-artifact from 3 to 4 by [@dependabot](https://github.com/dependabot)
in [PR #3566](https://github.com/ManimCommunity/manim/pull/3566)
* Bump actions/setup-python from 4 to 5 by [@dependabot](https://github.com/dependabot)
in [PR #3565](https://github.com/ManimCommunity/manim/pull/3565)
* updated several packages (pillow, jupyterlab, notebook, jupyterlab-lsp, jinja2, gitpython) by [@behackl](https://github.com/behackl)
in [PR #3593](https://github.com/ManimCommunity/manim/pull/3593)
* Update jupyter.rst by [@abul4fia](https://github.com/abul4fia)
in [PR #3630](https://github.com/ManimCommunity/manim/pull/3630)
* Bump black from 23.12.1 to 24.3.0 by [@dependabot](https://github.com/dependabot)
in [PR #3649](https://github.com/ManimCommunity/manim/pull/3649)
* Bump cryptography from 42.0.0 to 42.0.4 by [@dependabot](https://github.com/dependabot)
in [PR #3629](https://github.com/ManimCommunity/manim/pull/3629)
* Bump actions/cache from 3 to 4 by [@dependabot](https://github.com/dependabot)
in [PR #3607](https://github.com/ManimCommunity/manim/pull/3607)
* Bump FedericoCarboni/setup-ffmpeg from 2 to 3 by [@dependabot](https://github.com/dependabot)
in [PR #3608](https://github.com/ManimCommunity/manim/pull/3608)
* Bump ssciwr/setup-mesa-dist-win from 1 to 2 by [@dependabot](https://github.com/dependabot)
in [PR #3609](https://github.com/ManimCommunity/manim/pull/3609)
* Bump idna from 3.6 to 3.7 by [@dependabot](https://github.com/dependabot)
in [PR #3693](https://github.com/ManimCommunity/manim/pull/3693)
* Bump pillow from 10.2.0 to 10.3.0 by [@dependabot](https://github.com/dependabot)
in [PR #3672](https://github.com/ManimCommunity/manim/pull/3672)
* \[pre-commit.ci\] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci)
in [PR #3332](https://github.com/ManimCommunity/manim/pull/3332)
* Updated sphinx deps by [@JasonGrace2282](https://github.com/JasonGrace2282)
in [PR #3720](https://github.com/ManimCommunity/manim/pull/3720)
New Contributors[¶](https://docs.manim.community/en/stable/changelog/0.18.1-changelog.html#new-contributors "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------------
* [@Lawqup](https://github.com/Lawqup)
made their first contribution in [PR #3461](https://github.com/ManimCommunity/manim/pull/3461)
* [@jcep](https://github.com/jcep)
made their first contribution in [PR #3477](https://github.com/ManimCommunity/manim/pull/3477)
* [@szchixy](https://github.com/szchixy)
made their first contribution in [PR #3498](https://github.com/ManimCommunity/manim/pull/3498)
* [@PikaBlue107](https://github.com/PikaBlue107)
made their first contribution in [PR #3459](https://github.com/ManimCommunity/manim/pull/3459)
* [@yuan-xy](https://github.com/yuan-xy)
made their first contribution in [PR #3509](https://github.com/ManimCommunity/manim/pull/3509)
* [@MathItYT](https://github.com/MathItYT)
made their first contribution in [PR #3516](https://github.com/ManimCommunity/manim/pull/3516)
* [@doaamuham](https://github.com/doaamuham)
made their first contribution in [PR #3499](https://github.com/ManimCommunity/manim/pull/3499)
* [@RobinPH](https://github.com/RobinPH)
made their first contribution in [PR #3428](https://github.com/ManimCommunity/manim/pull/3428)
* [@pauluhlenbruck](https://github.com/pauluhlenbruck)
made their first contribution in [PR #3513](https://github.com/ManimCommunity/manim/pull/3513)
* [@yashm277](https://github.com/yashm277)
made their first contribution in [PR #3436](https://github.com/ManimCommunity/manim/pull/3436)
* [@TheMathematicFanatic](https://github.com/TheMathematicFanatic)
made their first contribution in [PR #3408](https://github.com/ManimCommunity/manim/pull/3408)
* [@vvolhejn](https://github.com/vvolhejn)
made their first contribution in [PR #3561](https://github.com/ManimCommunity/manim/pull/3561)
* [@hydromelvictor](https://github.com/hydromelvictor)
made their first contribution in [PR #3574](https://github.com/ManimCommunity/manim/pull/3574)
* [@dandavison](https://github.com/dandavison)
made their first contribution in [PR #3568](https://github.com/ManimCommunity/manim/pull/3568)
* [@Gixtox](https://github.com/Gixtox)
made their first contribution in [PR #3528](https://github.com/ManimCommunity/manim/pull/3528)
* [@staghado](https://github.com/staghado)
made their first contribution in [PR #3429](https://github.com/ManimCommunity/manim/pull/3429)
* [@biinnnggggg](https://github.com/biinnnggggg)
made their first contribution in [PR #3692](https://github.com/ManimCommunity/manim/pull/3692)
* [@HairlessVillager](https://github.com/HairlessVillager)
made their first contribution in [PR #3674](https://github.com/ManimCommunity/manim/pull/3674)
* [@SirJamesClarkMaxwell](https://github.com/SirJamesClarkMaxwell)
made their first contribution in [PR #3675](https://github.com/ManimCommunity/manim/pull/3675)
* [@danielzsh](https://github.com/danielzsh)
made their first contribution in [PR #3703](https://github.com/ManimCommunity/manim/pull/3703)
* [@TheCrowned](https://github.com/TheCrowned)
made their first contribution in [PR #3721](https://github.com/ManimCommunity/manim/pull/3721)
* [@MontroyJosh](https://github.com/MontroyJosh)
made their first contribution in [PR #3718](https://github.com/ManimCommunity/manim/pull/3718)
* [@amrear](https://github.com/amrear)
made their first contribution in [PR #3730](https://github.com/ManimCommunity/manim/pull/3730)
**Full Changelog**: https://github.com/ManimCommunity/manim/compare/v0.18.0.post0…v0.18.1
---
# DummySceneFileWriter - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.rst "Edit this page")
DummySceneFileWriter[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#dummyscenefilewriter "Link to this heading")
=======================================================================================================================================================================================
Qualified name: `manim.utils.testing.\_test\_class\_makers.DummySceneFileWriter`
class DummySceneFileWriter(_renderer_, _scene\_name_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter "Link to this definition")
Bases: [`SceneFileWriter`](https://docs.manim.community/en/stable/reference/manim.scene.scene_file_writer.SceneFileWriter.html#manim.scene.scene_file_writer.SceneFileWriter "manim.scene.scene_file_writer.SceneFileWriter")
Delegate of SceneFileWriter used to test the frames.
Methods
| | |
| --- | --- |
| [`add_partial_movie_file`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.add_partial_movie_file "manim.utils.testing._test_class_makers.DummySceneFileWriter.add_partial_movie_file") | Adds a new partial movie file path to `scene.partial_movie_files` and current section from a hash. |
| [`begin_animation`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.begin_animation "manim.utils.testing._test_class_makers.DummySceneFileWriter.begin_animation") | Used internally by manim to stream the animation to FFMPEG for displaying or writing to a file. |
| [`clean_cache`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.clean_cache "manim.utils.testing._test_class_makers.DummySceneFileWriter.clean_cache") | Will clean the cache by removing the oldest partial\_movie\_files. |
| [`combine_to_movie`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_movie "manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_movie") | Used internally by Manim to combine the separate partial movie files that make up a Scene into a single video file for that Scene. |
| [`combine_to_section_videos`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_section_videos "manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_section_videos") | Concatenate partial movie files for each section. |
| [`end_animation`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.end_animation "manim.utils.testing._test_class_makers.DummySceneFileWriter.end_animation") | Internally used by Manim to stop streaming to FFMPEG gracefully. |
| [`init_output_directories`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.init_output_directories "manim.utils.testing._test_class_makers.DummySceneFileWriter.init_output_directories") | Initialise output directories. |
| [`write_frame`](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.write_frame "manim.utils.testing._test_class_makers.DummySceneFileWriter.write_frame") | Used internally by Manim to write a frame to the FFMPEG input buffer. |
Attributes
| | |
| --- | --- |
| `force_output_as_scene_name` | |
Parameters:
* **renderer** (_CairoRenderer_ _|_ _OpenGLRenderer_)
* **scene\_name** (_str_)
* **kwargs** (_Any_)
add\_partial\_movie\_file(_hash\_animation_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.add_partial_movie_file)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.add_partial_movie_file "Link to this definition")
Adds a new partial movie file path to `scene.partial_movie_files` and current section from a hash.
This method will compute the path from the hash. In addition to that it adds the new animation to the current section.
Parameters:
**hash\_animation** (_str_ _|_ _None_) – Hash of the animation.
Return type:
None
begin\_animation(_allow\_write\=True_, _file\_path\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.begin_animation)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.begin_animation "Link to this definition")
Used internally by manim to stream the animation to FFMPEG for displaying or writing to a file.
Parameters:
* **allow\_write** (_bool_) – Whether or not to write to a video file.
* **file\_path** (_TypeAliasForwardRef__(__'~manim.typing.StrPath'__)_ _|_ _None_)
Return type:
_Any_
clean\_cache()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.clean_cache)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.clean_cache "Link to this definition")
Will clean the cache by removing the oldest partial\_movie\_files.
Return type:
None
combine\_to\_movie()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.combine_to_movie)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_movie "Link to this definition")
Used internally by Manim to combine the separate partial movie files that make up a Scene into a single video file for that Scene.
Return type:
None
combine\_to\_section\_videos()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.combine_to_section_videos)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.combine_to_section_videos "Link to this definition")
Concatenate partial movie files for each section.
Return type:
None
end\_animation(_allow\_write\=False_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.end_animation)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.end_animation "Link to this definition")
Internally used by Manim to stop streaming to FFMPEG gracefully.
Parameters:
**allow\_write** (_bool_) – Whether or not to write to a video file.
Return type:
None
init\_output\_directories(_scene\_name_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.init_output_directories)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.init_output_directories "Link to this definition")
Initialise output directories.
Notes
The directories are read from `config`, for example `config['media_dir']`. If the target directories don’t already exist, they will be created.
Parameters:
**scene\_name** (_str_)
Return type:
None
write\_frame(_frame\_or\_renderer_, _num\_frames\=1_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/utils/testing/_test_class_makers.html#DummySceneFileWriter.write_frame)
[¶](https://docs.manim.community/en/stable/reference/manim.utils.testing._test_class_makers.DummySceneFileWriter.html#manim.utils.testing._test_class_makers.DummySceneFileWriter.write_frame "Link to this definition")
Used internally by Manim to write a frame to the FFMPEG input buffer.
Parameters:
* **frame\_or\_renderer** (_TypeAliasForwardRef__(__'~manim.typing.PixelArray'__)_ _|_ _OpenGLRenderer_) – Pixel array of the frame.
* **num\_frames** (_int_) – The number of times to write frame.
Return type:
None
---
# v0.3.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.3.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.3.0-changelog.rst "Edit this page")
v0.3.0[¶](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html#v0-3-0 "Link to this heading")
===============================================================================================================
Date:
February 1, 2021
The changes since Manim Community release v0.2.0 are listed below.
New Features[¶](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html#new-features "Link to this heading")
---------------------------------------------------------------------------------------------------------------------------
* [PR #945](https://github.com/ManimCommunity/manim/pull/945)
: `change_layout()` method for [`Graph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.Graph.html#manim.mobject.graph.Graph "manim.mobject.graph.Graph")
mobject
* [PR #943](https://github.com/ManimCommunity/manim/pull/943)
: IPython %%manim magic
* [PR #970](https://github.com/ManimCommunity/manim/pull/970)
: Added `--version` command line flag
* [PR #948](https://github.com/ManimCommunity/manim/pull/948)
: Allow passing a code string to [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
* [PR #917](https://github.com/ManimCommunity/manim/pull/917)
: Allow overriding new-style method animations
* [PR #756](https://github.com/ManimCommunity/manim/pull/756)
: Allow setting frame\_height and frame\_width via config file
* [PR #939](https://github.com/ManimCommunity/manim/pull/939)
: Added custom font files support
* [PR #892](https://github.com/ManimCommunity/manim/pull/892)
: Added ManimCommunity colors
* [PR #922](https://github.com/ManimCommunity/manim/pull/922)
: Tree layout for Graph mobject
* [PR #935](https://github.com/ManimCommunity/manim/pull/935)
: Added code of conduct
* [PR #916](https://github.com/ManimCommunity/manim/pull/916)
: Multi-column layout for partite graphs
* [PR #742](https://github.com/ManimCommunity/manim/pull/742)
: Units: Pixels, Munits, Percent in `unit`
* [PR #893](https://github.com/ManimCommunity/manim/pull/893)
: Convenience method `from_networkx()` for creating a graph from a networkx graph
Bugfixes and Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.3.0-changelog.html#bugfixes-and-enhancements "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------------------------------------
* [PR #988](https://github.com/ManimCommunity/manim/pull/988)
: Fix Windows CI pipeline by adding missing LaTeX package
* [PR #961](https://github.com/ManimCommunity/manim/pull/961)
: Added typings and docs for vectorized mobjects and bezier related functions
* [PR #977](https://github.com/ManimCommunity/manim/pull/977)
: JupyterLab docker image and documentation for manim and IPython
* [PR #985](https://github.com/ManimCommunity/manim/pull/985)
: Fix variable name for webgl renderer
* [PR #954](https://github.com/ManimCommunity/manim/pull/954)
: Fix edges lagging behind vertices in animations of graphs
* [PR #980](https://github.com/ManimCommunity/manim/pull/980)
: Allow usage of custom Pygments styles in Code
* [PR #952](https://github.com/ManimCommunity/manim/pull/952)
: Allow passing tween information to the WebGL frontend
* [PR #978](https://github.com/ManimCommunity/manim/pull/978)
: Fix `possible_paths` not printing in `code_mobject`
* [PR #976](https://github.com/ManimCommunity/manim/pull/976)
: Update `ManimPango`
* [PR #967](https://github.com/ManimCommunity/manim/pull/967)
: Automatically import plugins
* [PR #971](https://github.com/ManimCommunity/manim/pull/971)
: Make ManimCommunity look consistent
* [PR #957](https://github.com/ManimCommunity/manim/pull/957)
: Raise `NotImplementedError` when trying to chain overridden method animations
* [PR #947](https://github.com/ManimCommunity/manim/pull/947)
: Several fixes and improvements for `PointCloundDot`
* [PR #923](https://github.com/ManimCommunity/manim/pull/923)
: Documentation: move installation instructions for developers to page for developers
* [PR #964](https://github.com/ManimCommunity/manim/pull/964)
: Added unit test for [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
’s unit vector
* [PR #960](https://github.com/ManimCommunity/manim/pull/960)
: Magnitude of [`NumberLine`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.number_line.NumberLine.html#manim.mobject.graphing.number_line.NumberLine "manim.mobject.graphing.number_line.NumberLine")
’s unit vector should be `unit_size`, not 1
* [PR #958](https://github.com/ManimCommunity/manim/pull/958)
: Fix code formatting in `utils/debug.py`
* [PR #953](https://github.com/ManimCommunity/manim/pull/953)
: Update license year
* [PR #944](https://github.com/ManimCommunity/manim/pull/944)
: Interpolate stroke opacity in [`FadeIn`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeIn.html#manim.animation.fading.FadeIn "manim.animation.fading.FadeIn")
and update `stroke_opacity` and `fill_opacity` in `set_stroke()` and [`set_fill()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.set_fill "manim.mobject.types.vectorized_mobject.VMobject.set_fill")
* [PR #865](https://github.com/ManimCommunity/manim/pull/865)
: Rename `get_submobject_index_labels` to `index_labels`
* [PR #941](https://github.com/ManimCommunity/manim/pull/941)
: Added keyword arguments `x_min`, `x_max`, `y_min`, `y_max` to [`ThreeDAxes`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes")
* [PR #886](https://github.com/ManimCommunity/manim/pull/886)
: Let the render progress bar show details about the rendered animation again
* [PR #936](https://github.com/ManimCommunity/manim/pull/936)
: Fix [`BulletedList`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#manim.mobject.text.tex_mobject.BulletedList "manim.mobject.text.tex_mobject.BulletedList")
TeX environment problem and add a typing to `get_module`
* [PR #938](https://github.com/ManimCommunity/manim/pull/938)
: Remove dependency on progressbar
* [PR #937](https://github.com/ManimCommunity/manim/pull/937)
: Change ‘brew cask install’ to ‘brew install –cask’ for CI pipeline
* [PR #933](https://github.com/ManimCommunity/manim/pull/933)
: Make matrix work with lists again
* [PR #932](https://github.com/ManimCommunity/manim/pull/932)
: Correctly parse `log_dir` option
* [PR #920](https://github.com/ManimCommunity/manim/pull/920)
: Raise error if markup in [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText")
is invalid
* [PR #929](https://github.com/ManimCommunity/manim/pull/929)
: Raise an error if a [`Matrix`](https://docs.manim.community/en/stable/reference/manim.mobject.matrix.Matrix.html#manim.mobject.matrix.Matrix "manim.mobject.matrix.Matrix")
object is created with < 2-dimensional input
* [PR #907](https://github.com/ManimCommunity/manim/pull/907)
: Make Scene.add\_sound work again (when running with `--disable_caching`)
* [PR #906](https://github.com/ManimCommunity/manim/pull/906)
: Allow new-style method animation to be used in animation groups
* [PR #908](https://github.com/ManimCommunity/manim/pull/908)
: Removed deprecated command line arguments from documentation
* [PR #903](https://github.com/ManimCommunity/manim/pull/903)
: Tiny grammar improvements
* [PR #904](https://github.com/ManimCommunity/manim/pull/904)
: Added blank line between imports and class example
* [PR #898](https://github.com/ManimCommunity/manim/pull/898)
: CI: fix publish workflow
---
# v0.19.0 - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/changelog/0.19.0-changelog.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/changelog/0.19.0-changelog.rst "Edit this page")
v0.19.0[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#v0-19-0 "Link to this heading")
==================================================================================================================
Date:
January 20, 2025
Major Changes[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#major-changes "Link to this heading")
------------------------------------------------------------------------------------------------------------------------------
With the release of Manim v0.19.0, we’ve made lots of progress with making Manim easier to install!
One of the biggest changes in this release is the replacement of the external `ffmpeg` dependency with the `pyav` library. This means that users no longer have to install `ffmpeg` in order to use Manim - they can just `pip install manim` and it will work!
In light of this change, we also rewrote our [installation docs](https://docs.manim.community/en/stable/installation.html#local-installation)
to recommend using a new tool called [uv](https://docs.astral.sh/uv/)
to install Manim.
Note
Do not worry if you installed Manim with any previous methods, like homebrew, pip, choco, or scoop. Those methods will still work, and are not deprecated. However, the recommended way to install Manim is now with [uv](https://docs.astral.sh/uv/)
.
Contributors[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#contributors "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------
A total of 54 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.
* Aarush Deshpande
* Abulafia
* Achille Fouilleul +
* Benjamin Hackl
* CJ Lee +
* Cameron Burdgick +
* Chin Zhe Ning
* Christopher Hampson +
* ChungLeeCN +
* Eddie Ruiz +
* 6. Muenkel +
* Francisco Manríquez Novoa
* Geoo Chi +
* Henrik Skov Midtiby +
* Hugo Chargois +
* Irvanal Haq +
* Jay Gupta +
* Laifsyn +
* Larry Skuse +
* Nemo2510 +
* Nikhil Iyer
* Nikhila Gurusinghe +
* Rehmatpal Singh +
* Romit Mohane +
* Saveliy Yusufov +
* Sir James Clark Maxwell
* Sophia Wisdom +
* Tristan Schulz
* VPC +
* Victorien
* Xiuyuan (Jack) Yuan +
* alembcke
* anagorko +
* czuzu +
* fogsong233 +
* jkjkil4 +
* modjfy +
* nitzanbueno +
* yang-tsao +
The patches included in this release have been reviewed by the following contributors.
* Aarush Deshpande
* Achille Fouilleul
* Benjamin Hackl
* Christopher Hampson
* Eddie Ruiz
* Francisco Manríquez Novoa
* Henrik Skov Midtiby
* Hugo Chargois
* Irvanal Haq
* Jay Gupta
* Jérome Eertmans
* Nemo2510
* Nikhila Gurusinghe
* OliverStrait
* Saveliy Yusufov
* Sir James Clark Maxwell
* Tristan Schulz
* VPC
* Victorien
* Xiuyuan (Jack) Yuan
* alembcke
* github-advanced-security\[bot\]
Pull requests merged[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#pull-requests-merged "Link to this heading")
--------------------------------------------------------------------------------------------------------------------------------------------
A total of 138 pull requests were merged for this release.
### Highlights[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#highlights "Link to this heading")
* [PR #3501](https://github.com/ManimCommunity/manim/pull/3501)
: Replaced external `ffmpeg` dependency with `pyav`
This change removes the need to have `ffmpeg` available as a command line tool when using Manim. While `pyav` technically also uses `ffmpeg` internally, the maintainers of `pyav` distribute it in their binary wheels.
* [PR #3518](https://github.com/ManimCommunity/manim/pull/3518)
: Created a [`HSV`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.HSV.html#manim.utils.color.core.HSV "manim.utils.color.core.HSV")
color class, and added support for custom color spaces
This extends the color system of Manim and adds support to implement custom color spaces. See the implementation of [`HSV`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.HSV.html#manim.utils.color.core.HSV "manim.utils.color.core.HSV")
for a practical example.
* [PR #3930](https://github.com/ManimCommunity/manim/pull/3930)
: Completely reworked the installation instructions
As a consequence of removing the need for the external `ffmpeg` dependency, we have reworked and massively simplified the installation instructions. Given that practically, user-written scenes are effectively small self-contained Python projects, the new instructions strongly recommend using the [project and dependency management tool uv](https://docs.astral.sh/uv/)
to ensure a consistent and reproducible environment.
* [PR #3967](https://github.com/ManimCommunity/manim/pull/3967)
: Added support for Python 3.13
This adds support for Python 3.13, which brings the range of currently supported Python versions to 3.9 – 3.13.
* [PR #3966](https://github.com/ManimCommunity/manim/pull/3966)
: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
can now be initialized with [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
iterables
Groups of Mobjects can now be created by passing an iterable to the [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
constructors:
my\_group \= VGroup(Dot() for \_ in range(10))
### Breaking changes[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#breaking-changes "Link to this heading")
* [PR #3797](https://github.com/ManimCommunity/manim/pull/3797)
: Replaced `Code.styles_list` with [`Code.get_styles_list()`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code.get_styles_list "manim.mobject.text.code_mobject.Code.get_styles_list")
The `styles_list` attribute of the [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
class has been replaced with a class method [`Code.get_styles_list()`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code.get_styles_list "manim.mobject.text.code_mobject.Code.get_styles_list")
. This method returns a list of all available values for the `formatter_style` argument of [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
.
* [PR #3884](https://github.com/ManimCommunity/manim/pull/3884)
: Renamed parameters and variables conflicting with builtin functions
To avoid having keyword arguments named after builtin functions, the following two changes were made to user-facing functions:
* `ManimColor.from_hex(hex=...)` is now `ManimColor.from_hex(hex_str=...)`
* `Scene.next_section(type=...)` is now `Scene.next_section(section_type=...)`
* [PR #3922](https://github.com/ManimCommunity/manim/pull/3922)
: Removed `inner_radius` and `outer_radius` from [`Sector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#manim.mobject.geometry.arc.Sector "manim.mobject.geometry.arc.Sector")
constructor
To construct a [`Sector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Sector.html#manim.mobject.geometry.arc.Sector "manim.mobject.geometry.arc.Sector")
, you now need to specify a `radius` (and an `angle`). In particular, [`AnnularSector`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.AnnularSector.html#manim.mobject.geometry.arc.AnnularSector "manim.mobject.geometry.arc.AnnularSector")
still accepts both `inner_radius` and `outer_radius` arguments.
* [PR #3964](https://github.com/ManimCommunity/manim/pull/3964)
: Allow [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
to accept multiple Mobjects
This changes the signature of [`SurroundingRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.SurroundingRectangle.html#manim.mobject.geometry.shape_matchers.SurroundingRectangle "manim.mobject.geometry.shape_matchers.SurroundingRectangle")
to accept a sequence of Mobjects instead of a single Mobject. As a consequence, other arguments that could be specified as positional ones before now need to be specified as keyword arguments:
SurroundingRectangle(some\_mobject, RED, 0.3) \# raises error now
SurroundingRectangle(some\_mobject, color\=RED, buff\=0.3) \# correct usage
* [PR #4115](https://github.com/ManimCommunity/manim/pull/4115)
: Completely rewrite the implementation of the [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
mobject
This includes several breaking changes to the interface of the class to make it more consistent. See the documentation of [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code")
for a detailed description of the new interface, and the description of the pull request [PR #4115](https://github.com/ManimCommunity/manim/pull/4115)
for an overview of changes to the old keyword arguments.
### New features[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#new-features "Link to this heading")
* [PR #3148](https://github.com/ManimCommunity/manim/pull/3148)
: Added a `colorscale` argument to [`CoordinateSystem.plot()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.CoordinateSystem.html#manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot "manim.mobject.graphing.coordinate_systems.CoordinateSystem.plot")
* [PR #3612](https://github.com/ManimCommunity/manim/pull/3612)
: Add three animations that together simulate a typing animation
* [PR #3754](https://github.com/ManimCommunity/manim/pull/3754)
: Add `@` shorthand for [`Axes.coords_to_point()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.coords_to_point "manim.mobject.graphing.coordinate_systems.Axes.coords_to_point")
and [`Axes.point_to_coords()`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.Axes.html#manim.mobject.graphing.coordinate_systems.Axes.point_to_coords "manim.mobject.graphing.coordinate_systems.Axes.point_to_coords")
* [PR #3876](https://github.com/ManimCommunity/manim/pull/3876)
: Add [`Animation.set_default()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation.set_default "manim.animation.animation.Animation.set_default")
class method
* [PR #3903](https://github.com/ManimCommunity/manim/pull/3903)
: Preserve colors of LaTeX coloring commands
* [PR #3913](https://github.com/ManimCommunity/manim/pull/3913)
: Added [`DVIPSNAMES`](https://docs.manim.community/en/stable/reference/manim.utils.color.DVIPSNAMES.html#module-manim.utils.color.DVIPSNAMES "manim.utils.color.DVIPSNAMES")
and [`SVGNAMES`](https://docs.manim.community/en/stable/reference/manim.utils.color.SVGNAMES.html#module-manim.utils.color.SVGNAMES "manim.utils.color.SVGNAMES")
color palettes
* [PR #3933](https://github.com/ManimCommunity/manim/pull/3933)
: Added [`ConvexHull`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.ConvexHull.html#manim.mobject.geometry.polygram.ConvexHull "manim.mobject.geometry.polygram.ConvexHull")
, [`ConvexHull3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#manim.mobject.three_d.polyhedra.ConvexHull3D "manim.mobject.three_d.polyhedra.ConvexHull3D")
, [`Label`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.Label.html#manim.mobject.geometry.labeled.Label "manim.mobject.geometry.labeled.Label")
and [`LabeledPolygram`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.labeled.LabeledPolygram.html#manim.mobject.geometry.labeled.LabeledPolygram "manim.mobject.geometry.labeled.LabeledPolygram")
* [PR #3992](https://github.com/ManimCommunity/manim/pull/3992)
: Add darker, lighter and contrasting methods to [`ManimColor`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
* [PR #3997](https://github.com/ManimCommunity/manim/pull/3997)
: Add a time property to scene ([`Scene.time`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.time "manim.scene.scene.Scene.time")
)
* [PR #4039](https://github.com/ManimCommunity/manim/pull/4039)
: Added the `delay` parameter to [`turn_animation_into_updater()`](https://docs.manim.community/en/stable/reference/manim.animation.updaters.mobject_update_utils.html#manim.animation.updaters.mobject_update_utils.turn_animation_into_updater "manim.animation.updaters.mobject_update_utils.turn_animation_into_updater")
### Enhancements[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#enhancements "Link to this heading")
* [PR #3829](https://github.com/ManimCommunity/manim/pull/3829)
: Rewrite [`get_quadratic_approximation_of_cubic()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.get_quadratic_approximation_of_cubic "manim.utils.bezier.get_quadratic_approximation_of_cubic")
to produce smoother animated curves
* [PR #3855](https://github.com/ManimCommunity/manim/pull/3855)
: Log execution time of sample scene in the `manim checkhealth` command
* [PR #3888](https://github.com/ManimCommunity/manim/pull/3888)
: Significantly reduce rendering time with a separate thread for writing frames to stream
* [PR #3890](https://github.com/ManimCommunity/manim/pull/3890)
: Better error messages for [`DrawBorderThenFill`](https://docs.manim.community/en/stable/reference/manim.animation.creation.DrawBorderThenFill.html#manim.animation.creation.DrawBorderThenFill "manim.animation.creation.DrawBorderThenFill")
* [PR #3893](https://github.com/ManimCommunity/manim/pull/3893)
: Improve line rendering performance of [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
* [PR #3901](https://github.com/ManimCommunity/manim/pull/3901)
: Changed `Square.side_length` attribute to a property
* [PR #3965](https://github.com/ManimCommunity/manim/pull/3965)
: Added the `scale_stroke` boolean parameter to [`VMobject.scale()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.scale "manim.mobject.types.vectorized_mobject.VMobject.scale")
* [PR #3974](https://github.com/ManimCommunity/manim/pull/3974)
: Made videos embedded in Google Colab by default
* [PR #3982](https://github.com/ManimCommunity/manim/pull/3982)
: Refactored `run_time` validation for [`Animation`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")
and [`Scene.wait()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.wait "manim.scene.scene.Scene.wait")
* [PR #4017](https://github.com/ManimCommunity/manim/pull/4017)
: Allow animations with `run_time=0` and implement convenience [`Add`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Add.html#manim.animation.animation.Add "manim.animation.animation.Add")
animation
* [PR #4034](https://github.com/ManimCommunity/manim/pull/4034)
: Draw more accurate circular [`Arc`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Arc.html#manim.mobject.geometry.arc.Arc "manim.mobject.geometry.arc.Arc")
mobjects for large angles
* [PR #4051](https://github.com/ManimCommunity/manim/pull/4051)
: Add `__hash__` method to [`ManimColor`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
* [PR #4108](https://github.com/ManimCommunity/manim/pull/4108)
: Remove duplicate declaration of `__all__` in [`vectorized_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html#module-manim.mobject.types.vectorized_mobject "manim.mobject.types.vectorized_mobject")
### Optimizations[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#optimizations "Link to this heading")
* [PR #3760](https://github.com/ManimCommunity/manim/pull/3760)
: Optimize [`VMobject.pointwise_become_partial()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.pointwise_become_partial "manim.mobject.types.vectorized_mobject.VMobject.pointwise_become_partial")
* [PR #3765](https://github.com/ManimCommunity/manim/pull/3765)
: Optimize [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
methods which append to `points`
* [PR #3766](https://github.com/ManimCommunity/manim/pull/3766)
: Created and optimized Bézier splitting functions such as [`partial_bezier_points()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.partial_bezier_points "manim.utils.bezier.partial_bezier_points")
in [`manim.utils.bezier`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#module-manim.utils.bezier "manim.utils.bezier")
* [PR #3767](https://github.com/ManimCommunity/manim/pull/3767)
: Optimized [`manim.utils.bezier.get_smooth_cubic_bezier_handle_points()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.get_smooth_cubic_bezier_handle_points "manim.utils.bezier.get_smooth_cubic_bezier_handle_points")
* [PR #3768](https://github.com/ManimCommunity/manim/pull/3768)
: Optimized [`manim.utils.bezier.is_closed()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.is_closed "manim.utils.bezier.is_closed")
* [PR #3960](https://github.com/ManimCommunity/manim/pull/3960)
: Optimized [`interpolate()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.interpolate "manim.utils.bezier.interpolate")
and [`bezier()`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#manim.utils.bezier.bezier "manim.utils.bezier.bezier")
in [`manim.utils.bezier`](https://docs.manim.community/en/stable/reference/manim.utils.bezier.html#module-manim.utils.bezier "manim.utils.bezier")
### Fixed bugs[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#fixed-bugs "Link to this heading")
* [PR #3706](https://github.com/ManimCommunity/manim/pull/3706)
: Fixed [`Line.put_start_and_end_on()`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line.put_start_and_end_on "manim.mobject.geometry.line.Line.put_start_and_end_on")
to use the actual end of an [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D")
* [PR #3732](https://github.com/ManimCommunity/manim/pull/3732)
: Fixed infinite loop in OpenGL `BackgroundRectangle.get_color()`
* [PR #3756](https://github.com/ManimCommunity/manim/pull/3756)
: Fix assertions and improve error messages when adding submobjects
* [PR #3778](https://github.com/ManimCommunity/manim/pull/3778)
: Fixed [`there_and_back_with_pause()`](https://docs.manim.community/en/stable/reference/manim.utils.rate_functions.html#manim.utils.rate_functions.there_and_back_with_pause "manim.utils.rate_functions.there_and_back_with_pause")
rate function behaviour with different `pause_ratio` values
* [PR #3786](https://github.com/ManimCommunity/manim/pull/3786)
: Fix [`DiGraph`](https://docs.manim.community/en/stable/reference/manim.mobject.graph.DiGraph.html#manim.mobject.graph.DiGraph "manim.mobject.graph.DiGraph")
edges not fading correctly on [`FadeIn`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeIn.html#manim.animation.fading.FadeIn "manim.animation.fading.FadeIn")
and [`FadeOut`](https://docs.manim.community/en/stable/reference/manim.animation.fading.FadeOut.html#manim.animation.fading.FadeOut "manim.animation.fading.FadeOut")
* [PR #3790](https://github.com/ManimCommunity/manim/pull/3790)
: Fixed the `get_nth_subpath()` function expecting a numpy array
* [PR #3832](https://github.com/ManimCommunity/manim/pull/3832)
: Convert audio files to `.wav` before passing to pydub
* [PR #3680](https://github.com/ManimCommunity/manim/pull/3680)
: Fixed behavior of `config.background_opacity < 1`
* [PR #3839](https://github.com/ManimCommunity/manim/pull/3839)
: Fixed [`ManimConfig.format`](https://docs.manim.community/en/stable/reference/manim._config.utils.ManimConfig.html#manim._config.utils.ManimConfig.format "manim._config.utils.ManimConfig.format")
not updating movie file extension
* [PR #3885](https://github.com/ManimCommunity/manim/pull/3885)
: Fixed `OpenGLMobject.invert()` not reassembling family
* [PR #3951](https://github.com/ManimCommunity/manim/pull/3951)
: Call [`Animation.finish()`](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation.finish "manim.animation.animation.Animation.finish")
for animations in an [`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
* [PR #4013](https://github.com/ManimCommunity/manim/pull/4013)
: Fixed scene skipping for `ManimConfig.upto_animation_number` set to 0
* [PR #4089](https://github.com/ManimCommunity/manim/pull/4089)
: Fixed bug with opacity of [`ImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject "manim.mobject.types.image_mobject.ImageMobject")
* [PR #4091](https://github.com/ManimCommunity/manim/pull/4091)
: Fixed [`VMobject.add_points_as_corners()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject.add_points_as_corners "manim.mobject.types.vectorized_mobject.VMobject.add_points_as_corners")
to safely handle empty `points` parameter
### Documentation-related changes[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#documentation-related-changes "Link to this heading")
* [PR #3669](https://github.com/ManimCommunity/manim/pull/3669)
: Added a [`manim.typing`](https://docs.manim.community/en/stable/reference/manim.typing.html#module-manim.typing "manim.typing")
guide
* [PR #3715](https://github.com/ManimCommunity/manim/pull/3715)
: Added docstrings to Brace
* [PR #3745](https://github.com/ManimCommunity/manim/pull/3745)
: Underline tag should be `` in the documentation
* [PR #3818](https://github.com/ManimCommunity/manim/pull/3818)
: Automatically document usages of `typing.TypeVar`
* [PR #3849](https://github.com/ManimCommunity/manim/pull/3849)
: Fix incorrect `versionadded` version number in plugin section in docs
* [PR #3851](https://github.com/ManimCommunity/manim/pull/3851)
: Rename `manim.typing.Image` type aliases to [`PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
to avoid conflict with `PIL.Image`
* [PR #3857](https://github.com/ManimCommunity/manim/pull/3857)
: Update installation instructions for MacOS (via dedicated brew formula)
* [PR #3878](https://github.com/ManimCommunity/manim/pull/3878)
: Fixed typehint in `types.rst` and replaced outdated reference to `manim.typing.Image` with [`manim.typing.PixelArray`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
* [PR #3924](https://github.com/ManimCommunity/manim/pull/3924)
: Fix `SyntaxWarning` when building docs + use Python 3.13 for readthedocs build
* [PR #3958](https://github.com/ManimCommunity/manim/pull/3958)
: Fix: `.to_edge`’s example demonstration in docs
* [PR #3972](https://github.com/ManimCommunity/manim/pull/3972)
: Refining documentations for [`moving_camera_scene`](https://docs.manim.community/en/stable/reference/manim.scene.moving_camera_scene.html#module-manim.scene.moving_camera_scene "manim.scene.moving_camera_scene")
module
* [PR #4032](https://github.com/ManimCommunity/manim/pull/4032)
: Bump version and create changelog for `v0.19.0`
* [PR #4044](https://github.com/ManimCommunity/manim/pull/4044)
: Added support for autodocumenting type aliases that use the `type` syntax
* [PR #4065](https://github.com/ManimCommunity/manim/pull/4065)
: Polish documentation of [`utils.color.core`](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#module-manim.utils.color.core "manim.utils.color.core")
and remove `interpolate_array` function
* [PR #4077](https://github.com/ManimCommunity/manim/pull/4077)
: Update README and documentation landing page, improve way how 3b1b is credited
* [PR #4100](https://github.com/ManimCommunity/manim/pull/4100)
: Add wavy square example to [`Homotopy`](https://docs.manim.community/en/stable/reference/manim.animation.movement.Homotopy.html#manim.animation.movement.Homotopy "manim.animation.movement.Homotopy")
* [PR #4107](https://github.com/ManimCommunity/manim/pull/4107)
: Corrected a typo in the deep dive guide
* [PR #4116](https://github.com/ManimCommunity/manim/pull/4116)
: Fix broken link to Poetry installation in contribution docs
### Type Hints[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#type-hints "Link to this heading")
* [PR #3751](https://github.com/ManimCommunity/manim/pull/3751)
: Added typehints to [`manim.utils.iterables`](https://docs.manim.community/en/stable/reference/manim.utils.iterables.html#module-manim.utils.iterables "manim.utils.iterables")
* [PR #3803](https://github.com/ManimCommunity/manim/pull/3803)
: Added typings to `OpenGLMobject`
* [PR #3902](https://github.com/ManimCommunity/manim/pull/3902)
: fixed a wrong type hint in [`Scene.restructure_mobjects()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.restructure_mobjects "manim.scene.scene.Scene.restructure_mobjects")
* [PR #3916](https://github.com/ManimCommunity/manim/pull/3916)
: fixed type hint in `DrawBorderThenFill.interpolate_submobject()`
* [PR #3926](https://github.com/ManimCommunity/manim/pull/3926)
: Fixed some typehints of [`ParametricFunction`](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.functions.ParametricFunction.html#manim.mobject.graphing.functions.ParametricFunction "manim.mobject.graphing.functions.ParametricFunction")
* [PR #3940](https://github.com/ManimCommunity/manim/pull/3940)
: Fixed `np.float_` to `np.float64` while using numpy versions above 2.0
* [PR #3961](https://github.com/ManimCommunity/manim/pull/3961)
: Added typehints to [`manim.mobject.geometry`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html#module-manim.mobject.geometry "manim.mobject.geometry")
* [PR #3980](https://github.com/ManimCommunity/manim/pull/3980)
: Added new [`PointND`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND "manim.typing.PointND")
and [`PointND_Array`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PointND_Array "manim.typing.PointND_Array")
type aliases
* [PR #3988](https://github.com/ManimCommunity/manim/pull/3988)
: Added type hints to [`manim.cli`](https://docs.manim.community/en/stable/reference/manim.cli.html#module-manim.cli "manim.cli")
module
* [PR #3999](https://github.com/ManimCommunity/manim/pull/3999)
: Add type annotations to `manim.utils`
* [PR #4006](https://github.com/ManimCommunity/manim/pull/4006)
: Stopped ignoring `manim.plugins` errors in `mypy.ini`
* [PR #4007](https://github.com/ManimCommunity/manim/pull/4007)
: Added typings to `manim.__main__`
* [PR #4027](https://github.com/ManimCommunity/manim/pull/4027)
: Rename `InternalPoint3D` to [`Point3D`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
, `Point3D` to [`Point3DLike`](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
and other point-related type aliases
* [PR #4038](https://github.com/ManimCommunity/manim/pull/4038)
: Fixed type hint of [`Scene.play()`](https://docs.manim.community/en/stable/reference/manim.scene.scene.Scene.html#manim.scene.scene.Scene.play "manim.scene.scene.Scene.play")
to allow [`Mobject.animate`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.animate "manim.mobject.mobject.Mobject.animate")
### Internal Improvements and Automation[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#internal-improvements-and-automation "Link to this heading")
* [PR #3737](https://github.com/ManimCommunity/manim/pull/3737)
: Fixed action for building downloadable documentation
* [PR #3761](https://github.com/ManimCommunity/manim/pull/3761)
: Use `--py39-plus` in pre-commit
* [PR #3777](https://github.com/ManimCommunity/manim/pull/3777)
: Add pyproject for ruff formatting
* [PR #3779](https://github.com/ManimCommunity/manim/pull/3779)
: Switch pre-commit to use `ruff` for linting
* [PR #3795](https://github.com/ManimCommunity/manim/pull/3795)
: Replace Pyupgrade with Ruff rule
* [PR #3812](https://github.com/ManimCommunity/manim/pull/3812)
: Fix MacOS LaTeX CI
* [PR #3853](https://github.com/ManimCommunity/manim/pull/3853)
: Change from tempconfig to a config fixture in tests
* [PR #3858](https://github.com/ManimCommunity/manim/pull/3858)
: Update docker to use ENV x=y instead of ENV x y
* [PR #3872](https://github.com/ManimCommunity/manim/pull/3872)
: Use ruff for pytest style
* [PR #3873](https://github.com/ManimCommunity/manim/pull/3873)
: Use ruff instead of flake8-simplify
* [PR #3877](https://github.com/ManimCommunity/manim/pull/3877)
: Fix pre-commit linting
* [PR #3780](https://github.com/ManimCommunity/manim/pull/3780)
: Add Ruff Lint
* [PR #3781](https://github.com/ManimCommunity/manim/pull/3781)
: Ignore Ruff format in git blame
* [PR #3881](https://github.com/ManimCommunity/manim/pull/3881)
: Standardize docstrings with ruff pydocstyle rules
* [PR #3882](https://github.com/ManimCommunity/manim/pull/3882)
: Change flake8-comprehensions and flake8-bugbear to ruff
* [PR #3887](https://github.com/ManimCommunity/manim/pull/3887)
: Fix typo from HSV PR
* [PR #3923](https://github.com/ManimCommunity/manim/pull/3923)
: Use Ruff pygrep rules
* [PR #3925](https://github.com/ManimCommunity/manim/pull/3925)
: Use Github Markdown on README
* [PR #3955](https://github.com/ManimCommunity/manim/pull/3955)
: Use `subprocess` instead of `os.system`.
* [PR #3956](https://github.com/ManimCommunity/manim/pull/3956)
: Set AAC codec for audio in mp4 files, add transcoding utility
* [PR #4069](https://github.com/ManimCommunity/manim/pull/4069)
: Include Noto fonts in Docker image
* [PR #4102](https://github.com/ManimCommunity/manim/pull/4102)
: Remove PT004 from Ruff ignore rules
### Dependencies[¶](https://docs.manim.community/en/stable/changelog/0.19.0-changelog.html#dependencies "Link to this heading")
* [PR #3739](https://github.com/ManimCommunity/manim/pull/3739)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3746](https://github.com/ManimCommunity/manim/pull/3746)
: Bump tqdm from 4.66.1 to 4.66.3
* [PR #3750](https://github.com/ManimCommunity/manim/pull/3750)
: Bump jinja2 from 3.1.3 to 3.1.4
* [PR #3776](https://github.com/ManimCommunity/manim/pull/3776)
: Bump requests from 2.31.0 to 2.32.0
* [PR #3784](https://github.com/ManimCommunity/manim/pull/3784)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3794](https://github.com/ManimCommunity/manim/pull/3794)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3796](https://github.com/ManimCommunity/manim/pull/3796)
: Bump tornado from 6.4 to 6.4.1
* [PR #3801](https://github.com/ManimCommunity/manim/pull/3801)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3809](https://github.com/ManimCommunity/manim/pull/3809)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3810](https://github.com/ManimCommunity/manim/pull/3810)
: Bump urllib3 from 2.2.1 to 2.2.2
* [PR #3823](https://github.com/ManimCommunity/manim/pull/3823)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3827](https://github.com/ManimCommunity/manim/pull/3827)
: Fix docker build
* [PR #3834](https://github.com/ManimCommunity/manim/pull/3834)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3835](https://github.com/ManimCommunity/manim/pull/3835)
: Bump docker/build-push-action from 5 to 6
* [PR #3841](https://github.com/ManimCommunity/manim/pull/3841)
: Bump certifi from 2024.2.2 to 2024.7.4
* [PR #3844](https://github.com/ManimCommunity/manim/pull/3844)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3847](https://github.com/ManimCommunity/manim/pull/3847)
: Bump zipp from 3.18.2 to 3.19.1
* [PR #3865](https://github.com/ManimCommunity/manim/pull/3865)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3880](https://github.com/ManimCommunity/manim/pull/3880)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3889](https://github.com/ManimCommunity/manim/pull/3889)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3895](https://github.com/ManimCommunity/manim/pull/3895)
: Lock poetry.lock
* [PR #3896](https://github.com/ManimCommunity/manim/pull/3896)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3904](https://github.com/ManimCommunity/manim/pull/3904)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3911](https://github.com/ManimCommunity/manim/pull/3911)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3918](https://github.com/ManimCommunity/manim/pull/3918)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3929](https://github.com/ManimCommunity/manim/pull/3929)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #3931](https://github.com/ManimCommunity/manim/pull/3931)
: Bump cryptography from 43.0.0 to 43.0.1
* [PR #3987](https://github.com/ManimCommunity/manim/pull/3987)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #4023](https://github.com/ManimCommunity/manim/pull/4023)
: Bump tornado from 6.4.1 to 6.4.2
* [PR #4035](https://github.com/ManimCommunity/manim/pull/4035)
: \[pre-commit.ci\] pre-commit autoupdate
* [PR #4037](https://github.com/ManimCommunity/manim/pull/4037)
: Cap `pyav` version
---
# BraceLabel - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.BraceLabel.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.BraceLabel.rst "Edit this page")
BraceLabel[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#bracelabel "Link to this heading")
==========================================================================================================================================
Qualified name: `manim.mobject.svg.brace.BraceLabel`
class BraceLabel(_obj_, _text_, _brace\_direction\=array(\[ 0._, _\-1._, _0.\])_, _label\_constructor\=_, _font\_size\=48_, _buff\=0.2_, _brace\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#BraceLabel)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Create a brace with a label attached.
Parameters:
* **obj** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject adjacent to which the brace is placed.
* **text** (_str_) – The label text.
* **brace\_direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the brace. By default `DOWN`.
* **label\_constructor** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")\
_\]_) – A class or function used to construct a mobject representing the label. By default [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **font\_size** (_float_) – The font size of the label, passed to the `label_constructor`.
* **buff** (_float_) – The buffer between the mobject and the brace.
* **brace\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Arguments to be passed to [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
.
* **kwargs** (_Any_) – Additional arguments to be passed to [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Methods
| | |
| --- | --- |
| `change_brace_label` | |
| `change_label` | |
| `creation_anim` | |
| `shift_brace` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_obj_, _text_, _brace\_direction\=array(\[ 0._, _\-1._, _0.\])_, _label\_constructor\=_, _font\_size\=48_, _buff\=0.2_, _brace\_config\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **obj** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **text** (_str_)
* **brace\_direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **label\_constructor** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")\
_\]_)
* **font\_size** (_float_)
* **buff** (_float_)
* **brace\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
---
# svg_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.svg_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.svg_mobject.rst "Edit this page")
svg\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.html#module-manim.mobject.svg.svg_mobject "Link to this heading")
=================================================================================================================================================================
Mobjects generated from an SVG file.
Classes
| | |
| --- | --- |
| [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject") | A vectorized mobject created from importing an SVG file. |
| [`VMobjectFromSVGPath`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath") | A vectorized mobject representing an SVG path. |
---
# BraceText - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.brace.BraceText.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.brace.BraceText.rst "Edit this page")
BraceText[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#bracetext "Link to this heading")
=======================================================================================================================================
Qualified name: `manim.mobject.svg.brace.BraceText`
class BraceText(_obj_, _text_, _label\_constructor\=_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/brace.html#BraceText)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#manim.mobject.svg.brace.BraceText "Link to this definition")
Bases: [`BraceLabel`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceLabel.html#manim.mobject.svg.brace.BraceLabel "manim.mobject.svg.brace.BraceLabel")
Create a brace with a text label attached.
Parameters:
* **obj** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The mobject adjacent to which the brace is placed.
* **text** (_str_) – The label text.
* **brace\_direction** – The direction of the brace. By default `DOWN`.
* **label\_constructor** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")\
_\]_) – A class or function used to construct a mobject representing the label. By default [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
.
* **font\_size** – The font size of the label, passed to the `label_constructor`.
* **buff** – The buffer between the mobject and the brace.
* **brace\_config** – Arguments to be passed to [`Brace`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.Brace.html#manim.mobject.svg.brace.Brace "manim.mobject.svg.brace.Brace")
.
* **kwargs** (_Any_) – Additional arguments to be passed to [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Examples
Example: BraceTextExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#bracetextexample)

from manim import \*
class BraceTextExample(Scene):
def construct(self):
s1 \= Square().move\_to(2\*LEFT)
self.add(s1)
br1 \= BraceText(s1, "Label")
self.add(br1)
s2 \= Square().move\_to(2\*RIGHT)
self.add(s2)
br2 \= BraceText(s2, "Label")
br2.change\_label("new")
self.add(br2)
self.wait(0.1)
class BraceTextExample(Scene):
def construct(self):
s1 = Square().move\_to(2\*LEFT)
self.add(s1)
br1 = BraceText(s1, "Label")
self.add(br1)
s2 = Square().move\_to(2\*RIGHT)
self.add(s2)
br2 = BraceText(s2, "Label")
br2.change\_label("new")
self.add(br2)
self.wait(0.1)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_obj_, _text_, _label\_constructor\=_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.brace.BraceText.html#manim.mobject.svg.brace.BraceText._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **obj** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
)
* **text** (_str_)
* **label\_constructor** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")\
_\]_)
* **kwargs** (_Any_)
---
# VMobjectFromSVGPath - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.rst "Edit this page")
VMobjectFromSVGPath[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#vmobjectfromsvgpath "Link to this heading")
===========================================================================================================================================================================
Qualified name: `manim.mobject.svg.svg\_mobject.VMobjectFromSVGPath`
class VMobjectFromSVGPath(_path\_obj_, _long\_lines\=False_, _should\_subdivide\_sharp\_curves\=False_, _should\_remove\_null\_curves\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#VMobjectFromSVGPath)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A vectorized mobject representing an SVG path.
Note
The `long_lines`, `should_subdivide_sharp_curves`, and `should_remove_null_curves` keyword arguments are only respected with the OpenGL renderer.
Parameters:
* **path\_obj** (_se.Path_) – A parsed SVG path object.
* **long\_lines** (_bool_) – Whether or not straight lines in the vectorized mobject are drawn in one or two segments.
* **should\_subdivide\_sharp\_curves** (_bool_) – Whether or not to subdivide subcurves further in case two segments meet at an angle that is sharper than a given threshold.
* **should\_remove\_null\_curves** (_bool_) – Whether or not to remove subcurves of length 0.
* **kwargs** (_Any_) – Further keyword arguments are passed to the parent class.
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.generate_points "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.generate_points") | Initializes `points` and therefore the shape. |
| `handle_commands` | |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_path\_obj_, _long\_lines\=False_, _should\_subdivide\_sharp\_curves\=False_, _should\_remove\_null\_curves\=False_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **path\_obj** (_Path_)
* **long\_lines** (_bool_)
* **should\_subdivide\_sharp\_curves** (_bool_)
* **should\_remove\_null\_curves** (_bool_)
* **kwargs** (_Any_)
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#VMobjectFromSVGPath.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
None
---
# SVGMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.svg.svg_mobject.SVGMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.svg.svg_mobject.SVGMobject.rst "Edit this page")
SVGMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#svgmobject "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.svg.svg\_mobject.SVGMobject`
class SVGMobject(_file\_name\=None_, _should\_center\=True_, _height\=2_, _width\=None_, _color\=None_, _opacity\=None_, _fill\_color\=None_, _fill\_opacity\=None_, _stroke\_color\=None_, _stroke\_opacity\=None_, _stroke\_width\=None_, _svg\_default\=None_, _path\_string\_config\=None_, _use\_svg\_cache\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A vectorized mobject created from importing an SVG file.
Parameters:
* **file\_name** (_str_ _|_ _os.PathLike_ _|_ _None_) – The path to the SVG file.
* **should\_center** (_bool_) – Whether or not the mobject should be centered after being imported.
* **height** (_float_ _|_ _None_) – The target height of the mobject, set to 2 Manim units by default. If the height and width are both set to `None`, the mobject is imported without being scaled.
* **width** (_float_ _|_ _None_) – The target width of the mobject, set to `None` by default. If the height and the width are both set to `None`, the mobject is imported without being scaled.
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color (both fill and stroke color) of the mobject. If `None` (the default), the colors set in the SVG file are used.
* **opacity** (_float_ _|_ _None_) – The opacity (both fill and stroke opacity) of the mobject. If `None` (the default), the opacity set in the SVG file is used.
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_) – The fill color of the mobject. If `None` (the default), the fill colors set in the SVG file are used.
* **fill\_opacity** (_float_ _|_ _None_) – The fill opacity of the mobject. If `None` (the default), the fill opacities set in the SVG file are used.
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_) – The stroke color of the mobject. If `None` (the default), the stroke colors set in the SVG file are used.
* **stroke\_opacity** (_float_ _|_ _None_) – The stroke opacity of the mobject. If `None` (the default), the stroke opacities set in the SVG file are used.
* **stroke\_width** (_float_ _|_ _None_) – The stroke width of the mobject. If `None` (the default), the stroke width values set in the SVG file are used.
* **svg\_default** (_dict_ _|_ _None_) – A dictionary in which fallback values for unspecified properties of elements in the SVG file are defined. If `None` (the default), `color`, `opacity`, `fill_color` `fill_opacity`, `stroke_color`, and `stroke_opacity` are set to `None`, and `stroke_width` is set to 0.
* **path\_string\_config** (_dict_ _|_ _None_) – A dictionary with keyword arguments passed to [`VMobjectFromSVGPath`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath")
used for importing path elements. If `None` (the default), no additional arguments are passed.
* **use\_svg\_cache** (_bool_) – If True (default), the svg inputs (e.g. file\_name, settings) will be used as a key and a copy of the created mobject will be saved using that key to be quickly retrieved if the same inputs need be processed later. For large SVGs which are used only once, this can be omitted to improve performance.
* **kwargs** (_Any_) – Further arguments passed to the parent class.
Methods
| | |
| --- | --- |
| [`apply_style_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.apply_style_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.apply_style_to_mobject") | Apply SVG style information to the converted mobject. |
| [`ellipse_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.ellipse_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.ellipse_to_mobject") | Convert an ellipse or circle element to a vectorized mobject. |
| [`generate_config_style_dict`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.generate_config_style_dict "manim.mobject.svg.svg_mobject.SVGMobject.generate_config_style_dict") | Generate a dictionary holding the default style information. |
| [`generate_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.generate_mobject "manim.mobject.svg.svg_mobject.SVGMobject.generate_mobject") | Parse the SVG and translate its elements to submobjects. |
| [`get_file_path`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.get_file_path "manim.mobject.svg.svg_mobject.SVGMobject.get_file_path") | Search for an existing file based on the specified file name. |
| `get_mob_from_shape_element` | |
| [`get_mobjects_from`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.get_mobjects_from "manim.mobject.svg.svg_mobject.SVGMobject.get_mobjects_from") | Convert the elements of the SVG to a list of mobjects. |
| [`handle_transform`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.handle_transform "manim.mobject.svg.svg_mobject.SVGMobject.handle_transform") | Apply SVG transformations to the converted mobject. |
| [`init_svg_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.init_svg_mobject "manim.mobject.svg.svg_mobject.SVGMobject.init_svg_mobject") | Checks whether the SVG has already been imported and generates it if not. |
| [`line_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.line_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.line_to_mobject") | Convert a line element to a vectorized mobject. |
| [`modify_xml_tree`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.modify_xml_tree "manim.mobject.svg.svg_mobject.SVGMobject.modify_xml_tree") | Modifies the SVG element tree to include default style information. |
| [`move_into_position`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.move_into_position "manim.mobject.svg.svg_mobject.SVGMobject.move_into_position") | Scale and move the generated mobject into position. |
| [`path_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.path_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.path_to_mobject") | Convert a path element to a vectorized mobject. |
| [`polygon_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.polygon_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.polygon_to_mobject") | Convert a polygon element to a vectorized mobject. |
| [`polyline_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.polyline_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.polyline_to_mobject") | Convert a polyline element to a vectorized mobject. |
| [`rect_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.rect_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.rect_to_mobject") | Convert a rectangle element to a vectorized mobject. |
| [`text_to_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.text_to_mobject "manim.mobject.svg.svg_mobject.SVGMobject.text_to_mobject") | Convert a text element to a vectorized mobject. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| [`hash_seed`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.hash_seed "manim.mobject.svg.svg_mobject.SVGMobject.hash_seed") | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
\_original\_\_init\_\_(_file\_name\=None_, _should\_center\=True_, _height\=2_, _width\=None_, _color\=None_, _opacity\=None_, _fill\_color\=None_, _fill\_opacity\=None_, _stroke\_color\=None_, _stroke\_opacity\=None_, _stroke\_width\=None_, _svg\_default\=None_, _path\_string\_config\=None_, _use\_svg\_cache\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **file\_name** (_str_ _|_ _PathLike_ _|_ _None_)
* **should\_center** (_bool_)
* **height** (_float_ _|_ _None_)
* **width** (_float_ _|_ _None_)
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **opacity** (_float_ _|_ _None_)
* **fill\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **fill\_opacity** (_float_ _|_ _None_)
* **stroke\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **stroke\_opacity** (_float_ _|_ _None_)
* **stroke\_width** (_float_ _|_ _None_)
* **svg\_default** (_dict_ _|_ _None_)
* **path\_string\_config** (_dict_ _|_ _None_)
* **use\_svg\_cache** (_bool_)
* **kwargs** (_Any_)
static apply\_style\_to\_mobject(_mob_, _shape_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.apply_style_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.apply_style_to_mobject "Link to this definition")
Apply SVG style information to the converted mobject.
Parameters:
* **mob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The converted mobject.
* **shape** (_GraphicObject_) – The parsed SVG element.
Return type:
[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
static ellipse\_to\_mobject(_ellipse_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.ellipse_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.ellipse_to_mobject "Link to this definition")
Convert an ellipse or circle element to a vectorized mobject.
Parameters:
**ellipse** (_Ellipse_ _|_ _Circle_) – The parsed SVG ellipse or circle.
Return type:
[_Circle_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.arc.Circle.html#manim.mobject.geometry.arc.Circle "manim.mobject.geometry.arc.Circle")
generate\_config\_style\_dict()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.generate_config_style_dict)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.generate_config_style_dict "Link to this definition")
Generate a dictionary holding the default style information.
Return type:
dict\[str, str\]
generate\_mobject()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.generate_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.generate_mobject "Link to this definition")
Parse the SVG and translate its elements to submobjects.
Return type:
None
get\_file\_path()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.get_file_path)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.get_file_path "Link to this definition")
Search for an existing file based on the specified file name.
Return type:
_Path_
get\_mobjects\_from(_svg_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.get_mobjects_from)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.get_mobjects_from "Link to this definition")
Convert the elements of the SVG to a list of mobjects.
Parameters:
**svg** (_SVG_) – The parsed SVG file.
Return type:
tuple\[list\[[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
\], dict\[str, [_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]\]
static handle\_transform(_mob_, _matrix_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.handle_transform)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.handle_transform "Link to this definition")
Apply SVG transformations to the converted mobject.
Parameters:
* **mob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The converted mobject.
* **matrix** (_Matrix_) – The transformation matrix determined from the SVG transformation.
Return type:
[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
property hash\_seed: tuple[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.hash_seed "Link to this definition")
A unique hash representing the result of the generated mobject points.
Used as keys in the `SVG_HASH_TO_MOB_MAP` caching dictionary.
init\_svg\_mobject(_use\_svg\_cache_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.init_svg_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.init_svg_mobject "Link to this definition")
Checks whether the SVG has already been imported and generates it if not.
See also
[`SVGMobject.generate_mobject()`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.generate_mobject "manim.mobject.svg.svg_mobject.SVGMobject.generate_mobject")
Parameters:
**use\_svg\_cache** (_bool_)
Return type:
None
static line\_to\_mobject(_line_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.line_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.line_to_mobject "Link to this definition")
Convert a line element to a vectorized mobject.
Parameters:
**line** (_Line_) – The parsed SVG line.
Return type:
[_Line_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
modify\_xml\_tree(_element\_tree_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.modify_xml_tree)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.modify_xml_tree "Link to this definition")
Modifies the SVG element tree to include default style information.
Parameters:
**element\_tree** (_ElementTree_) – The parsed element tree from the SVG file.
Return type:
_ElementTree_
move\_into\_position()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.move_into_position)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.move_into_position "Link to this definition")
Scale and move the generated mobject into position.
Return type:
None
path\_to\_mobject(_path_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.path_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.path_to_mobject "Link to this definition")
Convert a path element to a vectorized mobject.
Parameters:
**path** (_Path_) – The parsed SVG path.
Return type:
[_VMobjectFromSVGPath_](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.VMobjectFromSVGPath.html#manim.mobject.svg.svg_mobject.VMobjectFromSVGPath "manim.mobject.svg.svg_mobject.VMobjectFromSVGPath")
static polygon\_to\_mobject(_polygon_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.polygon_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.polygon_to_mobject "Link to this definition")
Convert a polygon element to a vectorized mobject.
Parameters:
**polygon** (_Polygon_) – The parsed SVG polygon.
Return type:
[_Polygon_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
polyline\_to\_mobject(_polyline_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.polyline_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.polyline_to_mobject "Link to this definition")
Convert a polyline element to a vectorized mobject.
Parameters:
**polyline** (_Polyline_) – The parsed SVG polyline.
Return type:
[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
static rect\_to\_mobject(_rect_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.rect_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.rect_to_mobject "Link to this definition")
Convert a rectangle element to a vectorized mobject.
Parameters:
**rect** (_Rect_) – The parsed SVG rectangle.
Return type:
[_Rectangle_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Rectangle.html#manim.mobject.geometry.polygram.Rectangle "manim.mobject.geometry.polygram.Rectangle")
static text\_to\_mobject(_text_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/svg/svg_mobject.html#SVGMobject.text_to_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject.text_to_mobject "Link to this definition")
Convert a text element to a vectorized mobject.
Warning
Not yet implemented.
Parameters:
**text** (_Text_) – The parsed SVG text.
Return type:
[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
---
# IntegerTable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.IntegerTable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.IntegerTable.rst "Edit this page")
IntegerTable[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#integertable "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.table.IntegerTable`
class IntegerTable(_table_, _element\_to\_mobject\=_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#IntegerTable)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#manim.mobject.table.IntegerTable "Link to this definition")
Bases: [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
Examples
Example: IntegerTableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#integertableexample)

from manim import \*
class IntegerTableExample(Scene):
def construct(self):
t0 \= IntegerTable(
\[\[0,30,45,60,90\],\
\[90,60,45,30,0\]\],
col\_labels\=\[\
MathTex(r"\\frac{ \\sqrt{0} }{2}"),\
MathTex(r"\\frac{ \\sqrt{1} }{2}"),\
MathTex(r"\\frac{ \\sqrt{2} }{2}"),\
MathTex(r"\\frac{ \\sqrt{3} }{2}"),\
MathTex(r"\\frac{ \\sqrt{4} }{2}")\],
row\_labels\=\[MathTex(r"\\sin"), MathTex(r"\\cos")\],
h\_buff\=1,
element\_to\_mobject\_config\={"unit": r"^{\\circ}"})
self.add(t0)
class IntegerTableExample(Scene):
def construct(self):
t0 = IntegerTable(
\[\[0,30,45,60,90\],\
\[90,60,45,30,0\]\],
col\_labels=\[\
MathTex(r"\\frac{ \\sqrt{0} }{2}"),\
MathTex(r"\\frac{ \\sqrt{1} }{2}"),\
MathTex(r"\\frac{ \\sqrt{2} }{2}"),\
MathTex(r"\\frac{ \\sqrt{3} }{2}"),\
MathTex(r"\\frac{ \\sqrt{4} }{2}")\],
row\_labels=\[MathTex(r"\\sin"), MathTex(r"\\cos")\],
h\_buff=1,
element\_to\_mobject\_config={"unit": r"^{\\circ}"})
self.add(t0)
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with element\_to\_mobject set to [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
. Will round if there are decimal entries in the table.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2d array or list of lists. Content of the table has to be valid input for [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_table_, _element\_to\_mobject\=_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#manim.mobject.table.IntegerTable._original__init__ "Link to this definition")
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with element\_to\_mobject set to [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
. Will round if there are decimal entries in the table.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2d array or list of lists. Content of the table has to be valid input for [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
---
# DecimalTable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.DecimalTable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.DecimalTable.rst "Edit this page")
DecimalTable[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#decimaltable "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.table.DecimalTable`
class DecimalTable(_table_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={'num\_decimal\_places': 1}_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#DecimalTable)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#manim.mobject.table.DecimalTable "Link to this definition")
Bases: [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
to display decimal entries.
Examples
Example: DecimalTableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#decimaltableexample)

from manim import \*
class DecimalTableExample(Scene):
def construct(self):
x\_vals \= \[\-2,\-1,0,1,2\]
y\_vals \= np.exp(x\_vals)
t0 \= DecimalTable(
\[x\_vals, y\_vals\],
row\_labels\=\[MathTex("x"), MathTex("f(x)=e^{x}")\],
h\_buff\=1,
element\_to\_mobject\_config\={"num\_decimal\_places": 2})
self.add(t0)
class DecimalTableExample(Scene):
def construct(self):
x\_vals = \[-2,-1,0,1,2\]
y\_vals = np.exp(x\_vals)
t0 = DecimalTable(
\[x\_vals, y\_vals\],
row\_labels=\[MathTex("x"), MathTex("f(x)=e^{x}")\],
h\_buff=1,
element\_to\_mobject\_config={"num\_decimal\_places": 2})
self.add(t0)
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with `element_to_mobject` set to [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
. By default, `num_decimal_places` is set to 1. Will round/truncate the decimal places based on the provided `element_to_mobject_config`.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2D array, or a list of lists. Content of the table must be valid input for [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
* **element\_to\_mobject\_config** (_dict_) – Element to mobject config, here set as {“num\_decimal\_places”: 1}.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_table_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={'num\_decimal\_places': 1}_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#manim.mobject.table.DecimalTable._original__init__ "Link to this definition")
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with `element_to_mobject` set to [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
. By default, `num_decimal_places` is set to 1. Will round/truncate the decimal places based on the provided `element_to_mobject_config`.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2D array, or a list of lists. Content of the table must be valid input for [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
* **element\_to\_mobject\_config** (_dict_) – Element to mobject config, here set as {“num\_decimal\_places”: 1}.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
---
# table - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.rst "Edit this page")
table[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#module-manim.mobject.table "Link to this heading")
======================================================================================================================================
Mobjects representing tables.
Examples
Example: TableExamples [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.html#tableexamples)

from manim import \*
class TableExamples(Scene):
def construct(self):
t0 \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\],
top\_left\_entry\=Text("TOP"))
t0.add\_highlighted\_cell((2,2), color\=GREEN)
x\_vals \= np.linspace(\-2,2,5)
y\_vals \= np.exp(x\_vals)
t1 \= DecimalTable(
\[x\_vals, y\_vals\],
row\_labels\=\[MathTex("x"), MathTex("f(x)")\],
include\_outer\_lines\=True)
t1.add(t1.get\_cell((2,2), color\=RED))
t2 \= MathTable(
\[\["+", 0, 5, 10\],\
\[0, 0, 5, 10\],\
\[2, 2, 7, 12\],\
\[4, 4, 9, 14\]\],
include\_outer\_lines\=True)
t2.get\_horizontal\_lines()\[:3\].set\_color(BLUE)
t2.get\_vertical\_lines()\[:3\].set\_color(BLUE)
t2.get\_horizontal\_lines()\[:3\].set\_z\_index(1)
cross \= VGroup(
Line(UP + LEFT, DOWN + RIGHT),
Line(UP + RIGHT, DOWN + LEFT))
a \= Circle().set\_color(RED).scale(0.5)
b \= cross.set\_color(BLUE).scale(0.5)
t3 \= MobjectTable(
\[\[a.copy(),b.copy(),a.copy()\],\
\[b.copy(),a.copy(),a.copy()\],\
\[a.copy(),b.copy(),b.copy()\]\])
t3.add(Line(
t3.get\_corner(DL), t3.get\_corner(UR)
).set\_color(RED))
vals \= np.arange(1,21).reshape(5,4)
t4 \= IntegerTable(
vals,
include\_outer\_lines\=True
)
g1 \= Group(t0, t1).scale(0.5).arrange(buff\=1).to\_edge(UP, buff\=1)
g2 \= Group(t2, t3, t4).scale(0.5).arrange(buff\=1).to\_edge(DOWN, buff\=1)
self.add(g1, g2)
class TableExamples(Scene):
def construct(self):
t0 = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\],
top\_left\_entry=Text("TOP"))
t0.add\_highlighted\_cell((2,2), color=GREEN)
x\_vals = np.linspace(-2,2,5)
y\_vals = np.exp(x\_vals)
t1 = DecimalTable(
\[x\_vals, y\_vals\],
row\_labels=\[MathTex("x"), MathTex("f(x)")\],
include\_outer\_lines=True)
t1.add(t1.get\_cell((2,2), color=RED))
t2 = MathTable(
\[\["+", 0, 5, 10\],\
\[0, 0, 5, 10\],\
\[2, 2, 7, 12\],\
\[4, 4, 9, 14\]\],
include\_outer\_lines=True)
t2.get\_horizontal\_lines()\[:3\].set\_color(BLUE)
t2.get\_vertical\_lines()\[:3\].set\_color(BLUE)
t2.get\_horizontal\_lines()\[:3\].set\_z\_index(1)
cross = VGroup(
Line(UP + LEFT, DOWN + RIGHT),
Line(UP + RIGHT, DOWN + LEFT))
a = Circle().set\_color(RED).scale(0.5)
b = cross.set\_color(BLUE).scale(0.5)
t3 = MobjectTable(
\[\[a.copy(),b.copy(),a.copy()\],\
\[b.copy(),a.copy(),a.copy()\],\
\[a.copy(),b.copy(),b.copy()\]\])
t3.add(Line(
t3.get\_corner(DL), t3.get\_corner(UR)
).set\_color(RED))
vals = np.arange(1,21).reshape(5,4)
t4 = IntegerTable(
vals,
include\_outer\_lines=True
)
g1 = Group(t0, t1).scale(0.5).arrange(buff=1).to\_edge(UP, buff=1)
g2 = Group(t2, t3, t4).scale(0.5).arrange(buff=1).to\_edge(DOWN, buff=1)
self.add(g1, g2)
Classes
| | |
| --- | --- |
| [`DecimalTable`](https://docs.manim.community/en/stable/reference/manim.mobject.table.DecimalTable.html#manim.mobject.table.DecimalTable "manim.mobject.table.DecimalTable") | A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
to display decimal entries. |
| [`IntegerTable`](https://docs.manim.community/en/stable/reference/manim.mobject.table.IntegerTable.html#manim.mobject.table.IntegerTable "manim.mobject.table.IntegerTable") | A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
. |
| [`MathTable`](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#manim.mobject.table.MathTable "manim.mobject.table.MathTable") | A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with LaTeX. |
| [`MobjectTable`](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#manim.mobject.table.MobjectTable "manim.mobject.table.MobjectTable") | A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table") | A mobject that displays a table on the screen. |
---
# text - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.rst "Edit this page")
text[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.html#module-manim.mobject.text "Link to this heading")
===================================================================================================================================
Mobjects used to display Text using Pango or LaTeX.
Modules[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.html#modules "Link to this heading")
--------------------------------------------------------------------------------------------------------------------
| | |
| --- | --- |
| [`code_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.html#module-manim.mobject.text.code_mobject "manim.mobject.text.code_mobject") | Mobject representing highlighted source code listings. |
| [`numbers`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.html#module-manim.mobject.text.numbers "manim.mobject.text.numbers") | Mobjects representing numbers. |
| [`tex_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#module-manim.mobject.text.tex_mobject "manim.mobject.text.tex_mobject") | Mobjects representing text rendered using LaTeX. |
| [`text_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject "manim.mobject.text.text_mobject") | Mobjects used for displaying (non-LaTeX) text. |
---
# MathTable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.MathTable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.MathTable.rst "Edit this page")
MathTable[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#mathtable "Link to this heading")
===================================================================================================================================
Qualified name: `manim.mobject.table.MathTable`
class MathTable(_table_, _element\_to\_mobject\=_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#MathTable)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#manim.mobject.table.MathTable "Link to this definition")
Bases: [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with LaTeX.
Examples
Example: MathTableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#mathtableexample)

from manim import \*
class MathTableExample(Scene):
def construct(self):
t0 \= MathTable(
\[\["+", 0, 5, 10\],\
\[0, 0, 5, 10\],\
\[2, 2, 7, 12\],\
\[4, 4, 9, 14\]\],
include\_outer\_lines\=True)
self.add(t0)
class MathTableExample(Scene):
def construct(self):
t0 = MathTable(
\[\["+", 0, 5, 10\],\
\[0, 0, 5, 10\],\
\[2, 2, 7, 12\],\
\[4, 4, 9, 14\]\],
include\_outer\_lines=True)
self.add(t0)
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with element\_to\_mobject set to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Every entry in table is set in a Latex align environment.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2d array or list of lists. Content of the table have to be valid input for [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_table_, _element\_to\_mobject\=_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MathTable.html#manim.mobject.table.MathTable._original__init__ "Link to this definition")
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with element\_to\_mobject set to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
. Every entry in table is set in a Latex align environment.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str__\]__\]_) – A 2d array or list of lists. Content of the table have to be valid input for [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str__\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
---
# MobjectTable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.MobjectTable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.MobjectTable.rst "Edit this page")
MobjectTable[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#mobjecttable "Link to this heading")
============================================================================================================================================
Qualified name: `manim.mobject.table.MobjectTable`
class MobjectTable(_table_, _element\_to\_mobject\=>_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#MobjectTable)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#manim.mobject.table.MobjectTable "Link to this definition")
Bases: [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
A specialized [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
mobject for use with [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Examples
Example: MobjectTableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#mobjecttableexample)

from manim import \*
class MobjectTableExample(Scene):
def construct(self):
cross \= VGroup(
Line(UP + LEFT, DOWN + RIGHT),
Line(UP + RIGHT, DOWN + LEFT),
)
a \= Circle().set\_color(RED).scale(0.5)
b \= cross.set\_color(BLUE).scale(0.5)
t0 \= MobjectTable(
\[\[a.copy(),b.copy(),a.copy()\],\
\[b.copy(),a.copy(),a.copy()\],\
\[a.copy(),b.copy(),b.copy()\]\]
)
line \= Line(
t0.get\_corner(DL), t0.get\_corner(UR)
).set\_color(RED)
self.add(t0, line)
class MobjectTableExample(Scene):
def construct(self):
cross = VGroup(
Line(UP + LEFT, DOWN + RIGHT),
Line(UP + RIGHT, DOWN + LEFT),
)
a = Circle().set\_color(RED).scale(0.5)
b = cross.set\_color(BLUE).scale(0.5)
t0 = MobjectTable(
\[\[a.copy(),b.copy(),a.copy()\],\
\[b.copy(),a.copy(),a.copy()\],\
\[a.copy(),b.copy(),b.copy()\]\]
)
line = Line(
t0.get\_corner(DL), t0.get\_corner(UR)
).set\_color(RED)
self.add(t0, line)
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with `element_to_mobject` set to an identity function. Here, every item in `table` must already be of type [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
* **table** (_Iterable__\[__Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_) – A 2D array or list of lists. Content of the table must be of type [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **element\_to\_mobject** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as `lambda m : m` to return itself.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_table_, _element\_to\_mobject\=>_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.MobjectTable.html#manim.mobject.table.MobjectTable._original__init__ "Link to this definition")
Special case of [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
with `element_to_mobject` set to an identity function. Here, every item in `table` must already be of type [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
* **table** (_Iterable__\[__Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_) – A 2D array or list of lists. Content of the table must be of type [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
* **element\_to\_mobject** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. Set as `lambda m : m` to return itself.
* **kwargs** – Additional arguments to be passed to [`Table`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
.
---
# code_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.code_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.code_mobject.rst "Edit this page")
code\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.html#module-manim.mobject.text.code_mobject "Link to this heading")
======================================================================================================================================================================
Mobject representing highlighted source code listings.
Classes
| | |
| --- | --- |
| [`Code`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "manim.mobject.text.code_mobject.Code") | A highlighted source code listing. |
---
# Code - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.code_mobject.Code.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.code_mobject.Code.rst "Edit this page")
Code[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#code "Link to this heading")
================================================================================================================================
Qualified name: `manim.mobject.text.code\_mobject.Code`
class Code(_code\_file\=None_, _code\_string\=None_, _language\=None_, _formatter\_style\='vim'_, _tab\_width\=4_, _add\_line\_numbers\=True_, _line\_numbers\_from\=1_, _background\='rectangle'_, _background\_config\=None_, _paragraph\_config\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/code_mobject.html#Code)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A highlighted source code listing.
Examples
Normal usage:
listing \= Code(
"helloworldcpp.cpp",
tab\_width\=4,
formatter\_style\="emacs",
background\="window",
language\="cpp",
background\_config\={"stroke\_color": WHITE},
paragraph\_config\={"font": "Noto Sans Mono"},
)
We can also render code passed as a string. As the automatic language detection can be a bit flaky, it is recommended to specify the language explicitly:
Example: CodeFromString [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#codefromstring)

from manim import \*
class CodeFromString(Scene):
def construct(self):
code \= '''from manim import Scene, Square
class FadeInSquare(Scene):
def construct(self):
s = Square()
self.play(FadeIn(s))
self.play(s.animate.scale(2))
self.wait()'''
rendered\_code \= Code(
code\_string\=code,
language\="python",
background\="window",
background\_config\={"stroke\_color": "maroon"},
)
self.add(rendered\_code)
class CodeFromString(Scene):
def construct(self):
code = '''from manim import Scene, Square
class FadeInSquare(Scene):
def construct(self):
s = Square()
self.play(FadeIn(s))
self.play(s.animate.scale(2))
self.wait()'''
rendered\_code = Code(
code\_string=code,
language="python",
background="window",
background\_config={"stroke\_color": "maroon"},
)
self.add(rendered\_code)
Parameters:
* **code\_file** ([_StrPath_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "manim.typing.StrPath")
_|_ _None_) – The path to the code file to display.
* **code\_string** (_str_ _|_ _None_) – Alternatively, the code string to display.
* **language** (_str_ _|_ _None_) – The programming language of the code. If not specified, it will be guessed from the file extension or the code itself.
* **formatter\_style** (_str_) – The style to use for the code highlighting. Defaults to `"vim"`. A list of all available styles can be obtained by calling [`Code.get_styles_list()`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code.get_styles_list "manim.mobject.text.code_mobject.Code.get_styles_list")
.
* **tab\_width** (_int_) – The width of a tab character in spaces. Defaults to 4.
* **add\_line\_numbers** (_bool_) – Whether to display line numbers. Defaults to `True`.
* **line\_numbers\_from** (_int_) – The first line number to display. Defaults to 1.
* **background** (_Literal__\[__'rectangle'__,_ _'window'__\]_) – The type of background to use. Can be either `"rectangle"` (the default) or `"window"`.
* **background\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Keyword arguments passed to the background constructor. Default settings are stored in the class attribute `default_background_config` (which can also be modified directly).
* **paragraph\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_) – Keyword arguments passed to the constructor of the [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
objects holding the code, and the line numbers. Default settings are stored in the class attribute `default_paragraph_config` (which can also be modified directly).
Methods
| | |
| --- | --- |
| [`get_styles_list`](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code.get_styles_list "manim.mobject.text.code_mobject.Code.get_styles_list") | Get the list of all available formatter styles. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `color` | |
| `default_background_config` | |
| `default_paragraph_config` | |
| `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. |
| `code` | |
\_original\_\_init\_\_(_code\_file\=None_, _code\_string\=None_, _language\=None_, _formatter\_style\='vim'_, _tab\_width\=4_, _add\_line\_numbers\=True_, _line\_numbers\_from\=1_, _background\='rectangle'_, _background\_config\=None_, _paragraph\_config\=None_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **code\_file** (_TypeAliasForwardRef__(__'~manim.typing.StrPath'__)_ _|_ _None_)
* **code\_string** (_str_ _|_ _None_)
* **language** (_str_ _|_ _None_)
* **formatter\_style** (_str_)
* **tab\_width** (_int_)
* **add\_line\_numbers** (_bool_)
* **line\_numbers\_from** (_int_)
* **background** (_Literal__\[__'rectangle'__,_ _'window'__\]_)
* **background\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **paragraph\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
classmethod get\_styles\_list()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/code_mobject.html#Code.get_styles_list)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.code_mobject.Code.html#manim.mobject.text.code_mobject.Code.get_styles_list "Link to this definition")
Get the list of all available formatter styles.
Return type:
list\[str\]
---
# numbers - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.numbers.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.numbers.rst "Edit this page")
numbers[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.html#module-manim.mobject.text.numbers "Link to this heading")
======================================================================================================================================================
Mobjects representing numbers.
Classes
| | |
| --- | --- |
| [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber") | An mobject representing a decimal number. |
| [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer") | A class for displaying Integers. |
| [`Variable`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable "manim.mobject.text.numbers.Variable") | A class for displaying text that shows "label = value" with the value continuously updated from a [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
. |
---
# DecimalNumber - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.numbers.DecimalNumber.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.numbers.DecimalNumber.rst "Edit this page")
DecimalNumber[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#decimalnumber "Link to this heading")
======================================================================================================================================================
Qualified name: `manim.mobject.text.numbers.DecimalNumber`
class DecimalNumber(_number\=0_, _num\_decimal\_places\=2_, _mob\_class\=_, _include\_sign\=False_, _group\_with\_commas\=True_, _digit\_buff\_per\_font\_unit\=0.001_, _show\_ellipsis\=False_, _unit\=None_, _unit\_buff\_per\_font\_unit\=0_, _include\_background\_rectangle\=False_, _edge\_to\_fix\=array(\[-1._, _0._, _0.\])_, _font\_size\=48_, _stroke\_width\=0_, _fill\_opacity\=1.0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/numbers.html#DecimalNumber)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
An mobject representing a decimal number.
Parameters:
* **number** (_float_) – The numeric value to be displayed. It can later be modified using [`set_value()`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber.set_value "manim.mobject.text.numbers.DecimalNumber.set_value")
.
* **num\_decimal\_places** (_int_) – The number of decimal places after the decimal separator. Values are automatically rounded.
* **mob\_class** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_\]_) – The class for rendering digits and units, by default [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
.
* **include\_sign** (_bool_) – Set to `True` to include a sign for positive numbers and zero.
* **group\_with\_commas** (_bool_) – When `True` thousands groups are separated by commas for readability.
* **digit\_buff\_per\_font\_unit** (_float_) – Additional spacing between digits. Scales with font size.
* **show\_ellipsis** (_bool_) – When a number has been truncated by rounding, indicate with an ellipsis (`...`).
* **unit** (_str_ _|_ _None_) – A unit string which can be placed to the right of the numerical values.
* **unit\_buff\_per\_font\_unit** (_float_) – An additional spacing between the numerical values and the unit. A value of `unit_buff_per_font_unit=0.003` gives a decent spacing. Scales with font size.
* **include\_background\_rectangle** (_bool_) – Adds a background rectangle to increase contrast on busy scenes.
* **edge\_to\_fix** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Assuring right- or left-alignment of the full object.
* **font\_size** (_float_) – Size of the font.
* **stroke\_width** (_float_)
* **fill\_opacity** (_float_)
* **kwargs** (_Any_)
Examples
Example: MovingSquareWithUpdaters [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#movingsquarewithupdaters)
from manim import \*
class MovingSquareWithUpdaters(Scene):
def construct(self):
decimal \= DecimalNumber(
0,
show\_ellipsis\=True,
num\_decimal\_places\=3,
include\_sign\=True,
unit\=r"\\text{M-Units}",
unit\_buff\_per\_font\_unit\=0.003
)
square \= Square().to\_edge(UP)
decimal.add\_updater(lambda d: d.next\_to(square, RIGHT))
decimal.add\_updater(lambda d: d.set\_value(square.get\_center()\[1\]))
self.add(square, decimal)
self.play(
square.animate.to\_edge(DOWN),
rate\_func\=there\_and\_back,
run\_time\=5,
)
self.wait()
class MovingSquareWithUpdaters(Scene):
def construct(self):
decimal = DecimalNumber(
0,
show\_ellipsis=True,
num\_decimal\_places=3,
include\_sign=True,
unit=r"\\text{M-Units}",
unit\_buff\_per\_font\_unit=0.003
)
square = Square().to\_edge(UP)
decimal.add\_updater(lambda d: d.next\_to(square, RIGHT))
decimal.add\_updater(lambda d: d.set\_value(square.get\_center()\[1\]))
self.add(square, decimal)
self.play(
square.animate.to\_edge(DOWN),
rate\_func=there\_and\_back,
run\_time=5,
)
self.wait()
Methods
| | |
| --- | --- |
| `get_value` | |
| `increment_value` | |
| [`set_value`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber.set_value "manim.mobject.text.numbers.DecimalNumber.set_value") | Set the value of the [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
to a new number. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| [`font_size`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber.font_size "manim.mobject.text.numbers.DecimalNumber.font_size") | The font size of the tex mobject. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
\_get\_formatter(_\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/numbers.html#DecimalNumber._get_formatter)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber._get_formatter "Link to this definition")
Configuration is based first off instance attributes, but overwritten by any kew word argument. Relevant key words: - include\_sign - group\_with\_commas - num\_decimal\_places - field\_name (e.g. 0 or 0.real)
Parameters:
**kwargs** (_Any_)
Return type:
str
\_original\_\_init\_\_(_number\=0_, _num\_decimal\_places\=2_, _mob\_class\=_, _include\_sign\=False_, _group\_with\_commas\=True_, _digit\_buff\_per\_font\_unit\=0.001_, _show\_ellipsis\=False_, _unit\=None_, _unit\_buff\_per\_font\_unit\=0_, _include\_background\_rectangle\=False_, _edge\_to\_fix\=array(\[-1._, _0._, _0.\])_, _font\_size\=48_, _stroke\_width\=0_, _fill\_opacity\=1.0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **number** (_float_)
* **num\_decimal\_places** (_int_)
* **mob\_class** (_type__\[_[_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
_\]_)
* **include\_sign** (_bool_)
* **group\_with\_commas** (_bool_)
* **digit\_buff\_per\_font\_unit** (_float_)
* **show\_ellipsis** (_bool_)
* **unit** (_str_ _|_ _None_)
* **unit\_buff\_per\_font\_unit** (_float_)
* **include\_background\_rectangle** (_bool_)
* **edge\_to\_fix** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **font\_size** (_float_)
* **stroke\_width** (_float_)
* **fill\_opacity** (_float_)
* **kwargs** (_Any_)
property font\_size: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber.font_size "Link to this definition")
The font size of the tex mobject.
set\_value(_number_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/numbers.html#DecimalNumber.set_value)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber.set_value "Link to this definition")
Set the value of the [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
to a new number.
Parameters:
**number** (_float_) – The value that will overwrite the current number of the [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
Return type:
_Self_
---
# tex_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.rst "Edit this page")
tex\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#module-manim.mobject.text.tex_mobject "Link to this heading")
===================================================================================================================================================================
Mobjects representing text rendered using LaTeX.
Important
See the corresponding tutorial [Text With LaTeX](https://docs.manim.community/en/stable/guides/using_text.html#rendering-with-latex)
Note
Just as you can use [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
(from the module [`text_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject "manim.mobject.text.text_mobject")
) to add text to your videos, you can use [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
and [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
to insert LaTeX.
Classes
| | |
| --- | --- |
| [`BulletedList`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#manim.mobject.text.tex_mobject.BulletedList "manim.mobject.text.tex_mobject.BulletedList") | A bulleted list. |
| [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex") | A string compiled with LaTeX in math mode. |
| [`MathTexPart`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#manim.mobject.text.tex_mobject.MathTexPart "manim.mobject.text.tex_mobject.MathTexPart") | |
| [`SingleStringMathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex") | Elementary building block for rendering text with LaTeX. |
| [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex") | A string compiled with LaTeX in normal mode. |
| [`Title`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#manim.mobject.text.tex_mobject.Title "manim.mobject.text.tex_mobject.Title") | A mobject representing an underlined title. |
---
# Integer - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.numbers.Integer.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.numbers.Integer.rst "Edit this page")
Integer[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#integer "Link to this heading")
====================================================================================================================================
Qualified name: `manim.mobject.text.numbers.Integer`
class Integer(_number\=0_, _num\_decimal\_places\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/numbers.html#Integer)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "Link to this definition")
Bases: [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
A class for displaying Integers.
Examples
Example: IntegerExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#integerexample)

from manim import \*
class IntegerExample(Scene):
def construct(self):
self.add(Integer(number\=2.5).set\_color(ORANGE).scale(2.5).set\_x(\-0.5).set\_y(0.8))
self.add(Integer(number\=3.14159, show\_ellipsis\=True).set\_x(3).set\_y(3.3).scale(3.14159))
self.add(Integer(number\=42).set\_x(2.5).set\_y(\-2.3).set\_color\_by\_gradient(BLUE, TEAL).scale(1.7))
self.add(Integer(number\=6.28).set\_x(\-1.5).set\_y(\-2).set\_color(YELLOW).scale(1.4))
class IntegerExample(Scene):
def construct(self):
self.add(Integer(number=2.5).set\_color(ORANGE).scale(2.5).set\_x(-0.5).set\_y(0.8))
self.add(Integer(number=3.14159, show\_ellipsis=True).set\_x(3).set\_y(3.3).scale(3.14159))
self.add(Integer(number=42).set\_x(2.5).set\_y(-2.3).set\_color\_by\_gradient(BLUE, TEAL).scale(1.7))
self.add(Integer(number=6.28).set\_x(-1.5).set\_y(-2).set\_color(YELLOW).scale(1.4))
Methods
| | |
| --- | --- |
| `get_value` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | The font size of the tex mobject. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **number** (_float_)
* **num\_decimal\_places** (_int_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_number\=0_, _num\_decimal\_places\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **number** (_float_)
* **num\_decimal\_places** (_int_)
* **kwargs** (_Any_)
Return type:
None
---
# Variable - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.numbers.Variable.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.numbers.Variable.rst "Edit this page")
Variable[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#variable "Link to this heading")
=======================================================================================================================================
Qualified name: `manim.mobject.text.numbers.Variable`
class Variable(_var_, _label_, _var\_type\=_, _num\_decimal\_places\=2_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/numbers.html#Variable)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A class for displaying text that shows “label = value” with the value continuously updated from a [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
.
Parameters:
* **var** (_float_) – The initial value you need to keep track of and display.
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
_|_ [_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")
) – The label for your variable. Raw strings are convertex to [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
objects.
* **var\_type** (_type__\[_[_DecimalNumber_](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")\
_|_ [_Integer_](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")\
_\]_) – The class used for displaying the number. Defaults to [`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")
.
* **num\_decimal\_places** (_int_) – The number of decimal places to display in your variable. Defaults to 2. If var\_type is an [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")
, this parameter is ignored.
* **kwargs** (_Any_) – Other arguments to be passed to ~.Mobject.
label[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable.label "Link to this definition")
The label for your variable, for example `x = ...`.
Type:
Union\[`str`, [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")\
, [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")\
, [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")\
, [`SingleStringMathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")\
\]
tracker[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable.tracker "Link to this definition")
Useful in updating the value of your variable on-screen.
Type:
[`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker")
value[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable.value "Link to this definition")
The tex for the value of your variable.
Type:
Union\[[`DecimalNumber`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")\
, [`Integer`](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")\
\]
Examples
Normal usage:
\# DecimalNumber type
var \= 0.5
on\_screen\_var \= Variable(var, Text("var"), num\_decimal\_places\=3)
\# Integer type
int\_var \= 0
on\_screen\_int\_var \= Variable(int\_var, Text("int\_var"), var\_type\=Integer)
\# Using math mode for the label
on\_screen\_int\_var \= Variable(int\_var, "{a}\_{i}", var\_type\=Integer)
Example: VariablesWithValueTracker [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#variableswithvaluetracker)
from manim import \*
class VariablesWithValueTracker(Scene):
def construct(self):
var \= 0.5
on\_screen\_var \= Variable(var, Text("var"), num\_decimal\_places\=3)
\# You can also change the colours for the label and value
on\_screen\_var.label.set\_color(RED)
on\_screen\_var.value.set\_color(GREEN)
self.play(Write(on\_screen\_var))
\# The above line will just display the variable with
\# its initial value on the screen. If you also wish to
\# update it, you can do so by accessing the \`tracker\` attribute
self.wait()
var\_tracker \= on\_screen\_var.tracker
var \= 10.5
self.play(var\_tracker.animate.set\_value(var))
self.wait()
int\_var \= 0
on\_screen\_int\_var \= Variable(
int\_var, Text("int\_var"), var\_type\=Integer
).next\_to(on\_screen\_var, DOWN)
on\_screen\_int\_var.label.set\_color(RED)
on\_screen\_int\_var.value.set\_color(GREEN)
self.play(Write(on\_screen\_int\_var))
self.wait()
var\_tracker \= on\_screen\_int\_var.tracker
var \= 10.5
self.play(var\_tracker.animate.set\_value(var))
self.wait()
\# If you wish to have a somewhat more complicated label for your
\# variable with subscripts, superscripts, etc. the default class
\# for the label is MathTex
subscript\_label\_var \= 10
on\_screen\_subscript\_var \= Variable(subscript\_label\_var, "{a}\_{i}").next\_to(
on\_screen\_int\_var, DOWN
)
self.play(Write(on\_screen\_subscript\_var))
self.wait()
class VariablesWithValueTracker(Scene):
def construct(self):
var = 0.5
on\_screen\_var = Variable(var, Text("var"), num\_decimal\_places=3)
# You can also change the colours for the label and value
on\_screen\_var.label.set\_color(RED)
on\_screen\_var.value.set\_color(GREEN)
self.play(Write(on\_screen\_var))
# The above line will just display the variable with
# its initial value on the screen. If you also wish to
# update it, you can do so by accessing the \`tracker\` attribute
self.wait()
var\_tracker = on\_screen\_var.tracker
var = 10.5
self.play(var\_tracker.animate.set\_value(var))
self.wait()
int\_var = 0
on\_screen\_int\_var = Variable(
int\_var, Text("int\_var"), var\_type=Integer
).next\_to(on\_screen\_var, DOWN)
on\_screen\_int\_var.label.set\_color(RED)
on\_screen\_int\_var.value.set\_color(GREEN)
self.play(Write(on\_screen\_int\_var))
self.wait()
var\_tracker = on\_screen\_int\_var.tracker
var = 10.5
self.play(var\_tracker.animate.set\_value(var))
self.wait()
# If you wish to have a somewhat more complicated label for your
# variable with subscripts, superscripts, etc. the default class
# for the label is MathTex
subscript\_label\_var = 10
on\_screen\_subscript\_var = Variable(subscript\_label\_var, "{a}\_{i}").next\_to(
on\_screen\_int\_var, DOWN
)
self.play(Write(on\_screen\_subscript\_var))
self.wait()
Example: VariableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#variableexample)
from manim import \*
class VariableExample(Scene):
def construct(self):
start \= 2.0
x\_var \= Variable(start, 'x', num\_decimal\_places\=3)
sqr\_var \= Variable(start\*\*2, 'x^2', num\_decimal\_places\=3)
Group(x\_var, sqr\_var).arrange(DOWN)
sqr\_var.add\_updater(lambda v: v.tracker.set\_value(x\_var.tracker.get\_value()\*\*2))
self.add(x\_var, sqr\_var)
self.play(x\_var.tracker.animate.set\_value(5), run\_time\=2, rate\_func\=linear)
self.wait(0.1)
class VariableExample(Scene):
def construct(self):
start = 2.0
x\_var = Variable(start, 'x', num\_decimal\_places=3)
sqr\_var = Variable(start\*\*2, 'x^2', num\_decimal\_places=3)
Group(x\_var, sqr\_var).arrange(DOWN)
sqr\_var.add\_updater(lambda v: v.tracker.set\_value(x\_var.tracker.get\_value()\*\*2))
self.add(x\_var, sqr\_var)
self.play(x\_var.tracker.animate.set\_value(5), run\_time=2, rate\_func=linear)
self.wait(0.1)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_var_, _label_, _var\_type\=_, _num\_decimal\_places\=2_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Variable.html#manim.mobject.text.numbers.Variable._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **var** (_float_)
* **label** (_str_ _|_ [_Tex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
_|_ [_MathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
_|_ [_Text_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
_|_ [_SingleStringMathTex_](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")
)
* **var\_type** (_type__\[_[_DecimalNumber_](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.DecimalNumber.html#manim.mobject.text.numbers.DecimalNumber "manim.mobject.text.numbers.DecimalNumber")\
_|_ [_Integer_](https://docs.manim.community/en/stable/reference/manim.mobject.text.numbers.Integer.html#manim.mobject.text.numbers.Integer "manim.mobject.text.numbers.Integer")\
_\]_)
* **num\_decimal\_places** (_int_)
* **kwargs** (_Any_)
---
# Table - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.table.Table.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.table.Table.rst "Edit this page")
Table[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#table "Link to this heading")
=======================================================================================================================
Qualified name: `manim.mobject.table.Table`
class Table(_table_, _row\_labels\=None_, _col\_labels\=None_, _top\_left\_entry\=None_, _v\_buff\=0.8_, _h\_buff\=1.3_, _include\_outer\_lines\=False_, _add\_background\_rectangles\_to\_entries\=False_, _entries\_background\_color\=ManimColor('#000000')_, _include\_background\_rectangle\=False_, _background\_rectangle\_color\=ManimColor('#000000')_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={}_, _arrange\_in\_grid\_config\={}_, _line\_config\={}_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
A mobject that displays a table on the screen.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_) – A 2D array or list of lists. Content of the table has to be a valid input for the callable set in `element_to_mobject`.
* **row\_labels** (_Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_ _|_ _None_) – List of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
representing the labels of each row.
* **col\_labels** (_Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_ _|_ _None_) – List of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
representing the labels of each column.
* **top\_left\_entry** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
_|_ _None_) – The top-left entry of the table, can only be specified if row and column labels are given.
* **v\_buff** (_float_) – Vertical buffer passed to [`arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
, by default 0.8.
* **h\_buff** (_float_) – Horizontal buffer passed to [`arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
, by default 1.3.
* **include\_outer\_lines** (_bool_) – `True` if the table should include outer lines, by default False.
* **add\_background\_rectangles\_to\_entries** (_bool_) – `True` if background rectangles should be added to entries, by default `False`.
* **entries\_background\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – Background color of entries if `add_background_rectangles_to_entries` is `True`.
* **include\_background\_rectangle** (_bool_) – `True` if the table should have a background rectangle, by default `False`.
* **background\_rectangle\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – Background color of table if `include_background_rectangle` is `True`.
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – The [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
class applied to the table entries. by default [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
. For common choices, see [`text_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject "manim.mobject.text.text_mobject")
/[`tex_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#module-manim.mobject.text.tex_mobject "manim.mobject.text.tex_mobject")
.
* **element\_to\_mobject\_config** (_dict_) – Custom configuration passed to `element_to_mobject`, by default {}.
* **arrange\_in\_grid\_config** (_dict_) – Dict passed to [`arrange_in_grid()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.arrange_in_grid "manim.mobject.mobject.Mobject.arrange_in_grid")
, customizes the arrangement of the table.
* **line\_config** (_dict_) – Dict passed to [`Line`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.line.Line.html#manim.mobject.geometry.line.Line "manim.mobject.geometry.line.Line")
, customizes the lines of the table.
* **kwargs** – Additional arguments to be passed to [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Examples
Example: TableExamples [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#tableexamples)

from manim import \*
class TableExamples(Scene):
def construct(self):
t0 \= Table(
\[\["This", "is a"\],\
\["simple", "Table in \\\\n Manim."\]\])
t1 \= Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
t1.add\_highlighted\_cell((2,2), color\=YELLOW)
t2 \= Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\],
top\_left\_entry\=Star().scale(0.3),
include\_outer\_lines\=True,
arrange\_in\_grid\_config\={"cell\_alignment": RIGHT})
t2.add(t2.get\_cell((2,2), color\=RED))
t3 \= Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\],
top\_left\_entry\=Star().scale(0.3),
include\_outer\_lines\=True,
line\_config\={"stroke\_width": 1, "color": YELLOW})
t3.remove(\*t3.get\_vertical\_lines())
g \= Group(
t0,t1,t2,t3
).scale(0.7).arrange\_in\_grid(buff\=1)
self.add(g)
class TableExamples(Scene):
def construct(self):
t0 = Table(
\[\["This", "is a"\],\
\["simple", "Table in \\\\n Manim."\]\])
t1 = Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
t1.add\_highlighted\_cell((2,2), color=YELLOW)
t2 = Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\],
top\_left\_entry=Star().scale(0.3),
include\_outer\_lines=True,
arrange\_in\_grid\_config={"cell\_alignment": RIGHT})
t2.add(t2.get\_cell((2,2), color=RED))
t3 = Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\],
top\_left\_entry=Star().scale(0.3),
include\_outer\_lines=True,
line\_config={"stroke\_width": 1, "color": YELLOW})
t3.remove(\*t3.get\_vertical\_lines())
g = Group(
t0,t1,t2,t3
).scale(0.7).arrange\_in\_grid(buff=1)
self.add(g)
Example: BackgroundRectanglesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#backgroundrectanglesexample)

from manim import \*
class BackgroundRectanglesExample(Scene):
def construct(self):
background \= Rectangle(height\=6.5, width\=13)
background.set\_fill(opacity\=.5)
background.set\_color(\[TEAL, RED, YELLOW\])
self.add(background)
t0 \= Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
add\_background\_rectangles\_to\_entries\=True)
t1 \= Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
include\_background\_rectangle\=True)
g \= Group(t0, t1).scale(0.7).arrange(buff\=0.5)
self.add(g)
class BackgroundRectanglesExample(Scene):
def construct(self):
background = Rectangle(height=6.5, width=13)
background.set\_fill(opacity=.5)
background.set\_color(\[TEAL, RED, YELLOW\])
self.add(background)
t0 = Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
add\_background\_rectangles\_to\_entries=True)
t1 = Table(
\[\["This", "is a"\],\
\["simple", "Table."\]\],
include\_background\_rectangle=True)
g = Group(t0, t1).scale(0.7).arrange(buff=0.5)
self.add(g)
Methods
| | |
| --- | --- |
| [`add_background_to_entries`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.add_background_to_entries "manim.mobject.table.Table.add_background_to_entries") | Adds a black [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
to each entry of the table. |
| [`add_highlighted_cell`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.add_highlighted_cell "manim.mobject.table.Table.add_highlighted_cell") | Highlights one cell at a specific position on the table by adding a [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
. |
| [`create`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.create "manim.mobject.table.Table.create") | Customized create-type function for tables. |
| [`get_cell`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_cell "manim.mobject.table.Table.get_cell") | Returns one specific cell as a rectangular [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
without the entry. |
| [`get_col_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_col_labels "manim.mobject.table.Table.get_col_labels") | Return the column labels of the table. |
| [`get_columns`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_columns "manim.mobject.table.Table.get_columns") | Return columns of the table as a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
. |
| [`get_entries`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_entries "manim.mobject.table.Table.get_entries") | Return the individual entries of the table (including labels) or one specific entry if the parameter, `pos`, is set. |
| [`get_entries_without_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_entries_without_labels "manim.mobject.table.Table.get_entries_without_labels") | Return the individual entries of the table (without labels) or one specific entry if the parameter, `pos`, is set. |
| [`get_highlighted_cell`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_highlighted_cell "manim.mobject.table.Table.get_highlighted_cell") | Returns a [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
of the cell at the given position. |
| [`get_horizontal_lines`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_horizontal_lines "manim.mobject.table.Table.get_horizontal_lines") | Return the horizontal lines of the table. |
| [`get_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_labels "manim.mobject.table.Table.get_labels") | Returns the labels of the table. |
| [`get_row_labels`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_row_labels "manim.mobject.table.Table.get_row_labels") | Return the row labels of the table. |
| [`get_rows`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_rows "manim.mobject.table.Table.get_rows") | Return the rows of the table as a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
. |
| [`get_vertical_lines`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_vertical_lines "manim.mobject.table.Table.get_vertical_lines") | Return the vertical lines of the table. |
| [`scale`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.scale "manim.mobject.table.Table.scale") | Scale the size by a factor. |
| [`set_column_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.set_column_colors "manim.mobject.table.Table.set_column_colors") | Set individual colors for each column of the table. |
| [`set_row_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.set_row_colors "manim.mobject.table.Table.set_row_colors") | Set individual colors for each row of the table. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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\_horizontal\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table._add_horizontal_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._add_horizontal_lines "Link to this definition")
Adds the horizontal lines to the table.
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
\_add\_labels(_mob\_table_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table._add_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._add_labels "Link to this definition")
Adds labels to an in a grid arranged [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Parameters:
**mob\_table** ([_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
) – An in a grid organized class:~.VGroup.
Returns:
Returns the `mob_table` with added labels.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
\_add\_vertical\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table._add_vertical_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._add_vertical_lines "Link to this definition")
Adds the vertical lines to the table
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
\_organize\_mob\_table(_table_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table._organize_mob_table)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._organize_mob_table "Link to this definition")
Arranges the [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
of `table` in a grid.
Parameters:
**table** (_Iterable__\[__Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_) – A 2D iterable object with [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
entries.
Returns:
The [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
of the `table` in a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
already arranged in a table-like grid.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
\_original\_\_init\_\_(_table_, _row\_labels\=None_, _col\_labels\=None_, _top\_left\_entry\=None_, _v\_buff\=0.8_, _h\_buff\=1.3_, _include\_outer\_lines\=False_, _add\_background\_rectangles\_to\_entries\=False_, _entries\_background\_color\=ManimColor('#000000')_, _include\_background\_rectangle\=False_, _background\_rectangle\_color\=ManimColor('#000000')_, _element\_to\_mobject\=_, _element\_to\_mobject\_config\={}_, _arrange\_in\_grid\_config\={}_, _line\_config\={}_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **table** (_Iterable__\[__Iterable__\[__float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_)
* **row\_labels** (_Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_ _|_ _None_)
* **col\_labels** (_Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_ _|_ _None_)
* **top\_left\_entry** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
_|_ _None_)
* **v\_buff** (_float_)
* **h\_buff** (_float_)
* **include\_outer\_lines** (_bool_)
* **add\_background\_rectangles\_to\_entries** (_bool_)
* **entries\_background\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **include\_background\_rectangle** (_bool_)
* **background\_rectangle\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **element\_to\_mobject** (_Callable__\[__\[__float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__,_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_)
* **element\_to\_mobject\_config** (_dict_)
* **arrange\_in\_grid\_config** (_dict_)
* **line\_config** (_dict_)
\_table\_to\_mob\_table(_table_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table._table_to_mob_table)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table._table_to_mob_table "Link to this definition")
Initializes the entries of `table` as [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
.
Parameters:
**table** (_Iterable__\[__Iterable__\[__float_ _|_ _str_ _|_ [_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]__\]_) – A 2D array or list of lists. Content of the table has to be a valid input for the callable set in `element_to_mobject`.
Returns:
List of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
from the entries of `table`.
Return type:
List
add\_background\_to\_entries(_color\=ManimColor('#000000')_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.add_background_to_entries)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.add_background_to_entries "Link to this definition")
Adds a black [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
to each entry of the table.
Parameters:
**color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
add\_highlighted\_cell(_pos\=(1, 1)_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.add_highlighted_cell)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.add_highlighted_cell "Link to this definition")
Highlights one cell at a specific position on the table by adding a [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
.
Parameters:
* **pos** (_Sequence__\[__int__\]_) – The position of a specific entry on the table. `(1,1)` being the top left entry of the table.
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color used to highlight the cell.
* **kwargs** – Additional arguments to be passed to [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
.
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
Examples
Example: AddHighlightedCellExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#addhighlightedcellexample)

from manim import \*
class AddHighlightedCellExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
table.add\_highlighted\_cell((2,2), color\=GREEN)
self.add(table)
class AddHighlightedCellExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
table.add\_highlighted\_cell((2,2), color=GREEN)
self.add(table)
create(_lag\_ratio\=1_, _line\_animation\=_, _label\_animation\=_, _element\_animation\=_, _entry\_animation\=_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.create)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.create "Link to this definition")
Customized create-type function for tables.
Parameters:
* **lag\_ratio** (_float_) – The lag ratio of the animation.
* **line\_animation** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_|_ [_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
_\]__,_ [_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The animation style of the table lines, see [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
for examples.
* **label\_animation** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_|_ [_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
_\]__,_ [_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The animation style of the table labels, see [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
for examples.
* **element\_animation** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_|_ [_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
_\]__,_ [_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The animation style of the table elements, see [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
for examples.
* **entry\_animation** (_Callable__\[__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_|_ [_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
_\]__,_ [_Animation_](https://docs.manim.community/en/stable/reference/manim.animation.animation.Animation.html#manim.animation.animation.Animation "manim.animation.animation.Animation")\
_\]_) – The entry animation of the table background, see [`creation`](https://docs.manim.community/en/stable/reference/manim.animation.creation.html#module-manim.animation.creation "manim.animation.creation")
for examples.
* **kwargs** – Further arguments passed to the creation animations.
Returns:
AnimationGroup containing creation of the lines and of the elements.
Return type:
[`AnimationGroup`](https://docs.manim.community/en/stable/reference/manim.animation.composition.AnimationGroup.html#manim.animation.composition.AnimationGroup "manim.animation.composition.AnimationGroup")
Examples
Example: CreateTableExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#createtableexample)
from manim import \*
class CreateTableExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\],
include\_outer\_lines\=True)
self.play(table.create())
self.wait()
class CreateTableExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\],
include\_outer\_lines=True)
self.play(table.create())
self.wait()
get\_cell(_pos\=(1, 1)_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_cell)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_cell "Link to this definition")
Returns one specific cell as a rectangular [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
without the entry.
Parameters:
* **pos** (_Sequence__\[__int__\]_) – The position of a specific entry on the table. `(1,1)` being the top left entry of the table.
* **kwargs** – Additional arguments to be passed to [`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
.
Returns:
Polygon mimicking one specific cell of the Table.
Return type:
[`Polygon`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.polygram.Polygon.html#manim.mobject.geometry.polygram.Polygon "manim.mobject.geometry.polygram.Polygon")
Examples
Example: GetCellExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getcellexample)

from manim import \*
class GetCellExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
cell \= table.get\_cell((2,2), color\=RED)
self.add(table, cell)
class GetCellExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
cell = table.get\_cell((2,2), color=RED)
self.add(table, cell)
get\_col\_labels()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_col_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_col_labels "Link to this definition")
Return the column labels of the table.
Returns:
VGroup containing the column labels of the table.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetColLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getcollabelsexample)

from manim import \*
class GetColLabelsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
lab \= table.get\_col\_labels()
for item in lab:
item.set\_color(random\_bright\_color())
self.add(table)
class GetColLabelsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
lab = table.get\_col\_labels()
for item in lab:
item.set\_color(random\_bright\_color())
self.add(table)
get\_columns()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_columns)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_columns "Link to this definition")
Return columns of the table as a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing each column in a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetColumnsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getcolumnsexample)

from manim import \*
class GetColumnsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
table.add(SurroundingRectangle(table.get\_columns()\[1\]))
self.add(table)
class GetColumnsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
table.add(SurroundingRectangle(table.get\_columns()\[1\]))
self.add(table)
get\_entries(_pos\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_entries)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_entries "Link to this definition")
Return the individual entries of the table (including labels) or one specific entry if the parameter, `pos`, is set.
Parameters:
**pos** (_Sequence__\[__int__\]_ _|_ _None_) – The position of a specific entry on the table. `(1,1)` being the top left entry of the table.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all entries of the table (including labels) or the [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
at the given position if `pos` is set.
Return type:
Union\[[`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
Examples
Example: GetEntriesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getentriesexample)

from manim import \*
class GetEntriesExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
ent \= table.get\_entries()
for item in ent:
item.set\_color(random\_bright\_color())
table.get\_entries((2,2)).rotate(PI)
self.add(table)
class GetEntriesExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
ent = table.get\_entries()
for item in ent:
item.set\_color(random\_bright\_color())
table.get\_entries((2,2)).rotate(PI)
self.add(table)
get\_entries\_without\_labels(_pos\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_entries_without_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_entries_without_labels "Link to this definition")
Return the individual entries of the table (without labels) or one specific entry if the parameter, `pos`, is set.
Parameters:
**pos** (_Sequence__\[__int__\]_ _|_ _None_) – The position of a specific entry on the table. `(1,1)` being the top left entry of the table (without labels).
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all entries of the table (without labels) or the [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
at the given position if `pos` is set.
Return type:
Union\[[`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
, [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")\
\]
Examples
Example: GetEntriesWithoutLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getentrieswithoutlabelsexample)

from manim import \*
class GetEntriesWithoutLabelsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
ent \= table.get\_entries\_without\_labels()
colors \= \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
ent\[k\].set\_color(colors\[k\])
table.get\_entries\_without\_labels((2,2)).rotate(PI)
self.add(table)
class GetEntriesWithoutLabelsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
ent = table.get\_entries\_without\_labels()
colors = \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
ent\[k\].set\_color(colors\[k\])
table.get\_entries\_without\_labels((2,2)).rotate(PI)
self.add(table)
get\_highlighted\_cell(_pos\=(1, 1)_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_highlighted_cell)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_highlighted_cell "Link to this definition")
Returns a [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
of the cell at the given position.
Parameters:
* **pos** (_Sequence__\[__int__\]_) – The position of a specific entry on the table. `(1,1)` being the top left entry of the table.
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color used to highlight the cell.
* **kwargs** – Additional arguments to be passed to [`BackgroundRectangle`](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
.
Return type:
[_BackgroundRectangle_](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.shape_matchers.BackgroundRectangle.html#manim.mobject.geometry.shape_matchers.BackgroundRectangle "manim.mobject.geometry.shape_matchers.BackgroundRectangle")
Examples
Example: GetHighlightedCellExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#gethighlightedcellexample)

from manim import \*
class GetHighlightedCellExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
highlight \= table.get\_highlighted\_cell((2,2), color\=GREEN)
table.add\_to\_back(highlight)
self.add(table)
class GetHighlightedCellExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
highlight = table.get\_highlighted\_cell((2,2), color=GREEN)
table.add\_to\_back(highlight)
self.add(table)
get\_horizontal\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_horizontal_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_horizontal_lines "Link to this definition")
Return the horizontal lines of the table.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all the horizontal lines of the table.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetHorizontalLinesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#gethorizontallinesexample)

from manim import \*
class GetHorizontalLinesExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
table.get\_horizontal\_lines().set\_color(RED)
self.add(table)
class GetHorizontalLinesExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
table.get\_horizontal\_lines().set\_color(RED)
self.add(table)
get\_labels()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_labels "Link to this definition")
Returns the labels of the table.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all the labels of the table.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getlabelsexample)

from manim import \*
class GetLabelsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
lab \= table.get\_labels()
colors \= \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
lab\[k\].set\_color(colors\[k\])
self.add(table)
class GetLabelsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
lab = table.get\_labels()
colors = \[BLUE, GREEN, YELLOW, RED\]
for k in range(len(colors)):
lab\[k\].set\_color(colors\[k\])
self.add(table)
get\_row\_labels()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_row_labels)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_row_labels "Link to this definition")
Return the row labels of the table.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing the row labels of the table.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetRowLabelsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getrowlabelsexample)

from manim import \*
class GetRowLabelsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
lab \= table.get\_row\_labels()
for item in lab:
item.set\_color(random\_bright\_color())
self.add(table)
class GetRowLabelsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
lab = table.get\_row\_labels()
for item in lab:
item.set\_color(random\_bright\_color())
self.add(table)
get\_rows()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_rows)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_rows "Link to this definition")
Return the rows of the table as a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing each row in a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetRowsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getrowsexample)

from manim import \*
class GetRowsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
table.add(SurroundingRectangle(table.get\_rows()\[1\]))
self.add(table)
class GetRowsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
table.add(SurroundingRectangle(table.get\_rows()\[1\]))
self.add(table)
get\_vertical\_lines()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.get_vertical_lines)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.get_vertical_lines "Link to this definition")
Return the vertical lines of the table.
Returns:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all the vertical lines of the table.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Examples
Example: GetVerticalLinesExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#getverticallinesexample)

from manim import \*
class GetVerticalLinesExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\])
table.get\_vertical\_lines()\[0\].set\_color(RED)
self.add(table)
class GetVerticalLinesExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\])
table.get\_vertical\_lines()\[0\].set\_color(RED)
self.add(table)
scale(_scale\_factor_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.scale)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.scale "Link to this definition")
Scale the size by a factor.
Default behavior is to scale about the center of the vmobject.
Parameters:
* **scale\_factor** (_float_) – The scaling factor \\(\\alpha\\). If \\(0 < |\\alpha| < 1\\), the mobject will shrink, and for \\(|\\alpha| > 1\\) it will grow. Furthermore, if \\(\\alpha < 0\\), the mobject is also flipped.
* **scale\_stroke** – Boolean determining if the object’s outline is scaled when the object is scaled. If enabled, and object with 2px outline is scaled by a factor of .5, it will have an outline of 1px.
* **kwargs** – Additional keyword arguments passed to [`scale()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.scale "manim.mobject.mobject.Mobject.scale")
.
Returns:
`self`
Return type:
`VMobject`
Examples
Example: MobjectScaleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#mobjectscaleexample)

from manim import \*
class MobjectScaleExample(Scene):
def construct(self):
c1 \= Circle(1, RED).set\_x(\-1)
c2 \= Circle(1, GREEN).set\_x(1)
vg \= VGroup(c1, c2)
vg.set\_stroke(width\=50)
self.add(vg)
self.play(
c1.animate.scale(.25),
c2.animate.scale(.25,
scale\_stroke\=True)
)
class MobjectScaleExample(Scene):
def construct(self):
c1 = Circle(1, RED).set\_x(-1)
c2 = Circle(1, GREEN).set\_x(1)
vg = VGroup(c1, c2)
vg.set\_stroke(width=50)
self.add(vg)
self.play(
c1.animate.scale(.25),
c2.animate.scale(.25,
scale\_stroke=True)
)
See also
`move_to()`
set\_column\_colors(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.set_column_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.set_column_colors "Link to this definition")
Set individual colors for each column of the table.
Parameters:
**colors** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_) – An iterable of colors; each color corresponds to a column.
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
Examples
Example: SetColumnColorsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#setcolumncolorsexample)

from manim import \*
class SetColumnColorsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\]
).set\_column\_colors(\[RED,BLUE\], GREEN)
self.add(table)
class SetColumnColorsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\]
).set\_column\_colors(\[RED,BLUE\], GREEN)
self.add(table)
set\_row\_colors(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/table.html#Table.set_row_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table.set_row_colors "Link to this definition")
Set individual colors for each row of the table.
Parameters:
**colors** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_) – An iterable of colors; each color corresponds to a row.
Return type:
[_Table_](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#manim.mobject.table.Table "manim.mobject.table.Table")
Examples
Example: SetRowColorsExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.table.Table.html#setrowcolorsexample)

from manim import \*
class SetRowColorsExample(Scene):
def construct(self):
table \= Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels\=\[Text("R1"), Text("R2")\],
col\_labels\=\[Text("C1"), Text("C2")\]
).set\_row\_colors(\[RED,BLUE\], GREEN)
self.add(table)
class SetRowColorsExample(Scene):
def construct(self):
table = Table(
\[\["First", "Second"\],\
\["Third","Fourth"\]\],
row\_labels=\[Text("R1"), Text("R2")\],
col\_labels=\[Text("C1"), Text("C2")\]
).set\_row\_colors(\[RED,BLUE\], GREEN)
self.add(table)
---
# BulletedList - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.BulletedList.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.BulletedList.rst "Edit this page")
BulletedList[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#bulletedlist "Link to this heading")
=======================================================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.BulletedList`
class BulletedList(_\*items_, _buff\=0.5_, _dot\_scale\_factor\=2_, _tex\_environment\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#BulletedList)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#manim.mobject.text.tex_mobject.BulletedList "Link to this definition")
Bases: [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
A bulleted list.
Examples
Example: BulletedListExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#bulletedlistexample)

from manim import \*
class BulletedListExample(Scene):
def construct(self):
blist \= BulletedList("Item 1", "Item 2", "Item 3", height\=2, width\=2)
blist.set\_color\_by\_tex("Item 1", RED)
blist.set\_color\_by\_tex("Item 2", GREEN)
blist.set\_color\_by\_tex("Item 3", BLUE)
self.add(blist)
class BulletedListExample(Scene):
def construct(self):
blist = BulletedList("Item 1", "Item 2", "Item 3", height=2, width=2)
blist.set\_color\_by\_tex("Item 1", RED)
blist.set\_color\_by\_tex("Item 2", GREEN)
blist.set\_color\_by\_tex("Item 3", BLUE)
self.add(blist)
Methods
| | |
| --- | --- |
| `fade_all_but` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | The font size of the tex mobject. |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **items** (_str_)
* **buff** (_float_)
* **dot\_scale\_factor** (_float_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*items_, _buff\=0.5_, _dot\_scale\_factor\=2_, _tex\_environment\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.BulletedList.html#manim.mobject.text.tex_mobject.BulletedList._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **items** (_str_)
* **buff** (_float_)
* **dot\_scale\_factor** (_float_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
---
# MathTexPart - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.MathTexPart.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.MathTexPart.rst "Edit this page")
MathTexPart[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#mathtexpart "Link to this heading")
====================================================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.MathTexPart`
class MathTexPart(_fill\_color\=None_, _fill\_opacity\=0.0_, _stroke\_color\=None_, _stroke\_opacity\=1.0_, _stroke\_width\=4_, _background\_stroke\_color\=ManimColor('#000000')_, _background\_stroke\_opacity\=1.0_, _background\_stroke\_width\=0_, _sheen\_factor\=0.0_, _joint\_type\=None_, _sheen\_direction\=array(\[-1., 1., 0.\])_, _close\_new\_points\=False_, _pre\_function\_handle\_to\_anchor\_scale\_factor\=0.01_, _make\_smooth\_after\_applying\_functions\=False_, _background\_image\=None_, _shade\_in\_3d\=False_, _tolerance\_for\_point\_equality\=1e-06_, _n\_points\_per\_cubic\_curve\=4_, _cap\_style\=CapStyleType.AUTO_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#MathTexPart)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#manim.mobject.text.tex_mobject.MathTexPart "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
| `tex_string` | |
Parameters:
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **fill\_opacity** (_float_)
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **stroke\_opacity** (_float_)
* **stroke\_width** (_float_)
* **background\_stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **background\_stroke\_opacity** (_float_)
* **background\_stroke\_width** (_float_)
* **sheen\_factor** (_float_)
* **joint\_type** ([_LineJointType_](https://docs.manim.community/en/stable/reference/manim.constants.LineJointType.html#manim.constants.LineJointType "manim.constants.LineJointType")
_|_ _None_)
* **sheen\_direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **close\_new\_points** (_bool_)
* **pre\_function\_handle\_to\_anchor\_scale\_factor** (_float_)
* **make\_smooth\_after\_applying\_functions** (_bool_)
* **background\_image** (_Image_ _|_ _str_ _|_ _None_)
* **shade\_in\_3d** (_bool_)
* **tolerance\_for\_point\_equality** (_float_)
* **n\_points\_per\_cubic\_curve** (_int_)
* **cap\_style** ([_CapStyleType_](https://docs.manim.community/en/stable/reference/manim.constants.CapStyleType.html#manim.constants.CapStyleType "manim.constants.CapStyleType")
)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_fill\_color\=None_, _fill\_opacity\=0.0_, _stroke\_color\=None_, _stroke\_opacity\=1.0_, _stroke\_width\=4_, _background\_stroke\_color\=ManimColor('#000000')_, _background\_stroke\_opacity\=1.0_, _background\_stroke\_width\=0_, _sheen\_factor\=0.0_, _joint\_type\=None_, _sheen\_direction\=array(\[-1., 1., 0.\])_, _close\_new\_points\=False_, _pre\_function\_handle\_to\_anchor\_scale\_factor\=0.01_, _make\_smooth\_after\_applying\_functions\=False_, _background\_image\=None_, _shade\_in\_3d\=False_, _tolerance\_for\_point\_equality\=1e-06_, _n\_points\_per\_cubic\_curve\=4_, _cap\_style\=CapStyleType.AUTO_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTexPart.html#manim.mobject.text.tex_mobject.MathTexPart._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **fill\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **fill\_opacity** (_float_)
* **stroke\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **stroke\_opacity** (_float_)
* **stroke\_width** (_float_)
* **background\_stroke\_color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **background\_stroke\_opacity** (_float_)
* **background\_stroke\_width** (_float_)
* **sheen\_factor** (_float_)
* **joint\_type** ([_LineJointType_](https://docs.manim.community/en/stable/reference/manim.constants.LineJointType.html#manim.constants.LineJointType "manim.constants.LineJointType")
_|_ _None_)
* **sheen\_direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **close\_new\_points** (_bool_)
* **pre\_function\_handle\_to\_anchor\_scale\_factor** (_float_)
* **make\_smooth\_after\_applying\_functions** (_bool_)
* **background\_image** (_Image_ _|_ _str_ _|_ _None_)
* **shade\_in\_3d** (_bool_)
* **tolerance\_for\_point\_equality** (_float_)
* **n\_points\_per\_cubic\_curve** (_int_)
* **cap\_style** ([_CapStyleType_](https://docs.manim.community/en/stable/reference/manim.constants.CapStyleType.html#manim.constants.CapStyleType "manim.constants.CapStyleType")
)
* **kwargs** (_Any_)
---
# Tex - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.Tex.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.Tex.rst "Edit this page")
Tex[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#tex "Link to this heading")
============================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.Tex`
class Tex(_\*tex\_strings_, _arg\_separator\=''_, _tex\_environment\='center'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#Tex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "Link to this definition")
Bases: [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
A string compiled with LaTeX in normal mode.
The color can be set using the `color` argument. Any parts of the `tex_string` that are colored by the TeX commands `\color` or `\textcolor` will retain their original color.
Tests
Check whether writing a LaTeX string works:
\>>> Tex('The horse does not eat cucumber salad.')
Tex('The horse does not eat cucumber salad.')
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | The font size of the tex mobject. |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **tex\_strings** (_str_)
* **arg\_separator** (_str_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*tex\_strings_, _arg\_separator\=''_, _tex\_environment\='center'_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **tex\_strings** (_str_)
* **arg\_separator** (_str_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
---
# Title - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.Title.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.Title.rst "Edit this page")
Title[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#title "Link to this heading")
==================================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.Title`
class Title(_\*text\_parts_, _include\_underline\=True_, _match\_underline\_width\_to\_text\=False_, _underline\_buff\=0.25_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#Title)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#manim.mobject.text.tex_mobject.Title "Link to this definition")
Bases: [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
A mobject representing an underlined title.
Examples
Example: TitleExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#titleexample)

from manim import \*
import manim
class TitleExample(Scene):
def construct(self):
banner \= ManimBanner()
title \= Title(f"Manim version {manim.\_\_version\_\_}")
self.add(banner, title)
import manim
class TitleExample(Scene):
def construct(self):
banner = ManimBanner()
title = Title(f"Manim version {manim.\_\_version\_\_}")
self.add(banner, title)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | The font size of the tex mobject. |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **text\_parts** (_str_)
* **include\_underline** (_bool_)
* **match\_underline\_width\_to\_text** (_bool_)
* **underline\_buff** (_float_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*text\_parts_, _include\_underline\=True_, _match\_underline\_width\_to\_text\=False_, _underline\_buff\=0.25_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Title.html#manim.mobject.text.tex_mobject.Title._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **text\_parts** (_str_)
* **include\_underline** (_bool_)
* **match\_underline\_width\_to\_text** (_bool_)
* **underline\_buff** (_float_)
* **kwargs** (_Any_)
---
# three_d - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.rst "Edit this page")
three\_d[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.html#module-manim.mobject.three_d "Link to this heading")
=============================================================================================================================================
Three-dimensional mobjects.
Modules[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.html#modules "Link to this heading")
-----------------------------------------------------------------------------------------------------------------------
| | |
| --- | --- |
| [`polyhedra`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.html#module-manim.mobject.three_d.polyhedra "manim.mobject.three_d.polyhedra") | General polyhedral class and platonic solids. |
| [`three_d_utils`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#module-manim.mobject.three_d.three_d_utils "manim.mobject.three_d.three_d_utils") | Utility functions for three-dimensional mobjects. |
| [`three_dimensions`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#module-manim.mobject.three_d.three_dimensions "manim.mobject.three_d.three_dimensions") | Three-dimensional mobjects. |
---
# MathTex - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.MathTex.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.MathTex.rst "Edit this page")
MathTex[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#mathtex "Link to this heading")
========================================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.MathTex`
class MathTex(_\*tex\_strings_, _arg\_separator\=' '_, _substrings\_to\_isolate\=None_, _tex\_to\_color\_map\=None_, _tex\_environment\='align\*'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#MathTex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "Link to this definition")
Bases: [`SingleStringMathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")
A string compiled with LaTeX in math mode.
Examples
Example: Formula [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#formula)

from manim import \*
class Formula(Scene):
def construct(self):
t \= MathTex(r"\\int\_a^b f'(x) dx = f(b)- f(a)")
self.add(t)
class Formula(Scene):
def construct(self):
t = MathTex(r"\\int\_a^b f'(x) dx = f(b)- f(a)")
self.add(t)
Notes
Double-brace notation `{{ ... }}` can be used to split a single string argument into multiple submobjects without having to pass separate strings:
MathTex(r"{{ a^2 }} + {{ b^2 }} = {{ c^2 }}")
Each `{{ ... }}` group and every piece of text between groups becomes its own submobject, which is useful for [`TransformMatchingTex`](https://docs.manim.community/en/stable/reference/manim.animation.transform_matching_parts.TransformMatchingTex.html#manim.animation.transform_matching_parts.TransformMatchingTex "manim.animation.transform_matching_parts.TransformMatchingTex")
animations.
For `{{` to be recognised as a group opener it must appear either at the very start of the string or be immediately preceded by a whitespace character. `{{` that follows non-whitespace — such as in `\frac{{{n}}}{k}` or `a^{{2}}` — is left untouched, so ordinary nested-brace LaTeX is not accidentally split. To prevent an unintentional split, insert a space between the two braces: `{{ ... }}` → `{ { ... } }`.
Tests
Check that creating a [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
works:
\>>> MathTex('a^2 + b^2 = c^2')
MathTex('a^2 + b^2 = c^2')
Check that double brace group splitting works correctly:
\>>> t1 \= MathTex('{{ a }} + {{ b }} = {{ c }}')
\>>> len(t1.submobjects)
5
\>>> t2 \= MathTex(r"\\frac{1}{a+b\\sqrt{2}}")
\>>> len(t2.submobjects)
1
Methods
| | |
| --- | --- |
| `get_part_by_tex` | |
| `index_of_part` | |
| `set_color_by_tex` | |
| `set_color_by_tex_to_color_map` | |
| [`set_opacity_by_tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex.set_opacity_by_tex "manim.mobject.text.tex_mobject.MathTex.set_opacity_by_tex") | Sets the opacity of the tex specified. |
| `sort_alphabetically` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | The font size of the tex mobject. |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **tex\_strings** (_str_)
* **arg\_separator** (_str_)
* **substrings\_to\_isolate** (_Iterable__\[__str__\]_ _|_ _None_)
* **tex\_to\_color\_map** (_dict__\[__str__,_ [_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_\]_ _|_ _None_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
\_break\_up\_by\_substrings()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#MathTex._break_up_by_substrings)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex._break_up_by_substrings "Link to this definition")
Reorganize existing submobjects one layer deeper based on the structure of tex\_strings (as a list of tex\_strings)
Return type:
_Self_
property \_main\_matches: list\[tuple\[str, str\]\][¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex._main_matches "Link to this definition")
Return only the main tex\_string matches.
\_original\_\_init\_\_(_\*tex\_strings_, _arg\_separator\=' '_, _substrings\_to\_isolate\=None_, _tex\_to\_color\_map\=None_, _tex\_environment\='align\*'_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **tex\_strings** (_str_)
* **arg\_separator** (_str_)
* **substrings\_to\_isolate** (_Iterable__\[__str__\]_ _|_ _None_)
* **tex\_to\_color\_map** (_dict__\[__str__,_ _TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _None_)
* **tex\_environment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
static \_split\_double\_braces(_tex\_string_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#MathTex._split_double_braces)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex._split_double_braces "Link to this definition")
Split _tex\_string_ on Manim’s `{{ ... }}` double-brace notation.
Rules that avoid false positives on ordinary LaTeX source:
* `{{` is only treated as a group opener when it appears at the very start of the string or is immediately preceded by a whitespace character. Naturally-occurring `{{` in LaTeX is usually preceded by non-whitespace (e.g. `\frac{{{n}}}{k}` or `a^{{2}}`), so the whitespace guard eliminates the most common false positives without any brace-depth bookkeeping on the outer string.
* Inside an open group the depth of _real_ LaTeX braces is tracked. `}}` only closes the Manim group when the inner depth is zero, so `{{ a^{b^{c}} }}` is handled correctly.
* Escape sequences are consumed as two-character units in priority order: `\\` first (escaped backslash), then `\{` / `\}` (escaped braces). This ensures e.g. `\\}}` is read as an escaped backslash followed by a real `}}` rather than as `\` + `\}` + lone `}`.
Parameters:
**tex\_string** (_str_)
Return type:
list\[str\]
property \_substring\_matches: list\[tuple\[str, str\]\][¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex._substring_matches "Link to this definition")
Return only the ‘ss’ (substring\_to\_isolate) matches.
set\_opacity\_by\_tex(_tex_, _opacity\=0.5_, _remaining\_opacity\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#MathTex.set_opacity_by_tex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex.set_opacity_by_tex "Link to this definition")
Sets the opacity of the tex specified. If ‘remaining\_opacity’ is specified, then the remaining tex will be set to that opacity.
Parameters:
* **tex** (_str_) – The tex to set the opacity of.
* **opacity** (_float_) – Default 0.5. The opacity to set the tex to
* **remaining\_opacity** (_float_ _|_ _None_) – Default None. The opacity to set the remaining tex to. If None, then the remaining tex will not be changed
* **kwargs** (_Any_)
Return type:
_Self_
---
# SingleStringMathTex - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.rst "Edit this page")
SingleStringMathTex[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#singlestringmathtex "Link to this heading")
============================================================================================================================================================================
Qualified name: `manim.mobject.text.tex\_mobject.SingleStringMathTex`
class SingleStringMathTex(_tex\_string_, _stroke\_width\=0_, _should\_center\=True_, _height\=None_, _organize\_left\_to\_right\=False_, _tex\_environment\='align\*'_, _tex\_template\=None_, _font\_size\=48_, _color\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#SingleStringMathTex)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "Link to this definition")
Bases: [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
Elementary building block for rendering text with LaTeX.
Tests
Check that creating a [`SingleStringMathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex "manim.mobject.text.tex_mobject.SingleStringMathTex")
object works:
\>>> SingleStringMathTex('Test')
SingleStringMathTex('Test')
Methods
| | |
| --- | --- |
| `get_tex_string` | |
| [`init_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex.init_colors "manim.mobject.text.tex_mobject.SingleStringMathTex.init_colors") | Initializes the colors. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| [`font_size`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex.font_size "manim.mobject.text.tex_mobject.SingleStringMathTex.font_size") | The font size of the tex mobject. |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
Parameters:
* **tex\_string** (_str_)
* **stroke\_width** (_float_)
* **should\_center** (_bool_)
* **height** (_float_ _|_ _None_)
* **organize\_left\_to\_right** (_bool_)
* **tex\_environment** (_str_ _|_ _None_)
* **tex\_template** ([_TexTemplate_](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "manim.utils.tex.TexTemplate")
_|_ _None_)
* **font\_size** (_float_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_tex\_string_, _stroke\_width\=0_, _should\_center\=True_, _height\=None_, _organize\_left\_to\_right\=False_, _tex\_environment\='align\*'_, _tex\_template\=None_, _font\_size\=48_, _color\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **tex\_string** (_str_)
* **stroke\_width** (_float_)
* **should\_center** (_bool_)
* **height** (_float_ _|_ _None_)
* **organize\_left\_to\_right** (_bool_)
* **tex\_environment** (_str_ _|_ _None_)
* **tex\_template** ([_TexTemplate_](https://docs.manim.community/en/stable/reference/manim.utils.tex.TexTemplate.html#manim.utils.tex.TexTemplate "manim.utils.tex.TexTemplate")
_|_ _None_)
* **font\_size** (_float_)
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **kwargs** (_Any_)
\_remove\_stray\_braces(_tex_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#SingleStringMathTex._remove_stray_braces)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex._remove_stray_braces "Link to this definition")
Makes [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
resilient to unmatched braces.
This is important when the braces in the TeX code are spread over multiple arguments as in, e.g., `MathTex(r"e^{i", r"\tau} = 1")`.
Parameters:
**tex** (_str_)
Return type:
str
property font\_size: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex.font_size "Link to this definition")
The font size of the tex mobject.
init\_colors(_propagate\_colors\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/tex_mobject.html#SingleStringMathTex.init_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.SingleStringMathTex.html#manim.mobject.text.tex_mobject.SingleStringMathTex.init_colors "Link to this definition")
Initializes the colors.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Parameters:
**propagate\_colors** (_bool_)
Return type:
_Self_
---
# Paragraph - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.text_mobject.Paragraph.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.text_mobject.Paragraph.rst "Edit this page")
Paragraph[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#paragraph "Link to this heading")
===============================================================================================================================================
Qualified name: `manim.mobject.text.text\_mobject.Paragraph`
class Paragraph(_\*text_, _line\_spacing\=\-1_, _alignment\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Display a paragraph of text.
For a given [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
`par`, the attribute `par.chars` is a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
containing all the lines. In this context, every line is constructed as a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
of characters contained in the line.
Parameters:
* **line\_spacing** (_float_) – Represents the spacing between lines. Defaults to -1, which means auto.
* **alignment** (_str_ _|_ _None_) – Defines the alignment of paragraph. Defaults to None. Possible values are “left”, “right” or “center”.
* **text** (_str_)
* **kwargs** (_Any_)
Examples
Normal usage:
paragraph \= Paragraph(
"this is a awesome",
"paragraph",
"With \\nNewlines",
"\\tWith Tabs",
" With Spaces",
"With Alignments",
"center",
"left",
"right",
)
Remove unwanted invisible characters:
self.play(Transform(remove\_invisible\_chars(paragraph.chars\[0:2\]),
remove\_invisible\_chars(paragraph.chars\[3\]\[0:3\]))
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_change\_alignment\_for\_a\_line(_alignment_, _line\_no_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._change_alignment_for_a_line)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._change_alignment_for_a_line "Link to this definition")
Function to change one line’s alignment to a specific value.
Parameters:
* **alignment** (_str_) – Defines the alignment of paragraph. Possible values are “left”, “right”, “center”.
* **line\_no** (_int_) – Defines the line number for which we want to set given alignment.
Return type:
None
\_gen\_chars(_lines\_str\_list_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._gen_chars)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._gen_chars "Link to this definition")
Function to convert a list of plain strings to a VGroup of VGroups of chars.
Parameters:
**lines\_str\_list** (_list_) – List of plain text strings.
Returns:
The generated 2d-VGroup of chars.
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
\_original\_\_init\_\_(_\*text_, _line\_spacing\=\-1_, _alignment\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **text** (_str_)
* **line\_spacing** (_float_)
* **alignment** (_str_ _|_ _None_)
* **kwargs** (_Any_)
\_set\_all\_lines\_alignments(_alignment_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._set_all_lines_alignments)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._set_all_lines_alignments "Link to this definition")
Function to set all line’s alignment to a specific value.
Parameters:
**alignment** (_str_) – Defines the alignment of paragraph. Possible values are “left”, “right”, “center”.
Return type:
[_Paragraph_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
\_set\_all\_lines\_to\_initial\_positions()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._set_all_lines_to_initial_positions)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._set_all_lines_to_initial_positions "Link to this definition")
Set all lines to their initial positions.
Return type:
[_Paragraph_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
\_set\_line\_alignment(_alignment_, _line\_no_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._set_line_alignment)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._set_line_alignment "Link to this definition")
Function to set one line’s alignment to a specific value.
Parameters:
* **alignment** (_str_) – Defines the alignment of paragraph. Possible values are “left”, “right”, “center”.
* **line\_no** (_int_) – Defines the line number for which we want to set given alignment.
Return type:
[_Paragraph_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
\_set\_line\_to\_initial\_position(_line\_no_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Paragraph._set_line_to_initial_position)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph._set_line_to_initial_position "Link to this definition")
Function to set one line to initial positions.
Parameters:
**line\_no** (_int_) – Defines the line number for which we want to set given alignment.
Return type:
[_Paragraph_](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph")
---
# three_dimensions - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.rst "Edit this page")
three\_dimensions[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.html#module-manim.mobject.three_d.three_dimensions "Link to this heading")
========================================================================================================================================================================================
Three-dimensional mobjects.
Classes
| | |
| --- | --- |
| [`Arrow3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "manim.mobject.three_d.three_dimensions.Arrow3D") | An arrow made out of a cylindrical line and a conical tip. |
| [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone") | A circular cone. |
| [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube") | A three-dimensional cube. |
| [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder") | A cylinder, defined by its height, radius and direction, |
| [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D") | A spherical dot. |
| [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D") | A cylindrical line, for use in ThreeDScene. |
| [`Prism`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "manim.mobject.three_d.three_dimensions.Prism") | A right rectangular prism (or rectangular cuboid). |
| [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere") | A three-dimensional sphere. |
| [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface") | Creates a Parametric Surface using a checkerboard pattern. |
| [`ThreeDVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#manim.mobject.three_d.three_dimensions.ThreeDVMobject "manim.mobject.three_d.three_dimensions.ThreeDVMobject") | |
| [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus") | A torus. |
---
# Octahedron - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.Octahedron.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.Octahedron.rst "Edit this page")
Octahedron[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#octahedron "Link to this heading")
==================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.Octahedron`
class Octahedron(_edge\_length\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Octahedron)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#manim.mobject.three_d.polyhedra.Octahedron "Link to this definition")
Bases: [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
An octahedron, one of the five platonic solids. It has 8 faces, 12 edges and 6 vertices.
Parameters:
* **edge\_length** (_float_) – The length of an edge between any two vertices.
* **kwargs** (_Any_)
Examples
Example: OctahedronScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#octahedronscene)

from manim import \*
class OctahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
obj \= Octahedron()
self.add(obj)
class OctahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
obj = Octahedron()
self.add(obj)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_edge\_length\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#manim.mobject.three_d.polyhedra.Octahedron._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **edge\_length** (_float_)
* **kwargs** (_Any_)
---
# Tetrahedron - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.Tetrahedron.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.Tetrahedron.rst "Edit this page")
Tetrahedron[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#tetrahedron "Link to this heading")
=====================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.Tetrahedron`
class Tetrahedron(_edge\_length\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Tetrahedron)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#manim.mobject.three_d.polyhedra.Tetrahedron "Link to this definition")
Bases: [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
A tetrahedron, one of the five platonic solids. It has 4 faces, 6 edges, and 4 vertices.
Parameters:
* **edge\_length** (_float_) – The length of an edge between any two vertices.
* **kwargs** (_Any_)
Examples
Example: TetrahedronScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#tetrahedronscene)

from manim import \*
class TetrahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
obj \= Tetrahedron()
self.add(obj)
class TetrahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
obj = Tetrahedron()
self.add(obj)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_edge\_length\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#manim.mobject.three_d.polyhedra.Tetrahedron._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **edge\_length** (_float_)
* **kwargs** (_Any_)
---
# polyhedra - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.rst "Edit this page")
polyhedra[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.html#module-manim.mobject.three_d.polyhedra "Link to this heading")
==================================================================================================================================================================
General polyhedral class and platonic solids.
Classes
| | |
| --- | --- |
| [`ConvexHull3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#manim.mobject.three_d.polyhedra.ConvexHull3D "manim.mobject.three_d.polyhedra.ConvexHull3D") | A convex hull for a set of points |
| [`Dodecahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#manim.mobject.three_d.polyhedra.Dodecahedron "manim.mobject.three_d.polyhedra.Dodecahedron") | A dodecahedron, one of the five platonic solids. |
| [`Icosahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#manim.mobject.three_d.polyhedra.Icosahedron "manim.mobject.three_d.polyhedra.Icosahedron") | An icosahedron, one of the five platonic solids. |
| [`Octahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Octahedron.html#manim.mobject.three_d.polyhedra.Octahedron "manim.mobject.three_d.polyhedra.Octahedron") | An octahedron, one of the five platonic solids. |
| [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron") | An abstract polyhedra class. |
| [`Tetrahedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Tetrahedron.html#manim.mobject.three_d.polyhedra.Tetrahedron "manim.mobject.three_d.polyhedra.Tetrahedron") | A tetrahedron, one of the five platonic solids. |
---
# Icosahedron - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.Icosahedron.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.Icosahedron.rst "Edit this page")
Icosahedron[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#icosahedron "Link to this heading")
=====================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.Icosahedron`
class Icosahedron(_edge\_length\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Icosahedron)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#manim.mobject.three_d.polyhedra.Icosahedron "Link to this definition")
Bases: [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
An icosahedron, one of the five platonic solids. It has 20 faces, 30 edges and 12 vertices.
Parameters:
* **edge\_length** (_float_) – The length of an edge between any two vertices.
* **kwargs** (_Any_)
Examples
Example: IcosahedronScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#icosahedronscene)

from manim import \*
class IcosahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
obj \= Icosahedron()
self.add(obj)
class IcosahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
obj = Icosahedron()
self.add(obj)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_edge\_length\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Icosahedron.html#manim.mobject.three_d.polyhedra.Icosahedron._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **edge\_length** (_float_)
* **kwargs** (_Any_)
---
# text_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.text_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.text_mobject.rst "Edit this page")
text\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#module-manim.mobject.text.text_mobject "Link to this heading")
======================================================================================================================================================================
Mobjects used for displaying (non-LaTeX) text.
Note
Just as you can use [`Tex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.Tex.html#manim.mobject.text.tex_mobject.Tex "manim.mobject.text.tex_mobject.Tex")
and [`MathTex`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html#manim.mobject.text.tex_mobject.MathTex "manim.mobject.text.tex_mobject.MathTex")
(from the module [`tex_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.html#module-manim.mobject.text.tex_mobject "manim.mobject.text.tex_mobject")
) to insert LaTeX to your videos, you can use [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
to to add normal text.
Important
See the corresponding tutorial [Text Without LaTeX](https://docs.manim.community/en/stable/guides/using_text.html#using-text-objects)
, especially for information about fonts.
The simplest way to add text to your animations is to use the [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
class. It uses the Pango library to render text. With Pango, you are also able to render non-English alphabets like 你好 or こんにちは or 안녕하세요 or مرحبا بالعالم.
Examples
Example: HelloWorld [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#helloworld)

from manim import \*
class HelloWorld(Scene):
def construct(self):
text \= Text('Hello world').scale(3)
self.add(text)
class HelloWorld(Scene):
def construct(self):
text = Text('Hello world').scale(3)
self.add(text)
Example: TextAlignment [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#textalignment)

from manim import \*
class TextAlignment(Scene):
def construct(self):
title \= Text("K-means clustering and Logistic Regression", color\=WHITE)
title.scale(0.75)
self.add(title.to\_edge(UP))
t1 \= Text("1. Measuring").set\_color(WHITE)
t2 \= Text("2. Clustering").set\_color(WHITE)
t3 \= Text("3. Regression").set\_color(WHITE)
t4 \= Text("4. Prediction").set\_color(WHITE)
x \= VGroup(t1, t2, t3, t4).arrange(direction\=DOWN, aligned\_edge\=LEFT).scale(0.7).next\_to(ORIGIN,DR)
x.set\_opacity(0.5)
x.submobjects\[1\].set\_opacity(1)
self.add(x)
class TextAlignment(Scene):
def construct(self):
title = Text("K-means clustering and Logistic Regression", color=WHITE)
title.scale(0.75)
self.add(title.to\_edge(UP))
t1 = Text("1. Measuring").set\_color(WHITE)
t2 = Text("2. Clustering").set\_color(WHITE)
t3 = Text("3. Regression").set\_color(WHITE)
t4 = Text("4. Prediction").set\_color(WHITE)
x = VGroup(t1, t2, t3, t4).arrange(direction=DOWN, aligned\_edge=LEFT).scale(0.7).next\_to(ORIGIN,DR)
x.set\_opacity(0.5)
x.submobjects\[1\].set\_opacity(1)
self.add(x)
Classes
| | |
| --- | --- |
| [`MarkupText`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.MarkupText.html#manim.mobject.text.text_mobject.MarkupText "manim.mobject.text.text_mobject.MarkupText") | Display (non-LaTeX) text rendered using [Pango](https://pango.org/)
. |
| [`Paragraph`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Paragraph.html#manim.mobject.text.text_mobject.Paragraph "manim.mobject.text.text_mobject.Paragraph") | Display a paragraph of text. |
| [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text") | Display (non-LaTeX) text rendered using [Pango](https://pango.org/)
. |
Functions
register\_font(_font\_file_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#register_font)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#manim.mobject.text.text_mobject.register_font "Link to this definition")
Temporarily add a font file to Pango’s search path.
This searches for the font\_file at various places. The order it searches it described below.
1. Absolute path.
2. In `assets/fonts` folder.
3. In `font/` folder.
4. In the same directory.
Parameters:
**font\_file** (_str_ _|_ _Path_) – The font file to add.
Return type:
_Iterator_\[None\]
Examples
Use `with register_font(...)` to add a font file to search path.
with register\_font("path/to/font\_file.ttf"):
a \= Text("Hello", font\="Custom Font Name")
Raises:
* **FileNotFoundError:** – If the font doesn’t exists.
* **AttributeError:** – If this method is used on macOS.
* **.. important ::** – This method is available for macOS for `ManimPango>=v0.2.3`. Using this method with previous releases will raise an `AttributeError` on macOS.
Parameters:
**font\_file** (_str_ _|_ _Path_)
Return type:
_Iterator_\[None\]
remove\_invisible\_chars(_mobject_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#remove_invisible_chars)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.html#manim.mobject.text.text_mobject.remove_invisible_chars "Link to this definition")
Function to remove unwanted invisible characters from some mobjects.
Parameters:
**mobject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – Any SVGMobject from which we want to remove unwanted invisible characters.
Returns:
The SVGMobject without unwanted invisible characters.
Return type:
[`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
---
# Dodecahedron - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.Dodecahedron.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.Dodecahedron.rst "Edit this page")
Dodecahedron[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#dodecahedron "Link to this heading")
========================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.Dodecahedron`
class Dodecahedron(_edge\_length\=1_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Dodecahedron)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#manim.mobject.three_d.polyhedra.Dodecahedron "Link to this definition")
Bases: [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
A dodecahedron, one of the five platonic solids. It has 12 faces, 30 edges and 20 vertices.
Parameters:
* **edge\_length** (_float_) – The length of an edge between any two vertices.
* **kwargs** (_Any_)
Examples
Example: DodecahedronScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#dodecahedronscene)

from manim import \*
class DodecahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
obj \= Dodecahedron()
self.add(obj)
class DodecahedronScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
obj = Dodecahedron()
self.add(obj)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_edge\_length\=1_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Dodecahedron.html#manim.mobject.three_d.polyhedra.Dodecahedron._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **edge\_length** (_float_)
* **kwargs** (_Any_)
---
# Polyhedron - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.Polyhedron.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.Polyhedron.rst "Edit this page")
Polyhedron[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#polyhedron "Link to this heading")
==================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.Polyhedron`
class Polyhedron(_vertex\_coords_, _faces\_list_, _faces\_config\={}_, _graph\_config\={}_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Polyhedron)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
An abstract polyhedra class.
In this implementation, polyhedra are defined with a list of vertex coordinates in space, and a list of faces. This implementation mirrors that of a standard polyhedral data format (OFF, object file format).
Parameters:
* **vertex\_coords** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
) – A list of coordinates of the corresponding vertices in the polyhedron. Each coordinate will correspond to a vertex. The vertices are indexed with the usual indexing of Python.
* **faces\_list** (_list__\[__list__\[__int__\]__\]_) – A list of faces. Each face is a sublist containing the indices of the vertices that form the corners of that face.
* **faces\_config** (_dict__\[__str__,_ _str_ _|_ _int_ _|_ _float_ _|_ _bool__\]_) – Configuration for the polygons representing the faces of the polyhedron.
* **graph\_config** (_dict__\[__str__,_ _Any__\]_) – Configuration for the graph containing the vertices and edges of the polyhedron.
Examples
To understand how to create a custom polyhedra, let’s use the example of a rather simple one - a square pyramid.
Example: SquarePyramidScene [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#squarepyramidscene)

from manim import \*
class SquarePyramidScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
vertex\_coords \= \[\
\[1, 1, 0\],\
\[1, \-1, 0\],\
\[\-1, \-1, 0\],\
\[\-1, 1, 0\],\
\[0, 0, 2\]\
\]
faces\_list \= \[\
\[0, 1, 4\],\
\[1, 2, 4\],\
\[2, 3, 4\],\
\[3, 0, 4\],\
\[0, 1, 2, 3\]\
\]
pyramid \= Polyhedron(vertex\_coords, faces\_list)
self.add(pyramid)
class SquarePyramidScene(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
vertex\_coords = \[\
\[1, 1, 0\],\
\[1, -1, 0\],\
\[-1, -1, 0\],\
\[-1, 1, 0\],\
\[0, 0, 2\]\
\]
faces\_list = \[\
\[0, 1, 4\],\
\[1, 2, 4\],\
\[2, 3, 4\],\
\[3, 0, 4\],\
\[0, 1, 2, 3\]\
\]
pyramid = Polyhedron(vertex\_coords, faces\_list)
self.add(pyramid)
In defining the polyhedron above, we first defined the coordinates of the vertices. These are the corners of the square base, given as the first four coordinates in the vertex list, and the apex, the last coordinate in the list.
Next, we define the faces of the polyhedron. The triangular surfaces of the pyramid are polygons with two adjacent vertices in the base and the vertex at the apex as corners. We thus define these surfaces in the first four elements of our face list. The last element defines the base of the pyramid.
The graph and faces of polyhedra can also be accessed and modified directly, after instantiation. They are stored in the graph and faces attributes respectively.
Example: PolyhedronSubMobjects [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#polyhedronsubmobjects)

from manim import \*
class PolyhedronSubMobjects(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
octahedron \= Octahedron(edge\_length \= 3)
octahedron.graph\[0\].set\_color(RED)
octahedron.faces\[2\].set\_color(YELLOW)
self.add(octahedron)
class PolyhedronSubMobjects(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
octahedron = Octahedron(edge\_length = 3)
octahedron.graph\[0\].set\_color(RED)
octahedron.faces\[2\].set\_color(YELLOW)
self.add(octahedron)
Methods
| | |
| --- | --- |
| [`create_faces`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.create_faces "manim.mobject.three_d.polyhedra.Polyhedron.create_faces") | Creates VGroup of faces from a list of face coordinates. |
| [`extract_face_coords`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.extract_face_coords "manim.mobject.three_d.polyhedra.Polyhedron.extract_face_coords") | Extracts the coordinates of the vertices in the graph. |
| [`get_edges`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.get_edges "manim.mobject.three_d.polyhedra.Polyhedron.get_edges") | Creates list of cyclic pairwise tuples. |
| `update_faces` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_vertex\_coords_, _faces\_list_, _faces\_config\={}_, _graph\_config\={}_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vertex\_coords** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **faces\_list** (_list__\[__list__\[__int__\]__\]_)
* **faces\_config** (_dict__\[__str__,_ _str_ _|_ _int_ _|_ _float_ _|_ _bool__\]_)
* **graph\_config** (_dict__\[__str__,_ _Any__\]_)
create\_faces(_face\_coords_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Polyhedron.create_faces)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.create_faces "Link to this definition")
Creates VGroup of faces from a list of face coordinates.
Parameters:
**face\_coords** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
Return type:
[_VGroup_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
extract\_face\_coords()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Polyhedron.extract_face_coords)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.extract_face_coords "Link to this definition")
Extracts the coordinates of the vertices in the graph. Used for updating faces.
Return type:
[_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
get\_edges(_faces\_list_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#Polyhedron.get_edges)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron.get_edges "Link to this definition")
Creates list of cyclic pairwise tuples.
Parameters:
**faces\_list** (_list__\[__list__\[__int__\]__\]_)
Return type:
list\[tuple\[int, int\]\]
---
# ConvexHull3D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.rst "Edit this page")
ConvexHull3D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#convexhull3d "Link to this heading")
========================================================================================================================================================
Qualified name: `manim.mobject.three\_d.polyhedra.ConvexHull3D`
class ConvexHull3D(_\*points_, _tolerance\=1e-05_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/polyhedra.html#ConvexHull3D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#manim.mobject.three_d.polyhedra.ConvexHull3D "Link to this definition")
Bases: [`Polyhedron`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.Polyhedron.html#manim.mobject.three_d.polyhedra.Polyhedron "manim.mobject.three_d.polyhedra.Polyhedron")
A convex hull for a set of points
Parameters:
* **points** ([_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
) – The points to consider.
* **tolerance** (_float_) – The tolerance used for quickhull.
* **kwargs** (_Any_) – Forwarded to the parent constructor.
Examples
Example: ConvexHull3DExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#convexhull3dexample)

from manim import \*
class ConvexHull3DExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
points \= \[\
\[ 1.93192757, 0.44134585, \-1.52407061\],\
\[\-0.93302521, 1.23206983, 0.64117067\],\
\[\-0.44350918, \-0.61043677, 0.21723705\],\
\[\-0.42640268, \-1.05260843, 1.61266094\],\
\[\-1.84449637, 0.91238739, \-1.85172623\],\
\[ 1.72068132, \-0.11880457, 0.51881751\],\
\[ 0.41904805, 0.44938012, \-1.86440686\],\
\[ 0.83864666, 1.66653337, 1.88960123\],\
\[ 0.22240514, \-0.80986286, 1.34249326\],\
\[\-1.29585759, 1.01516189, 0.46187522\],\
\[ 1.7776499, \-1.59550796, \-1.70240747\],\
\[ 0.80065226, \-0.12530398, 1.70063977\],\
\[ 1.28960948, \-1.44158255, 1.39938582\],\
\[\-0.93538943, 1.33617705, \-0.24852643\],\
\[\-1.54868271, 1.7444399, \-0.46170734\]\
\]
hull \= ConvexHull3D(
\*points,
faces\_config \= {"stroke\_opacity": 0},
graph\_config \= {
"vertex\_type": Dot3D,
"edge\_config": {
"stroke\_color": BLUE,
"stroke\_width": 2,
"stroke\_opacity": 0.05,
}
}
)
dots \= VGroup(\*\[Dot3D(point) for point in points\])
self.add(hull)
self.add(dots)
class ConvexHull3DExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
points = \[\
\[ 1.93192757, 0.44134585, -1.52407061\],\
\[-0.93302521, 1.23206983, 0.64117067\],\
\[-0.44350918, -0.61043677, 0.21723705\],\
\[-0.42640268, -1.05260843, 1.61266094\],\
\[-1.84449637, 0.91238739, -1.85172623\],\
\[ 1.72068132, -0.11880457, 0.51881751\],\
\[ 0.41904805, 0.44938012, -1.86440686\],\
\[ 0.83864666, 1.66653337, 1.88960123\],\
\[ 0.22240514, -0.80986286, 1.34249326\],\
\[-1.29585759, 1.01516189, 0.46187522\],\
\[ 1.7776499, -1.59550796, -1.70240747\],\
\[ 0.80065226, -0.12530398, 1.70063977\],\
\[ 1.28960948, -1.44158255, 1.39938582\],\
\[-0.93538943, 1.33617705, -0.24852643\],\
\[-1.54868271, 1.7444399, -0.46170734\]\
\]
hull = ConvexHull3D(
\*points,
faces\_config = {"stroke\_opacity": 0},
graph\_config = {
"vertex\_type": Dot3D,
"edge\_config": {
"stroke\_color": BLUE,
"stroke\_width": 2,
"stroke\_opacity": 0.05,
}
}
)
dots = VGroup(\*\[Dot3D(point) for point in points\])
self.add(hull)
self.add(dots)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_\*points_, _tolerance\=1e-05_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.polyhedra.ConvexHull3D.html#manim.mobject.three_d.polyhedra.ConvexHull3D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **points** ([_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
)
* **tolerance** (_float_)
* **kwargs** (_Any_)
---
# three_d_utils - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_d_utils.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_d_utils.rst "Edit this page")
three\_d\_utils[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#module-manim.mobject.three_d.three_d_utils "Link to this heading")
================================================================================================================================================================================
Utility functions for three-dimensional mobjects.
Functions
get\_3d\_vmob\_end\_corner(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_end_corner)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_end_corner "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
[Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_3d\_vmob\_end\_corner\_index(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_end_corner_index)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_end_corner_index "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
int
get\_3d\_vmob\_end\_corner\_unit\_normal(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_end_corner_unit_normal)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_end_corner_unit_normal "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
[Vector3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
get\_3d\_vmob\_gradient\_start\_and\_end\_points(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_gradient_start_and_end_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_gradient_start_and_end_points "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
tuple\[[Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")\
, [Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")\
\]
get\_3d\_vmob\_start\_corner(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_start_corner)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_start_corner "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
[Point3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_3d\_vmob\_start\_corner\_index(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_start_corner_index)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_start_corner_index "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
Literal\[0\]
get\_3d\_vmob\_start\_corner\_unit\_normal(_vmob_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_start_corner_unit_normal)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_start_corner_unit_normal "Link to this definition")
Parameters:
**vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
[Vector3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
get\_3d\_vmob\_unit\_normal(_vmob_, _point\_index_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_d_utils.html#get_3d_vmob_unit_normal)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_d_utils.html#manim.mobject.three_d.three_d_utils.get_3d_vmob_unit_normal "Link to this definition")
Parameters:
* **vmob** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **point\_index** (_int_)
Return type:
[Vector3D](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3D "manim.typing.Vector3D")
---
# Dot3D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Dot3D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Dot3D.rst "Edit this page")
Dot3D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#dot3d "Link to this heading")
==========================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Dot3D`
class Dot3D(_point\=array(\[0., 0., 0.\])_, _radius\=0.08_, _color\=ManimColor('#FFFFFF')_, _resolution\=(8, 8)_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Dot3D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "Link to this definition")
Bases: [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
A spherical dot.
Parameters:
* **point** ([_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
) – The location of the dot.
* **radius** (_float_) – The radius of the dot.
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color of the [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D")
.
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_ _|_ _None_) – The number of samples taken of the [`Dot3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D "manim.mobject.three_d.three_dimensions.Dot3D")
. A tuple can be used to define different resolutions for `u` and `v` respectively.
* **kwargs** (_Any_)
Examples
Example: Dot3DExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#dot3dexample)

from manim import \*
class Dot3DExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75\*DEGREES, theta\=-45\*DEGREES)
axes \= ThreeDAxes()
dot\_1 \= Dot3D(point\=axes.coords\_to\_point(0, 0, 1), color\=RED)
dot\_2 \= Dot3D(point\=axes.coords\_to\_point(2, 0, 0), radius\=0.1, color\=BLUE)
dot\_3 \= Dot3D(point\=\[0, 0, 0\], radius\=0.1, color\=ORANGE)
self.add(axes, dot\_1, dot\_2,dot\_3)
class Dot3DExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75\*DEGREES, theta=-45\*DEGREES)
axes = ThreeDAxes()
dot\_1 = Dot3D(point=axes.coords\_to\_point(0, 0, 1), color=RED)
dot\_2 = Dot3D(point=axes.coords\_to\_point(2, 0, 0), radius=0.1, color=BLUE)
dot\_3 = Dot3D(point=\[0, 0, 0\], radius=0.1, color=ORANGE)
self.add(axes, dot\_1, dot\_2,dot\_3)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_point\=array(\[0., 0., 0.\])_, _radius\=0.08_, _color\=ManimColor('#FFFFFF')_, _resolution\=(8, 8)_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Dot3D.html#manim.mobject.three_d.three_dimensions.Dot3D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **point** ([_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
)
* **radius** (_float_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# Arrow3D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Arrow3D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Arrow3D.rst "Edit this page")
Arrow3D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#arrow3d "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Arrow3D`
class Arrow3D(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _thickness\=0.02_, _height\=0.3_, _base\_radius\=0.08_, _color\=ManimColor('#FFFFFF')_, _resolution\=24_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Arrow3D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D "Link to this definition")
Bases: [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
An arrow made out of a cylindrical line and a conical tip.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The start position of the arrow.
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The end position of the arrow.
* **thickness** (_float_) – The thickness of the arrow.
* **height** (_float_) – The height of the conical tip.
* **base\_radius** (_float_) – The base radius of the conical tip.
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color of the arrow.
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_) – The resolution of the arrow line.
* **kwargs** (_Any_)
Examples
Example: ExampleArrow3D [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#examplearrow3d)

from manim import \*
class ExampleArrow3D(ThreeDScene):
def construct(self):
axes \= ThreeDAxes()
arrow \= Arrow3D(
start\=np.array(\[0, 0, 0\]),
end\=np.array(\[2, 2, 2\]),
resolution\=8
)
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
self.add(axes, arrow)
class ExampleArrow3D(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
arrow = Arrow3D(
start=np.array(\[0, 0, 0\]),
end=np.array(\[2, 2, 2\]),
resolution=8
)
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
self.add(axes, arrow)
Methods
| | |
| --- | --- |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D.get_end "manim.mobject.three_d.three_dimensions.Arrow3D.get_end") | Returns the ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _thickness\=0.02_, _height\=0.3_, _base\_radius\=0.08_, _color\=ManimColor('#FFFFFF')_, _resolution\=24_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **thickness** (_float_)
* **height** (_float_)
* **base\_radius** (_float_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_)
* **kwargs** (_Any_)
Return type:
None
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Arrow3D.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Arrow3D.html#manim.mobject.three_d.three_dimensions.Arrow3D.get_end "Link to this definition")
Returns the ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Returns:
**end** – Ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Return type:
`numpy.array`
---
# ThreeDVMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.rst "Edit this page")
ThreeDVMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#threedvmobject "Link to this heading")
=====================================================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.ThreeDVMobject`
class ThreeDVMobject(_shade\_in\_3d\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#ThreeDVMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#manim.mobject.three_d.three_dimensions.ThreeDVMobject "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
| `u_index` | |
| `v_index` | |
| `u1` | |
| `u2` | |
| `v1` | |
| `v2` | |
Parameters:
* **shade\_in\_3d** (_bool_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_shade\_in\_3d\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.ThreeDVMobject.html#manim.mobject.three_d.three_dimensions.ThreeDVMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **shade\_in\_3d** (_bool_)
* **kwargs** (_Any_)
---
# Cube - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cube.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cube.rst "Edit this page")
Cube[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#cube "Link to this heading")
=======================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Cube`
class Cube(_side\_length\=2_, _fill\_opacity\=0.75_, _fill\_color\=ManimColor('#58C4DD')_, _stroke\_width\=0_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cube)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
A three-dimensional cube.
Parameters:
* **side\_length** (_float_) – Length of each side of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
.
* **fill\_opacity** (_float_) – The opacity of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
, from 0 being fully transparent to 1 being fully opaque. Defaults to 0.75.
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
.
* **stroke\_width** (_float_) – The width of the stroke surrounding each face of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
.
* **kwargs** (_Any_)
Examples
Example: CubeExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#cubeexample)

from manim import \*
class CubeExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=75\*DEGREES, theta\=-45\*DEGREES)
axes \= ThreeDAxes()
cube \= Cube(side\_length\=3, fill\_opacity\=0.7, fill\_color\=BLUE)
self.add(cube)
class CubeExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=75\*DEGREES, theta=-45\*DEGREES)
axes = ThreeDAxes()
cube = Cube(side\_length=3, fill\_opacity=0.7, fill\_color=BLUE)
self.add(cube)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube.generate_points "manim.mobject.three_d.three_dimensions.Cube.generate_points") | Creates the sides of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
. |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_side\_length\=2_, _fill\_opacity\=0.75_, _fill\_color\=ManimColor('#58C4DD')_, _stroke\_width\=0_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **side\_length** (_float_)
* **fill\_opacity** (_float_)
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **stroke\_width** (_float_)
* **kwargs** (_Any_)
Return type:
None
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cube.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube.generate_points "Link to this definition")
Creates the sides of the [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
.
Return type:
None
---
# Prism - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Prism.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Prism.rst "Edit this page")
Prism[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#prism "Link to this heading")
==========================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Prism`
class Prism(_dimensions\=\[3, 2, 1\]_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Prism)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "Link to this definition")
Bases: [`Cube`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cube.html#manim.mobject.three_d.three_dimensions.Cube "manim.mobject.three_d.three_dimensions.Cube")
A right rectangular prism (or rectangular cuboid). Defined by the length of each side in `[x, y, z]` format.
Parameters:
* **dimensions** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – Dimensions of the [`Prism`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "manim.mobject.three_d.three_dimensions.Prism")
in `[x, y, z]` format.
* **kwargs** (_Any_)
Examples
Example: ExamplePrism [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#exampleprism)

from manim import \*
class ExamplePrism(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=60 \* DEGREES, theta\=150 \* DEGREES)
prismSmall \= Prism(dimensions\=\[1, 2, 3\]).rotate(PI / 2)
prismLarge \= Prism(dimensions\=\[1.5, 3, 4.5\]).move\_to(\[2, 0, 0\])
self.add(prismSmall, prismLarge)
class ExamplePrism(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=60 \* DEGREES, theta=150 \* DEGREES)
prismSmall = Prism(dimensions=\[1, 2, 3\]).rotate(PI / 2)
prismLarge = Prism(dimensions=\[1.5, 3, 4.5\]).move\_to(\[2, 0, 0\])
self.add(prismSmall, prismLarge)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism.generate_points "manim.mobject.three_d.three_dimensions.Prism.generate_points") | Creates the sides of the [`Prism`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "manim.mobject.three_d.three_dimensions.Prism")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_dimensions\=\[3, 2, 1\]_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **dimensions** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **kwargs** (_Any_)
Return type:
None
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Prism.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism.generate_points "Link to this definition")
Creates the sides of the [`Prism`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Prism.html#manim.mobject.three_d.three_dimensions.Prism "manim.mobject.three_d.three_dimensions.Prism")
.
Return type:
None
---
# Cylinder - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cylinder.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cylinder.rst "Edit this page")
Cylinder[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#cylinder "Link to this heading")
===================================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Cylinder`
class Cylinder(_radius\=1_, _height\=2_, _direction\=array(\[0., 0., 1.\])_, _v\_range\=(0, 6.283185307179586)_, _show\_ends\=True_, _resolution\=(24, 24)_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cylinder)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "Link to this definition")
Bases: [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
A cylinder, defined by its height, radius and direction,
Parameters:
* **radius** (_float_) – The radius of the cylinder.
* **height** (_float_) – The height of the cylinder.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the central axis of the cylinder.
* **v\_range** (_tuple__\[__float__,_ _float__\]_) – The height along the height axis (given by direction) to start and end on.
* **show\_ends** (_bool_) – Whether to show the end caps or not.
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_) – The number of samples taken of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
. A tuple can be used to define different resolutions for `u` and `v` respectively.
* **kwargs** (_Any_)
Examples
Example: ExampleCylinder [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#examplecylinder)

from manim import \*
class ExampleCylinder(ThreeDScene):
def construct(self):
axes \= ThreeDAxes()
cylinder \= Cylinder(radius\=2, height\=3)
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
self.add(axes, cylinder)
class ExampleCylinder(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
cylinder = Cylinder(radius=2, height=3)
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
self.add(axes, cylinder)
Methods
| | |
| --- | --- |
| [`add_bases`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.add_bases "manim.mobject.three_d.three_dimensions.Cylinder.add_bases") | Adds the end caps of the cylinder. |
| [`func`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.func "manim.mobject.three_d.three_dimensions.Cylinder.func") | Converts from cylindrical coordinates to cartesian. |
| [`get_direction`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.get_direction "manim.mobject.three_d.three_dimensions.Cylinder.get_direction") | Returns the direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
. |
| [`set_direction`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.set_direction "manim.mobject.three_d.three_dimensions.Cylinder.set_direction") | Sets the direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_radius\=1_, _height\=2_, _direction\=array(\[0., 0., 1.\])_, _v\_range\=(0, 6.283185307179586)_, _show\_ends\=True_, _resolution\=(24, 24)_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **radius** (_float_)
* **height** (_float_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **v\_range** (_tuple__\[__float__,_ _float__\]_)
* **show\_ends** (_bool_)
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_)
* **kwargs** (_Any_)
Return type:
None
add\_bases()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cylinder.add_bases)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.add_bases "Link to this definition")
Adds the end caps of the cylinder.
Return type:
None
func(_u_, _v_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cylinder.func)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.func "Link to this definition")
Converts from cylindrical coordinates to cartesian.
Parameters:
* **u** (_float_) – The height.
* **v** (_float_) – The azimuthal angle.
Returns:
Points defining the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
.
Return type:
`numpy.ndarray`
get\_direction()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cylinder.get_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.get_direction "Link to this definition")
Returns the direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
.
Returns:
**direction** – The direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
.
Return type:
`numpy.array`
set\_direction(_direction_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cylinder.set_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder.set_direction "Link to this definition")
Sets the direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
.
Parameters:
**direction** (`numpy.array`) – The direction of the central axis of the [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
.
Return type:
None
---
# ImageMobjectFromCamera - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.rst "Edit this page")
ImageMobjectFromCamera[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#imagemobjectfromcamera "Link to this heading")
========================================================================================================================================================================================
Qualified name: `manim.mobject.types.image\_mobject.ImageMobjectFromCamera`
class ImageMobjectFromCamera(_camera_, _default\_display\_frame\_config\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobjectFromCamera)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#manim.mobject.types.image_mobject.ImageMobjectFromCamera "Link to this definition")
Bases: [`AbstractImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject "manim.mobject.types.image_mobject.AbstractImageMobject")
Methods
| | |
| --- | --- |
| `add_display_frame` | |
| `get_pixel_array` | |
| `interpolate_color` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **camera** ([_MovingCamera_](https://docs.manim.community/en/stable/reference/manim.camera.moving_camera.MovingCamera.html#manim.camera.moving_camera.MovingCamera "manim.camera.moving_camera.MovingCamera")
)
* **default\_display\_frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_camera_, _default\_display\_frame\_config\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#manim.mobject.types.image_mobject.ImageMobjectFromCamera._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **camera** ([_MovingCamera_](https://docs.manim.community/en/stable/reference/manim.camera.moving_camera.MovingCamera.html#manim.camera.moving_camera.MovingCamera "manim.camera.moving_camera.MovingCamera")
)
* **default\_display\_frame\_config** (_dict__\[__str__,_ _Any__\]_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
---
# Cone - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cone.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Cone.rst "Edit this page")
Cone[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#cone "Link to this heading")
=======================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Cone`
class Cone(_base\_radius\=1_, _height\=1_, _direction\=array(\[0., 0., 1.\])_, _show\_base\=False_, _v\_range\=(0, 6.283185307179586)_, _u\_min\=0_, _checkerboard\_colors\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "Link to this definition")
Bases: [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
A circular cone. Can be defined using 2 parameters: its height, and its base radius. The polar angle, theta, can be calculated using arctan(base\_radius / height) The spherical radius, r, is calculated using the pythagorean theorem.
Parameters:
* **base\_radius** (_float_) – The base radius from which the cone tapers.
* **height** (_float_) – The height measured from the plane formed by the base\_radius to the apex of the cone.
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the apex.
* **show\_base** (_bool_) – Whether to show the base plane or not.
* **v\_range** (_tuple__\[__float__,_ _float__\]_) – The azimuthal angle to start and end at.
* **u\_min** (_float_) – The radius at the apex.
* **checkerboard\_colors** (_list__\[_[_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")\
_\]_ _|_ _Literal__\[__False__\]_) – Show checkerboard grid texture on the cone.
* **kwargs** (_Any_)
Examples
Example: ExampleCone [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#examplecone)

from manim import \*
class ExampleCone(ThreeDScene):
def construct(self):
axes \= ThreeDAxes()
cone \= Cone(direction\=X\_AXIS+Y\_AXIS+2\*Z\_AXIS, resolution\=8)
self.set\_camera\_orientation(phi\=5\*PI/11, theta\=PI/9)
self.add(axes, cone)
class ExampleCone(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
cone = Cone(direction=X\_AXIS+Y\_AXIS+2\*Z\_AXIS, resolution=8)
self.set\_camera\_orientation(phi=5\*PI/11, theta=PI/9)
self.add(axes, cone)
Methods
| | |
| --- | --- |
| [`func`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.func "manim.mobject.three_d.three_dimensions.Cone.func") | Converts from spherical coordinates to cartesian. |
| [`get_direction`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_direction "manim.mobject.three_d.three_dimensions.Cone.get_direction") | Returns the current direction of the apex of the [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
. |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_end "manim.mobject.three_d.three_dimensions.Cone.get_end") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends. |
| [`get_start`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_start "manim.mobject.three_d.three_dimensions.Cone.get_start") | Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts. |
| [`set_direction`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.set_direction "manim.mobject.three_d.three_dimensions.Cone.set_direction") | Changes the direction of the apex of the [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_base\_radius\=1_, _height\=1_, _direction\=array(\[0., 0., 1.\])_, _show\_base\=False_, _v\_range\=(0, 6.283185307179586)_, _u\_min\=0_, _checkerboard\_colors\=False_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **base\_radius** (_float_)
* **height** (_float_)
* **direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
)
* **show\_base** (_bool_)
* **v\_range** (_tuple__\[__float__,_ _float__\]_)
* **u\_min** (_float_)
* **checkerboard\_colors** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _Literal__\[__False__\]_)
* **kwargs** (_Any_)
Return type:
None
func(_u_, _v_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone.func)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.func "Link to this definition")
Converts from spherical coordinates to cartesian.
Parameters:
* **u** (_float_) – The radius.
* **v** (_float_) – The azimuthal angle.
Returns:
Points defining the [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
.
Return type:
`numpy.array`
get\_direction()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone.get_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_direction "Link to this definition")
Returns the current direction of the apex of the [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
.
Returns:
**direction** – The direction of the apex.
Return type:
`numpy.array`
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_end "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
ends.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
get\_start()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone.get_start)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.get_start "Link to this definition")
Returns the point, where the stroke that surrounds the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
starts.
Return type:
[_Point3D_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3D "manim.typing.Point3D")
set\_direction(_direction_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Cone.set_direction)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone.set_direction "Link to this definition")
Changes the direction of the apex of the [`Cone`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cone.html#manim.mobject.three_d.three_dimensions.Cone "manim.mobject.three_d.three_dimensions.Cone")
.
Parameters:
**direction** ([_Vector3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Vector3DLike "manim.typing.Vector3DLike")
) – The direction of the apex.
Return type:
None
---
# point_cloud_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.rst "Edit this page")
point\_cloud\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.html#module-manim.mobject.types.point_cloud_mobject "Link to this heading")
==============================================================================================================================================================================================
Mobjects representing point clouds.
Classes
| | |
| --- | --- |
| [`Mobject1D`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#manim.mobject.types.point_cloud_mobject.Mobject1D "manim.mobject.types.point_cloud_mobject.Mobject1D") | |
| [`Mobject2D`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#manim.mobject.types.point_cloud_mobject.Mobject2D "manim.mobject.types.point_cloud_mobject.Mobject2D") | |
| [`PGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#manim.mobject.types.point_cloud_mobject.PGroup "manim.mobject.types.point_cloud_mobject.PGroup") | A group for several point mobjects. |
| [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject") | A disc made of a cloud of Dots |
| [`Point`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point "manim.mobject.types.point_cloud_mobject.Point") | A mobject representing a point. |
| [`PointCloudDot`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot "manim.mobject.types.point_cloud_mobject.PointCloudDot") | A disc made of a cloud of dots. |
---
# image_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.image_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.image_mobject.rst "Edit this page")
image\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.html#module-manim.mobject.types.image_mobject "Link to this heading")
===========================================================================================================================================================================
Mobjects representing raster images.
Classes
| | |
| --- | --- |
| [`AbstractImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject "manim.mobject.types.image_mobject.AbstractImageMobject") | Automatically filters out black pixels |
| [`ImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject "manim.mobject.types.image_mobject.ImageMobject") | Displays an Image from a numpy array or a file. |
| [`ImageMobjectFromCamera`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobjectFromCamera.html#manim.mobject.types.image_mobject.ImageMobjectFromCamera "manim.mobject.types.image_mobject.ImageMobjectFromCamera") | |
---
# types - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.rst "Edit this page")
types[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.html#module-manim.mobject.types "Link to this heading")
======================================================================================================================================
Specialized mobject base classes.
Modules[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.html#modules "Link to this heading")
---------------------------------------------------------------------------------------------------------------------
| | |
| --- | --- |
| [`image_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.html#module-manim.mobject.types.image_mobject "manim.mobject.types.image_mobject") | Mobjects representing raster images. |
| [`point_cloud_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.html#module-manim.mobject.types.point_cloud_mobject "manim.mobject.types.point_cloud_mobject") | Mobjects representing point clouds. |
| [`vectorized_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html#module-manim.mobject.types.vectorized_mobject "manim.mobject.types.vectorized_mobject") | Mobjects that use vector graphics. |
---
# Torus - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Torus.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Torus.rst "Edit this page")
Torus[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#torus "Link to this heading")
==========================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Torus`
class Torus(_major\_radius\=3_, _minor\_radius\=1_, _u\_range\=(0, 6.283185307179586)_, _v\_range\=(0, 6.283185307179586)_, _resolution\=None_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Torus)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "Link to this definition")
Bases: [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
A torus.
Parameters:
* **major\_radius** (_float_) – Distance from the center of the tube to the center of the torus.
* **minor\_radius** (_float_) – Radius of the tube.
* **u\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `u` variable: `(u_min, u_max)`.
* **v\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `v` variable: `(v_min, v_max)`.
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_ _|_ _None_) – The number of samples taken of the [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
. A tuple can be used to define different resolutions for `u` and `v` respectively.
* **kwargs** (_Any_)
Examples
Example: ExampleTorus [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#exampletorus)

from manim import \*
class ExampleTorus(ThreeDScene):
def construct(self):
axes \= ThreeDAxes()
torus \= Torus()
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
self.add(axes, torus)
class ExampleTorus(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
torus = Torus()
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
self.add(axes, torus)
Methods
| | |
| --- | --- |
| [`func`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus.func "manim.mobject.three_d.three_dimensions.Torus.func") | The z values defining the [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
being plotted. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_major\_radius\=3_, _minor\_radius\=1_, _u\_range\=(0, 6.283185307179586)_, _v\_range\=(0, 6.283185307179586)_, _resolution\=None_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **major\_radius** (_float_)
* **minor\_radius** (_float_)
* **u\_range** (_tuple__\[__float__,_ _float__\]_)
* **v\_range** (_tuple__\[__float__,_ _float__\]_)
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_ _|_ _None_)
* **kwargs** (_Any_)
Return type:
None
func(_u_, _v_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Torus.func)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus.func "Link to this definition")
The z values defining the [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
being plotted.
Returns:
The z values defining the [`Torus`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Torus.html#manim.mobject.three_d.three_dimensions.Torus "manim.mobject.three_d.three_dimensions.Torus")
.
Return type:
`numpy.ndarray`
Parameters:
* **u** (_float_)
* **v** (_float_)
---
# Sphere - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Sphere.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Sphere.rst "Edit this page")
Sphere[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#sphere "Link to this heading")
=============================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Sphere`
class Sphere(_center\=array(\[0., 0., 0.\])_, _radius\=1_, _resolution\=None_, _u\_range\=(0, 6.283185307179586)_, _v\_range\=(0, 3.141592653589793)_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Sphere)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "Link to this definition")
Bases: [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
A three-dimensional sphere.
Parameters:
* **center** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – Center of the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
.
* **radius** (_float_) – The radius of the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
.
* **resolution** (_int_ _|_ _Sequence__\[__int__\]_ _|_ _None_) – The number of samples taken of the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
. A tuple can be used to define different resolutions for `u` and `v` respectively.
* **u\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `u` variable: `(u_min, u_max)`.
* **v\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `v` variable: `(v_min, v_max)`.
* **kwargs** (_Any_)
Examples
Example: ExampleSphere [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#examplesphere)

from manim import \*
class ExampleSphere(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi\=PI / 6, theta\=PI / 6)
sphere1 \= Sphere(
center\=(3, 0, 0),
radius\=1,
resolution\=(20, 20),
u\_range\=\[0.001, PI \- 0.001\],
v\_range\=\[0, TAU\]
)
sphere1.set\_color(RED)
self.add(sphere1)
sphere2 \= Sphere(center\=(\-1, \-3, 0), radius\=2, resolution\=(18, 18))
sphere2.set\_color(GREEN)
self.add(sphere2)
sphere3 \= Sphere(center\=(\-1, 2, 0), radius\=2, resolution\=(16, 16))
sphere3.set\_color(BLUE)
self.add(sphere3)
class ExampleSphere(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(phi=PI / 6, theta=PI / 6)
sphere1 = Sphere(
center=(3, 0, 0),
radius=1,
resolution=(20, 20),
u\_range=\[0.001, PI - 0.001\],
v\_range=\[0, TAU\]
)
sphere1.set\_color(RED)
self.add(sphere1)
sphere2 = Sphere(center=(-1, -3, 0), radius=2, resolution=(18, 18))
sphere2.set\_color(GREEN)
self.add(sphere2)
sphere3 = Sphere(center=(-1, 2, 0), radius=2, resolution=(16, 16))
sphere3.set\_color(BLUE)
self.add(sphere3)
Methods
| | |
| --- | --- |
| [`func`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere.func "manim.mobject.three_d.three_dimensions.Sphere.func") | The z values defining the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
being plotted. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_center\=array(\[0., 0., 0.\])_, _radius\=1_, _resolution\=None_, _u\_range\=(0, 6.283185307179586)_, _v\_range\=(0, 3.141592653589793)_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **center** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **radius** (_float_)
* **resolution** (_int_ _|_ _Sequence__\[__int__\]_ _|_ _None_)
* **u\_range** (_tuple__\[__float__,_ _float__\]_)
* **v\_range** (_tuple__\[__float__,_ _float__\]_)
* **kwargs** (_Any_)
Return type:
None
func(_u_, _v_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Sphere.func)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere.func "Link to this definition")
The z values defining the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
being plotted.
Returns:
The z values defining the [`Sphere`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Sphere.html#manim.mobject.three_d.three_dimensions.Sphere "manim.mobject.three_d.three_dimensions.Sphere")
.
Return type:
`Point3D`
Parameters:
* **u** (_float_)
* **v** (_float_)
---
# Line3D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Line3D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Line3D.rst "Edit this page")
Line3D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#line3d "Link to this heading")
=============================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Line3D`
class Line3D(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _thickness\=0.02_, _color\=None_, _resolution\=24_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "Link to this definition")
Bases: [`Cylinder`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Cylinder.html#manim.mobject.three_d.three_dimensions.Cylinder "manim.mobject.three_d.three_dimensions.Cylinder")
A cylindrical line, for use in ThreeDScene.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The start point of the line.
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The end point of the line.
* **thickness** (_float_) – The thickness of the line.
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
) – The color of the line.
* **resolution** (_tuple__\[__int__,_ _int__\]_) – The resolution of the line. By default this value is the number of points the line will sampled at. If you want the line to also come out checkered, use a tuple. For example, for a line made of 24 points with 4 checker points on each cylinder, pass the tuple (4, 24).
* **kwargs** (_Any_)
Examples
Example: ExampleLine3D [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#exampleline3d)

from manim import \*
class ExampleLine3D(ThreeDScene):
def construct(self):
axes \= ThreeDAxes()
line \= Line3D(start\=np.array(\[0, 0, 0\]), end\=np.array(\[2, 2, 2\]))
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=30 \* DEGREES)
self.add(axes, line)
class ExampleLine3D(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
line = Line3D(start=np.array(\[0, 0, 0\]), end=np.array(\[2, 2, 2\]))
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=30 \* DEGREES)
self.add(axes, line)
Methods
| | |
| --- | --- |
| [`get_end`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.get_end "manim.mobject.three_d.three_dimensions.Line3D.get_end") | Returns the ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
. |
| [`get_start`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.get_start "manim.mobject.three_d.three_dimensions.Line3D.get_start") | Returns the starting point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
. |
| [`parallel_to`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.parallel_to "manim.mobject.three_d.three_dimensions.Line3D.parallel_to") | Returns a line parallel to another line going through a given point. |
| [`perpendicular_to`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.perpendicular_to "manim.mobject.three_d.three_dimensions.Line3D.perpendicular_to") | Returns a line perpendicular to another line going through a given point. |
| [`pointify`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.pointify "manim.mobject.three_d.three_dimensions.Line3D.pointify") | Gets a point representing the center of the [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
. |
| [`set_start_and_end_attrs`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.set_start_and_end_attrs "manim.mobject.three_d.three_dimensions.Line3D.set_start_and_end_attrs") | Sets the start and end points of the line. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_start\=array(\[-1., 0., 0.\])_, _end\=array(\[1., 0., 0.\])_, _thickness\=0.02_, _color\=None_, _resolution\=24_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **thickness** (_float_)
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **resolution** (_int_ _|_ _tuple__\[__int__,_ _int__\]_)
* **kwargs** (_Any_)
get\_end()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.get_end)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.get_end "Link to this definition")
Returns the ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Returns:
**end** – Ending point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Return type:
`numpy.array`
get\_start()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.get_start)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.get_start "Link to this definition")
Returns the starting point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Returns:
**start** – Starting point of the [`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
.
Return type:
`numpy.array`
classmethod parallel\_to(_line_, _point\=array(\[0., 0., 0.\])_, _length\=5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.parallel_to)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.parallel_to "Link to this definition")
Returns a line parallel to another line going through a given point.
Parameters:
* **line** ([_Line3D_](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
) – The line to be parallel to.
* **point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point to pass through.
* **length** (_float_) – Length of the parallel line.
* **kwargs** (_Any_) – Additional parameters to be passed to the class.
Returns:
Line parallel to `line`.
Return type:
[`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
Examples
Example: ParallelLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#parallellineexample)

from manim import \*
class ParallelLineExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(PI / 3, \-PI / 4)
ax \= ThreeDAxes((\-5, 5), (\-5, 5), (\-5, 5), 10, 10, 10)
line1 \= Line3D(RIGHT \* 2, UP + OUT, color\=RED)
line2 \= Line3D.parallel\_to(line1, color\=YELLOW)
self.add(ax, line1, line2)
class ParallelLineExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(PI / 3, -PI / 4)
ax = ThreeDAxes((-5, 5), (-5, 5), (-5, 5), 10, 10, 10)
line1 = Line3D(RIGHT \* 2, UP + OUT, color=RED)
line2 = Line3D.parallel\_to(line1, color=YELLOW)
self.add(ax, line1, line2)
classmethod perpendicular\_to(_line_, _point\=array(\[0., 0., 0.\])_, _length\=5_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.perpendicular_to)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.perpendicular_to "Link to this definition")
Returns a line perpendicular to another line going through a given point.
Parameters:
* **line** ([_Line3D_](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
) – The line to be perpendicular to.
* **point** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – The point to pass through.
* **length** (_float_) – Length of the perpendicular line.
* **kwargs** (_Any_) – Additional parameters to be passed to the class.
Returns:
Line perpendicular to `line`.
Return type:
[`Line3D`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D "manim.mobject.three_d.three_dimensions.Line3D")
Examples
Example: PerpLineExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#perplineexample)

from manim import \*
class PerpLineExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(PI / 3, \-PI / 4)
ax \= ThreeDAxes((\-5, 5), (\-5, 5), (\-5, 5), 10, 10, 10)
line1 \= Line3D(RIGHT \* 2, UP + OUT, color\=RED)
line2 \= Line3D.perpendicular\_to(line1, color\=BLUE)
self.add(ax, line1, line2)
class PerpLineExample(ThreeDScene):
def construct(self):
self.set\_camera\_orientation(PI / 3, -PI / 4)
ax = ThreeDAxes((-5, 5), (-5, 5), (-5, 5), 10, 10, 10)
line1 = Line3D(RIGHT \* 2, UP + OUT, color=RED)
line2 = Line3D.perpendicular\_to(line1, color=BLUE)
self.add(ax, line1, line2)
pointify(_mob\_or\_point_, _direction\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.pointify)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.pointify "Link to this definition")
Gets a point representing the center of the [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
.
Parameters:
* **mob\_or\_point** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
_|_ _TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_) – [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
or point whose center should be returned.
* **direction** (_TypeAliasForwardRef__(__'~manim.typing.Vector3DLike'__)_ _|_ _None_) – If an edge of a [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
should be returned, the direction of the edge.
Returns:
Center of the [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
or point, or edge if direction is given.
Return type:
`numpy.array`
set\_start\_and\_end\_attrs(_start_, _end_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Line3D.set_start_and_end_attrs)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Line3D.html#manim.mobject.three_d.three_dimensions.Line3D.set_start_and_end_attrs "Link to this definition")
Sets the start and end points of the line.
If either `start` or `end` are [`Mobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
, this gives their centers.
Parameters:
* **start** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – Starting point or `Mobject`.
* **end** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
) – Ending point or `Mobject`.
* **kwargs** (_Any_)
Return type:
None
---
# Mobject1D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.rst "Edit this page")
Mobject1D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#mobject1d "Link to this heading")
=======================================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.Mobject1D`
class Mobject1D(_density\=10_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#Mobject1D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#manim.mobject.types.point_cloud_mobject.Mobject1D "Link to this definition")
Bases: [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
Methods
| | |
| --- | --- |
| `add_line` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **density** (_int_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_density\=10_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#manim.mobject.types.point_cloud_mobject.Mobject1D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **density** (_int_)
* **kwargs** (_Any_)
Return type:
None
---
# PGroup - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PGroup.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PGroup.rst "Edit this page")
PGroup[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#pgroup "Link to this heading")
==============================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.PGroup`
class PGroup(_\*pmobs_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PGroup)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#manim.mobject.types.point_cloud_mobject.PGroup "Link to this definition")
Bases: [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
A group for several point mobjects.
Examples
Example: PgroupExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#pgroupexample)

from manim import \*
class PgroupExample(Scene):
def construct(self):
p1 \= PointCloudDot(radius\=1, density\=20, color\=BLUE)
p1.move\_to(4.5 \* LEFT)
p2 \= PointCloudDot()
p3 \= PointCloudDot(radius\=1.5, stroke\_width\=2.5, color\=PINK)
p3.move\_to(4.5 \* RIGHT)
pList \= PGroup(p1, p2, p3)
self.add(pList)
class PgroupExample(Scene):
def construct(self):
p1 = PointCloudDot(radius=1, density=20, color=BLUE)
p1.move\_to(4.5 \* LEFT)
p2 = PointCloudDot()
p3 = PointCloudDot(radius=1.5, stroke\_width=2.5, color=PINK)
p3.move\_to(4.5 \* RIGHT)
pList = PGroup(p1, p2, p3)
self.add(pList)
Methods
| | |
| --- | --- |
| `fade_to` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **pmobs** (_Any_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*pmobs_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PGroup.html#manim.mobject.types.point_cloud_mobject.PGroup._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **pmobs** (_Any_)
* **kwargs** (_Any_)
Return type:
None
---
# Mobject2D - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.rst "Edit this page")
Mobject2D[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#mobject2d "Link to this heading")
=======================================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.Mobject2D`
class Mobject2D(_density\=25_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#Mobject2D)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#manim.mobject.types.point_cloud_mobject.Mobject2D "Link to this definition")
Bases: [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **density** (_int_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_density\=25_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject2D.html#manim.mobject.types.point_cloud_mobject.Mobject2D._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **density** (_int_)
* **kwargs** (_Any_)
Return type:
None
---
# AbstractImageMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.image_mobject.AbstractImageMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.image_mobject.AbstractImageMobject.rst "Edit this page")
AbstractImageMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#abstractimagemobject "Link to this heading")
==================================================================================================================================================================================
Qualified name: `manim.mobject.types.image\_mobject.AbstractImageMobject`
class AbstractImageMobject(_scale\_to\_resolution_, _pixel\_array\_dtype\='uint8'_, _resampling\_algorithm\=Resampling.BICUBIC_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#AbstractImageMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject "Link to this definition")
Bases: [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Automatically filters out black pixels
Parameters:
* **scale\_to\_resolution** (_int_) – At this resolution the image is placed pixel by pixel onto the screen, so it will look the sharpest and best. This is a custom parameter of ImageMobject so that rendering a scene with e.g. the `--quality low` or `--quality medium` flag for faster rendering won’t effect the position of the image on the screen.
* **pixel\_array\_dtype** (_str_)
* **resampling\_algorithm** (_Resampling_)
* **kwargs** (_Any_)
Methods
| | |
| --- | --- |
| `get_pixel_array` | |
| [`reset_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.reset_points "manim.mobject.types.image_mobject.AbstractImageMobject.reset_points") | Sets `points` to be the four image corners. |
| [`set_color`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.set_color "manim.mobject.types.image_mobject.AbstractImageMobject.set_color") | Condition is function which takes in one arguments, (x, y, z). |
| [`set_resampling_algorithm`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.set_resampling_algorithm "manim.mobject.types.image_mobject.AbstractImageMobject.set_resampling_algorithm") | Sets the interpolation method for upscaling the image. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
\_original\_\_init\_\_(_scale\_to\_resolution_, _pixel\_array\_dtype\='uint8'_, _resampling\_algorithm\=Resampling.BICUBIC_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **scale\_to\_resolution** (_int_)
* **pixel\_array\_dtype** (_str_)
* **resampling\_algorithm** (_Resampling_)
* **kwargs** (_Any_)
Return type:
None
reset\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#AbstractImageMobject.reset_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.reset_points "Link to this definition")
Sets `points` to be the four image corners.
Return type:
Self
set\_color(_color\=ManimColor('#F7D96F')_, _alpha\=None_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#AbstractImageMobject.set_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.set_color "Link to this definition")
Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings of color
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **alpha** (_Any_)
* **family** (_bool_)
Return type:
[_AbstractImageMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject "manim.mobject.types.image_mobject.AbstractImageMobject")
set\_resampling\_algorithm(_resampling\_algorithm_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#AbstractImageMobject.set_resampling_algorithm)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject.set_resampling_algorithm "Link to this definition")
Sets the interpolation method for upscaling the image. By default the image is interpolated using bicubic algorithm. This method lets you change it. Interpolation is done internally using Pillow, and the function besides the string constants describing the algorithm accepts the Pillow integer constants.
Parameters:
**resampling\_algorithm** (_int_) –
An integer constant described in the Pillow library, or one from the RESAMPLING\_ALGORITHMS global dictionary, under the following keys:
* ’bicubic’ or ‘cubic’
* ’nearest’ or ‘none’
* ’box’
* ’bilinear’ or ‘linear’
* ’hamming’
* ’lanczos’ or ‘antialias’
Return type:
Self
---
# vectorized_mobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.vectorized_mobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.vectorized_mobject.rst "Edit this page")
vectorized\_mobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.html#module-manim.mobject.types.vectorized_mobject "Link to this heading")
==========================================================================================================================================================================================
Mobjects that use vector graphics.
Classes
| | |
| --- | --- |
| [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects") | Convert a curve's elements to submobjects. |
| [`DashedVMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "manim.mobject.types.vectorized_mobject.DashedVMobject") | A [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
composed of dashes instead of lines. |
| [`VDict`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VDict.html#manim.mobject.types.vectorized_mobject.VDict "manim.mobject.types.vectorized_mobject.VDict") | A VGroup-like class, also offering submobject access by key, like a python dict |
| [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup") | A group of vectorized mobjects. |
| [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject") | A vectorized mobject. |
| [`VectorizedPoint`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint "manim.mobject.types.vectorized_mobject.VectorizedPoint") | |
---
# Point - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Point.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.Point.rst "Edit this page")
Point[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#point "Link to this heading")
===========================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.Point`
class Point(_location\=array(\[0., 0., 0.\])_, _color\=ManimColor('#000000')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#Point)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point "Link to this definition")
Bases: [`PMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")
A mobject representing a point.
Examples
Example: ExamplePoint [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#examplepoint)

from manim import \*
class ExamplePoint(Scene):
def construct(self):
colorList \= \[RED, GREEN, BLUE, YELLOW\]
for i in range(200):
point \= Point(location\=\[0.63 \* np.random.randint(\-4, 4), 0.37 \* np.random.randint(\-4, 4), 0\], color\=np.random.choice(colorList))
self.add(point)
for i in range(200):
point \= Point(location\=\[0.37 \* np.random.randint(\-4, 4), 0.63 \* np.random.randint(\-4, 4), 0\], color\=np.random.choice(colorList))
self.add(point)
self.add(point)
class ExamplePoint(Scene):
def construct(self):
colorList = \[RED, GREEN, BLUE, YELLOW\]
for i in range(200):
point = Point(location=\[0.63 \* np.random.randint(-4, 4), 0.37 \* np.random.randint(-4, 4), 0\], color=np.random.choice(colorList))
self.add(point)
for i in range(200):
point = Point(location=\[0.37 \* np.random.randint(-4, 4), 0.63 \* np.random.randint(-4, 4), 0\], color=np.random.choice(colorList))
self.add(point)
self.add(point)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point.generate_points "manim.mobject.types.point_cloud_mobject.Point.generate_points") | Initializes `points` and therefore the shape. |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **location** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_location\=array(\[0., 0., 0.\])_, _color\=ManimColor('#000000')_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **location** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **kwargs** (_Any_)
Return type:
None
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#Point.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
None
---
# Text - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.text.text_mobject.Text.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.text.text_mobject.Text.rst "Edit this page")
Text[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#text "Link to this heading")
================================================================================================================================
Qualified name: `manim.mobject.text.text\_mobject.Text`
class Text(_text_, _fill\_opacity\=1.0_, _stroke\_width\=0_, _\*_, _color\=ManimColor('#FFFFFF')_, _font\_size\=48_, _line\_spacing\=\-1_, _font\=''_, _slant\='NORMAL'_, _weight\='NORMAL'_, _t2c\=None_, _t2f\=None_, _t2g\=None_, _t2s\=None_, _t2w\=None_, _gradient\=None_, _tab\_width\=4_, _warn\_missing\_font\=True_, _height\=None_, _width\=None_, _should\_center\=True_, _disable\_ligatures\=False_, _use\_svg\_cache\=False_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "Link to this definition")
Bases: [`SVGMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.svg.svg_mobject.SVGMobject.html#manim.mobject.svg.svg_mobject.SVGMobject "manim.mobject.svg.svg_mobject.SVGMobject")
Display (non-LaTeX) text rendered using [Pango](https://pango.org/)
.
Text objects behave like a [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
\-like iterable of all characters in the given text. In particular, slicing is possible.
Parameters:
* **text** (_str_) – The text that needs to be created as a mobject.
* **font** (_str_) – The font family to be used to render the text. This is either a system font or one loaded with register\_font(). Note that font family names may be different across operating systems.
* **warn\_missing\_font** (_bool_) – If True (default), Manim will issue a warning if the font does not exist in the (case-sensitive) list of fonts returned from manimpango.list\_fonts().
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **font\_size** (_float_)
* **line\_spacing** (_float_)
* **slant** (_str_)
* **weight** (_str_)
* **t2c** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2f** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2g** (_dict__\[__str__,_ _Iterable__\[_[_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_\]__\]_ _|_ _None_)
* **t2s** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2w** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **gradient** (_Iterable__\[_[_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_\]_ _|_ _None_)
* **tab\_width** (_int_)
* **height** (_float_ _|_ _None_)
* **width** (_float_ _|_ _None_)
* **should\_center** (_bool_)
* **disable\_ligatures** (_bool_)
* **use\_svg\_cache** (_bool_)
* **kwargs** (_Any_)
Returns:
The mobject-like [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
.
Return type:
[`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
Examples
Example: Example1Text [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#example1text)

from manim import \*
class Example1Text(Scene):
def construct(self):
text \= Text('Hello world').scale(3)
self.add(text)
class Example1Text(Scene):
def construct(self):
text = Text('Hello world').scale(3)
self.add(text)
Example: TextColorExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#textcolorexample)

from manim import \*
class TextColorExample(Scene):
def construct(self):
text1 \= Text('Hello world', color\=BLUE).scale(3)
text2 \= Text('Hello world', gradient\=(BLUE, GREEN)).scale(3).next\_to(text1, DOWN)
self.add(text1, text2)
class TextColorExample(Scene):
def construct(self):
text1 = Text('Hello world', color=BLUE).scale(3)
text2 = Text('Hello world', gradient=(BLUE, GREEN)).scale(3).next\_to(text1, DOWN)
self.add(text1, text2)
Example: TextItalicAndBoldExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#textitalicandboldexample)

from manim import \*
class TextItalicAndBoldExample(Scene):
def construct(self):
text1 \= Text("Hello world", slant\=ITALIC)
text2 \= Text("Hello world", t2s\={'world':ITALIC})
text3 \= Text("Hello world", weight\=BOLD)
text4 \= Text("Hello world", t2w\={'world':BOLD})
text5 \= Text("Hello world", t2c\={'o':YELLOW}, disable\_ligatures\=True)
text6 \= Text(
"Visit us at docs.manim.community",
t2c\={"docs.manim.community": YELLOW},
disable\_ligatures\=True,
)
text6.scale(1.3).shift(DOWN)
self.add(text1, text2, text3, text4, text5 , text6)
Group(\*self.mobjects).arrange(DOWN, buff\=.8).set(height\=config.frame\_height\-LARGE\_BUFF)
class TextItalicAndBoldExample(Scene):
def construct(self):
text1 = Text("Hello world", slant=ITALIC)
text2 = Text("Hello world", t2s={'world':ITALIC})
text3 = Text("Hello world", weight=BOLD)
text4 = Text("Hello world", t2w={'world':BOLD})
text5 = Text("Hello world", t2c={'o':YELLOW}, disable\_ligatures=True)
text6 = Text(
"Visit us at docs.manim.community",
t2c={"docs.manim.community": YELLOW},
disable\_ligatures=True,
)
text6.scale(1.3).shift(DOWN)
self.add(text1, text2, text3, text4, text5 , text6)
Group(\*self.mobjects).arrange(DOWN, buff=.8).set(height=config.frame\_height-LARGE\_BUFF)
Example: TextMoreCustomization [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#textmorecustomization)

from manim import \*
class TextMoreCustomization(Scene):
def construct(self):
text1 \= Text(
'Google',
t2c\={'\[:1\]': '#3174f0', '\[1:2\]': '#e53125',
'\[2:3\]': '#fbb003', '\[3:4\]': '#3174f0',
'\[4:5\]': '#269a43', '\[5:\]': '#e53125'}, font\_size\=58).scale(3)
self.add(text1)
class TextMoreCustomization(Scene):
def construct(self):
text1 = Text(
'Google',
t2c={'\[:1\]': '#3174f0', '\[1:2\]': '#e53125',
'\[2:3\]': '#fbb003', '\[3:4\]': '#3174f0',
'\[4:5\]': '#269a43', '\[5:\]': '#e53125'}, font\_size=58).scale(3)
self.add(text1)
As [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
uses Pango to render text, rendering non-English characters is easily possible:
Example: MultipleFonts [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#multiplefonts)

from manim import \*
class MultipleFonts(Scene):
def construct(self):
morning \= Text("வணக்கம்", font\="sans-serif")
japanese \= Text(
"日本へようこそ", t2c\={"日本": BLUE}
) \# works same as \`\`Text\`\`.
mess \= Text("Multi-Language", weight\=BOLD)
russ \= Text("Здравствуйте मस नम म ", font\="sans-serif")
hin \= Text("नमस्ते", font\="sans-serif")
arb \= Text(
"صباح الخير \\n تشرفت بمقابلتك", font\="sans-serif"
) \# don't mix RTL and LTR languages nothing shows up then ;-)
chinese \= Text("臂猿「黛比」帶著孩子", font\="sans-serif")
self.add(morning, japanese, mess, russ, hin, arb, chinese)
for i,mobj in enumerate(self.mobjects):
mobj.shift(DOWN\*(i\-3))
class MultipleFonts(Scene):
def construct(self):
morning = Text("வணக்கம்", font="sans-serif")
japanese = Text(
"日本へようこそ", t2c={"日本": BLUE}
) # works same as \`\`Text\`\`.
mess = Text("Multi-Language", weight=BOLD)
russ = Text("Здравствуйте मस नम म ", font="sans-serif")
hin = Text("नमस्ते", font="sans-serif")
arb = Text(
"صباح الخير \\n تشرفت بمقابلتك", font="sans-serif"
) # don't mix RTL and LTR languages nothing shows up then ;-)
chinese = Text("臂猿「黛比」帶著孩子", font="sans-serif")
self.add(morning, japanese, mess, russ, hin, arb, chinese)
for i,mobj in enumerate(self.mobjects):
mobj.shift(DOWN\*(i-3))
Example: PangoRender [¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#pangorender)
from manim import \*
class PangoRender(Scene):
def construct(self):
morning \= Text("வணக்கம்", font\="sans-serif")
self.play(Write(morning))
self.wait(2)
class PangoRender(Scene):
def construct(self):
morning = Text("வணக்கம்", font="sans-serif")
self.play(Write(morning))
self.wait(2)
Tests
Check that the creation of [`Text`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text "manim.mobject.text.text_mobject.Text")
works:
\>>> Text('The horse does not eat cucumber salad.')
Text('The horse does not eat cucumber salad.')
Methods
| | |
| --- | --- |
| `font_list` | |
| [`init_colors`](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text.init_colors "manim.mobject.text.text_mobject.Text.init_colors") | Initializes the colors. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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 |
| `font_size` | |
| `hash_seed` | A unique hash representing the result of the generated mobject points. |
| `height` | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| `width` | The width of the mobject. |
\_find\_indexes(_word_, _text_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text._find_indexes)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text._find_indexes "Link to this definition")
Finds the indexes of `text` in `word`.
Parameters:
* **word** (_str_)
* **text** (_str_)
Return type:
list\[tuple\[int, int\]\]
\_original\_\_init\_\_(_text_, _fill\_opacity\=1.0_, _stroke\_width\=0_, _color\=None_, _font\_size\=48_, _line\_spacing\=\-1_, _font\=''_, _slant\='NORMAL'_, _weight\='NORMAL'_, _t2c\=None_, _t2f\=None_, _t2g\=None_, _t2s\=None_, _t2w\=None_, _gradient\=None_, _tab\_width\=4_, _warn\_missing\_font\=True_, _height\=None_, _width\=None_, _should\_center\=True_, _disable\_ligatures\=False_, _use\_svg\_cache\=False_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **text** (_str_)
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **color** (_TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)_ _|_ _None_)
* **font\_size** (_float_)
* **line\_spacing** (_float_)
* **font** (_str_)
* **slant** (_str_)
* **weight** (_str_)
* **t2c** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2f** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2g** (_dict__\[__str__,_ _Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]__\]_ _|_ _None_)
* **t2s** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **t2w** (_dict__\[__str__,_ _str__\]_ _|_ _None_)
* **gradient** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _None_)
* **tab\_width** (_int_)
* **warn\_missing\_font** (_bool_)
* **height** (_float_ _|_ _None_)
* **width** (_float_ _|_ _None_)
* **should\_center** (_bool_)
* **disable\_ligatures** (_bool_)
* **use\_svg\_cache** (_bool_)
* **kwargs** (_Any_)
\_text2hash(_color_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text._text2hash)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text._text2hash "Link to this definition")
Generates `sha256` hash for file name.
Parameters:
**color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
Return type:
str
\_text2settings(_color_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text._text2settings)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text._text2settings "Link to this definition")
Converts the texts and styles to a setting for parsing.
Parameters:
**color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
Return type:
list\[_TextSetting_\]
\_text2svg(_color_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text._text2svg)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text._text2svg "Link to this definition")
Convert the text to SVG using Pango.
Parameters:
**color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
Return type:
str
init\_colors(_propagate\_colors\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/text/text_mobject.html#Text.init_colors)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html#manim.mobject.text.text_mobject.Text.init_colors "Link to this definition")
Initializes the colors.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Parameters:
**propagate\_colors** (_bool_)
Return type:
Self
---
# ImageMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.image_mobject.ImageMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.image_mobject.ImageMobject.rst "Edit this page")
ImageMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#imagemobject "Link to this heading")
==========================================================================================================================================================
Qualified name: `manim.mobject.types.image\_mobject.ImageMobject`
class ImageMobject(_filename\_or\_array_, _scale\_to\_resolution\=1080_, _invert\=False_, _image\_mode\='RGBA'_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject "Link to this definition")
Bases: [`AbstractImageMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.AbstractImageMobject.html#manim.mobject.types.image_mobject.AbstractImageMobject "manim.mobject.types.image_mobject.AbstractImageMobject")
Displays an Image from a numpy array or a file.
Parameters:
* **scale\_to\_resolution** (_int_) – At this resolution the image is placed pixel by pixel onto the screen, so it will look the sharpest and best. This is a custom parameter of ImageMobject so that rendering a scene with e.g. the `--quality low` or `--quality medium` flag for faster rendering won’t effect the position of the image on the screen.
* **filename\_or\_array** ([_StrPath_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "manim.typing.StrPath")
_|_ _npt.NDArray_)
* **invert** (_bool_)
* **image\_mode** (_str_)
* **kwargs** (_Any_)
Example
Example: ImageFromArray [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#imagefromarray)

from manim import \*
class ImageFromArray(Scene):
def construct(self):
image \= ImageMobject(np.uint8(\[\[0, 100, 30, 200\],\
\[255, 0, 5, 33\]\]))
image.height \= 7
self.add(image)
class ImageFromArray(Scene):
def construct(self):
image = ImageMobject(np.uint8(\[\[0, 100, 30, 200\],\
\[255, 0, 5, 33\]\]))
image.height = 7
self.add(image)
Changing interpolation style:
Example: ImageInterpolationEx [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#imageinterpolationex)

from manim import \*
class ImageInterpolationEx(Scene):
def construct(self):
img \= ImageMobject(np.uint8(\[\[63, 0, 0, 0\],\
\[0, 127, 0, 0\],\
\[0, 0, 191, 0\],\
\[0, 0, 0, 255\]\
\]))
img.height \= 3
group \= Group()
algorithm\_texts \= \["nearest", "linear", "cubic"\]
for algorithm\_text in algorithm\_texts:
algorithm \= RESAMPLING\_ALGORITHMS\[algorithm\_text\]
img\_copy \= img.copy().set\_resampling\_algorithm(algorithm)
img\_copy.add(Text(algorithm\_text).scale(0.5).next\_to(img\_copy, UP))
group.add(img\_copy)
group.arrange()
self.add(group)
class ImageInterpolationEx(Scene):
def construct(self):
img = ImageMobject(np.uint8(\[\[63, 0, 0, 0\],\
\[0, 127, 0, 0\],\
\[0, 0, 191, 0\],\
\[0, 0, 0, 255\]\
\]))
img.height = 3
group = Group()
algorithm\_texts = \["nearest", "linear", "cubic"\]
for algorithm\_text in algorithm\_texts:
algorithm = RESAMPLING\_ALGORITHMS\[algorithm\_text\]
img\_copy = img.copy().set\_resampling\_algorithm(algorithm)
img\_copy.add(Text(algorithm\_text).scale(0.5).next\_to(img\_copy, UP))
group.add(img\_copy)
group.arrange()
self.add(group)
Methods
| | |
| --- | --- |
| [`fade`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.fade "manim.mobject.types.image_mobject.ImageMobject.fade") | Sets the image's opacity using a 1 - alpha relationship. |
| [`get_pixel_array`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.get_pixel_array "manim.mobject.types.image_mobject.ImageMobject.get_pixel_array") | A simple getter method. |
| `get_style` | |
| [`interpolate_color`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.interpolate_color "manim.mobject.types.image_mobject.ImageMobject.interpolate_color") | Interpolates the array of pixel color values from one ImageMobject into an array of equal size in the target ImageMobject. |
| [`set_color`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.set_color "manim.mobject.types.image_mobject.ImageMobject.set_color") | Condition is function which takes in one arguments, (x, y, z). |
| [`set_opacity`](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.set_opacity "manim.mobject.types.image_mobject.ImageMobject.set_opacity") | Sets the image's opacity. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
\_original\_\_init\_\_(_filename\_or\_array_, _scale\_to\_resolution\=1080_, _invert\=False_, _image\_mode\='RGBA'_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **filename\_or\_array** ([_StrPath_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.StrPath "manim.typing.StrPath")
_|_ _npt.NDArray_)
* **scale\_to\_resolution** (_int_)
* **invert** (_bool_)
* **image\_mode** (_str_)
* **kwargs** (_Any_)
Return type:
None
fade(_darkness\=0.5_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject.fade)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.fade "Link to this definition")
Sets the image’s opacity using a 1 - alpha relationship.
Parameters:
* **darkness** (_float_) – The alpha value of the object, 1 being transparent and 0 being opaque.
* **family** (_bool_) – Whether the submobjects of the ImageMobject should be affected.
Return type:
Self
get\_pixel\_array()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject.get_pixel_array)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.get_pixel_array "Link to this definition")
A simple getter method.
Return type:
[_PixelArray_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.PixelArray "manim.typing.PixelArray")
interpolate\_color(_mobject1_, _mobject2_, _alpha_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject.interpolate_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.interpolate_color "Link to this definition")
Interpolates the array of pixel color values from one ImageMobject into an array of equal size in the target ImageMobject.
Parameters:
* **mobject1** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The ImageMobject to transform from.
* **mobject2** ([_Mobject_](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
) – The ImageMobject to transform into.
* **alpha** (_float_) – Used to track the lerp relationship. Not opacity related.
Return type:
None
set\_color(_color\=ManimColor('#F7D96F')_, _alpha\=None_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject.set_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.set_color "Link to this definition")
Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings of color
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **alpha** (_Any_)
* **family** (_bool_)
Return type:
Self
set\_opacity(_alpha_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/image_mobject.html#ImageMobject.set_opacity)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.image_mobject.ImageMobject.html#manim.mobject.types.image_mobject.ImageMobject.set_opacity "Link to this definition")
Sets the image’s opacity.
Parameters:
**alpha** (_float_) – The alpha value of the object, 1 being opaque and 0 being transparent.
Return type:
Self
---
# PointCloudDot - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.rst "Edit this page")
PointCloudDot[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#pointclouddot "Link to this heading")
===================================================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.PointCloudDot`
class PointCloudDot(_center\=array(\[0., 0., 0.\])_, _radius\=2.0_, _stroke\_width\=2_, _density\=10_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PointCloudDot)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot "Link to this definition")
Bases: [`Mobject1D`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Mobject1D.html#manim.mobject.types.point_cloud_mobject.Mobject1D "manim.mobject.types.point_cloud_mobject.Mobject1D")
A disc made of a cloud of dots.
Examples
Example: PointCloudDotExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#pointclouddotexample)

from manim import \*
class PointCloudDotExample(Scene):
def construct(self):
cloud\_1 \= PointCloudDot(color\=RED)
cloud\_2 \= PointCloudDot(stroke\_width\=4, radius\=1)
cloud\_3 \= PointCloudDot(density\=15)
group \= Group(cloud\_1, cloud\_2, cloud\_3).arrange()
self.add(group)
class PointCloudDotExample(Scene):
def construct(self):
cloud\_1 = PointCloudDot(color=RED)
cloud\_2 = PointCloudDot(stroke\_width=4, radius=1)
cloud\_3 = PointCloudDot(density=15)
group = Group(cloud\_1, cloud\_2, cloud\_3).arrange()
self.add(group)
Example: PointCloudDotExample2 [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#pointclouddotexample2)
from manim import \*
class PointCloudDotExample2(Scene):
def construct(self):
plane \= ComplexPlane()
cloud \= PointCloudDot(color\=RED)
self.add(
plane, cloud
)
self.wait()
self.play(
cloud.animate.apply\_complex\_function(lambda z: np.exp(z))
)
class PointCloudDotExample2(Scene):
def construct(self):
plane = ComplexPlane()
cloud = PointCloudDot(color=RED)
self.add(
plane, cloud
)
self.wait()
self.play(
cloud.animate.apply\_complex\_function(lambda z: np.exp(z))
)
Methods
| | |
| --- | --- |
| [`generate_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot.generate_points "manim.mobject.types.point_cloud_mobject.PointCloudDot.generate_points") | Initializes `points` and therefore the shape. |
| `init_points` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **center** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **radius** (_float_)
* **stroke\_width** (_int_)
* **density** (_int_)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_center\=array(\[0., 0., 0.\])_, _radius\=2.0_, _stroke\_width\=2_, _density\=10_, _color\=ManimColor('#FFFF00')_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **center** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **radius** (_float_)
* **stroke\_width** (_int_)
* **density** (_int_)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **kwargs** (_Any_)
Return type:
None
generate\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PointCloudDot.generate_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PointCloudDot.html#manim.mobject.types.point_cloud_mobject.PointCloudDot.generate_points "Link to this definition")
Initializes `points` and therefore the shape.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
Return type:
None
---
# Surface - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Surface.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.three_d.three_dimensions.Surface.rst "Edit this page")
Surface[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#surface "Link to this heading")
================================================================================================================================================
Qualified name: `manim.mobject.three\_d.three\_dimensions.Surface`
class Surface(_func_, _u\_range\=(0, 1)_, _v\_range\=(0, 1)_, _resolution\=32_, _surface\_piece\_config\={}_, _fill\_color\=ManimColor('#29ABCA')_, _fill\_opacity\=1.0_, _checkerboard\_colors\=\[ManimColor('#29ABCA'), ManimColor('#236B8E')\]_, _stroke\_color\=ManimColor('#BBBBBB')_, _stroke\_width\=0.5_, _should\_make\_jagged\=False_, _pre\_function\_handle\_to\_anchor\_scale\_factor\=1e-05_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Surface)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Creates a Parametric Surface using a checkerboard pattern.
Parameters:
* **func** (_Callable__\[__\[__float__,_ _float__\]__,_ _np.ndarray__\]_) – The function defining the [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
.
* **u\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `u` variable: `(u_min, u_max)`.
* **v\_range** (_tuple__\[__float__,_ _float__\]_) – The range of the `v` variable: `(v_min, v_max)`.
* **resolution** (_int_ _|_ _Sequence__\[__int__\]_) – The number of samples taken of the [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
. A tuple can be used to define different resolutions for `u` and `v` respectively.
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The color of the [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
. Ignored if `checkerboard_colors` is set.
* **fill\_opacity** (_float_) – The opacity of the [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
, from 0 being fully transparent to 1 being fully opaque. Defaults to 1.
* **checkerboard\_colors** (_list__\[_[_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")\
_\]_ _|_ _Literal__\[__False__\]_) – ng individual faces alternating colors. Overrides `fill_color`.
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – Color of the stroke surrounding each face of [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
.
* **stroke\_width** (_float_) – Width of the stroke surrounding each face of [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
. Defaults to 0.5.
* **should\_make\_jagged** (_bool_) – Changes the anchor mode of the Bézier curves from smooth to jagged. Defaults to `False`.
* **surface\_piece\_config** (_dict_)
* **pre\_function\_handle\_to\_anchor\_scale\_factor** (_float_)
* **kwargs** (_Any_)
Examples
Example: ParaSurface [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#parasurface)

from manim import \*
class ParaSurface(ThreeDScene):
def func(self, u, v):
return np.array(\[np.cos(u) \* np.cos(v), np.cos(u) \* np.sin(v), u\])
def construct(self):
axes \= ThreeDAxes(x\_range\=\[\-4,4\], x\_length\=8)
surface \= Surface(
lambda u, v: axes.c2p(\*self.func(u, v)),
u\_range\=\[\-PI, PI\],
v\_range\=\[0, TAU\],
resolution\=8,
)
self.set\_camera\_orientation(theta\=70 \* DEGREES, phi\=75 \* DEGREES)
self.add(axes, surface)
class ParaSurface(ThreeDScene):
def func(self, u, v):
return np.array(\[np.cos(u) \* np.cos(v), np.cos(u) \* np.sin(v), u\])
def construct(self):
axes = ThreeDAxes(x\_range=\[-4,4\], x\_length=8)
surface = Surface(
lambda u, v: axes.c2p(\*self.func(u, v)),
u\_range=\[-PI, PI\],
v\_range=\[0, TAU\],
resolution=8,
)
self.set\_camera\_orientation(theta=70 \* DEGREES, phi=75 \* DEGREES)
self.add(axes, surface)
Methods
| | |
| --- | --- |
| `func` | |
| [`set_fill_by_checkerboard`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_checkerboard "manim.mobject.three_d.three_dimensions.Surface.set_fill_by_checkerboard") | Sets the fill\_color of each face of [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
in an alternating pattern. |
| [`set_fill_by_value`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value "manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value") | Sets the color of each mobject of a parametric surface to a color relative to its axis-value. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_func_, _u\_range\=(0, 1)_, _v\_range\=(0, 1)_, _resolution\=32_, _surface\_piece\_config\={}_, _fill\_color\=ManimColor('#29ABCA')_, _fill\_opacity\=1.0_, _checkerboard\_colors\=\[ManimColor('#29ABCA'), ManimColor('#236B8E')\]_, _stroke\_color\=ManimColor('#BBBBBB')_, _stroke\_width\=0.5_, _should\_make\_jagged\=False_, _pre\_function\_handle\_to\_anchor\_scale\_factor\=1e-05_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **func** (_Callable__\[__\[__float__,_ _float__\]__,_ _ndarray__\]_)
* **u\_range** (_tuple__\[__float__,_ _float__\]_)
* **v\_range** (_tuple__\[__float__,_ _float__\]_)
* **resolution** (_int_ _|_ _Sequence__\[__int__\]_)
* **surface\_piece\_config** (_dict_)
* **fill\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **fill\_opacity** (_float_)
* **checkerboard\_colors** (_Iterable__\[__TypeAliasForwardRef__(__'~manim.utils.color.core.ParsableManimColor'__)__\]_ _|_ _Literal__\[__False__\]_)
* **stroke\_color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **stroke\_width** (_float_)
* **should\_make\_jagged** (_bool_)
* **pre\_function\_handle\_to\_anchor\_scale\_factor** (_float_)
* **kwargs** (_Any_)
Return type:
None
set\_fill\_by\_checkerboard(_\*colors_, _opacity\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Surface.set_fill_by_checkerboard)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_checkerboard "Link to this definition")
Sets the fill\_color of each face of [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
in an alternating pattern.
Parameters:
* **colors** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – List of colors for alternating pattern.
* **opacity** (_float_ _|_ _None_) – The fill\_opacity of [`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
, from 0 being fully transparent to 1 being fully opaque.
Returns:
The parametric surface with an alternating pattern.
Return type:
[`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
set\_fill\_by\_value(_axes_, _colorscale\=None_, _axis\=2_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/three_d/three_dimensions.html#Surface.set_fill_by_value)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface.set_fill_by_value "Link to this definition")
Sets the color of each mobject of a parametric surface to a color relative to its axis-value.
Parameters:
* **axes** ([_ThreeDAxes_](https://docs.manim.community/en/stable/reference/manim.mobject.graphing.coordinate_systems.ThreeDAxes.html#manim.mobject.graphing.coordinate_systems.ThreeDAxes "manim.mobject.graphing.coordinate_systems.ThreeDAxes")
) – The axes for the parametric surface, which will be used to map axis-values to colors.
* **colorscale** (_Iterable__\[_[_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_\]_ _|_ _Iterable__\[__tuple__\[_[_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")\
_,_ _float__\]__\]_ _|_ _None_) – A list of colors, ordered from lower axis-values to higher axis-values. If a list of tuples is passed containing colors paired with numbers, then those numbers will be used as the pivots.
* **axis** (_int_) – The chosen axis to use for the color mapping. (0 = x, 1 = y, 2 = z)
* **kwargs** (_Any_)
Returns:
The parametric surface with a gradient applied by value. For chaining.
Return type:
[`Surface`](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#manim.mobject.three_d.three_dimensions.Surface "manim.mobject.three_d.three_dimensions.Surface")
Examples
Example: FillByValueExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.three_d.three_dimensions.Surface.html#fillbyvalueexample)

from manim import \*
class FillByValueExample(ThreeDScene):
def construct(self):
resolution\_fa \= 8
self.set\_camera\_orientation(phi\=75 \* DEGREES, theta\=-160 \* DEGREES)
axes \= ThreeDAxes(x\_range\=(0, 5, 1), y\_range\=(0, 5, 1), z\_range\=(\-1, 1, 0.5))
def param\_surface(u, v):
x \= u
y \= v
z \= np.sin(x) \* np.cos(y)
return z
surface\_plane \= Surface(
lambda u, v: axes.c2p(u, v, param\_surface(u, v)),
resolution\=(resolution\_fa, resolution\_fa),
v\_range\=\[0, 5\],
u\_range\=\[0, 5\],
)
surface\_plane.set\_style(fill\_opacity\=1)
surface\_plane.set\_fill\_by\_value(axes\=axes, colorscale\=\[(RED, \-0.5), (YELLOW, 0), (GREEN, 0.5)\], axis\=2)
self.add(axes, surface\_plane)
class FillByValueExample(ThreeDScene):
def construct(self):
resolution\_fa = 8
self.set\_camera\_orientation(phi=75 \* DEGREES, theta=-160 \* DEGREES)
axes = ThreeDAxes(x\_range=(0, 5, 1), y\_range=(0, 5, 1), z\_range=(-1, 1, 0.5))
def param\_surface(u, v):
x = u
y = v
z = np.sin(x) \* np.cos(y)
return z
surface\_plane = Surface(
lambda u, v: axes.c2p(u, v, param\_surface(u, v)),
resolution=(resolution\_fa, resolution\_fa),
v\_range=\[0, 5\],
u\_range=\[0, 5\],
)
surface\_plane.set\_style(fill\_opacity=1)
surface\_plane.set\_fill\_by\_value(axes=axes, colorscale=\[(RED, -0.5), (YELLOW, 0), (GREEN, 0.5)\], axis=2)
self.add(axes, surface\_plane)
---
# utils - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.utils.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.utils.rst "Edit this page")
utils[¶](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#module-manim.mobject.utils "Link to this heading")
======================================================================================================================================
Utilities for working with mobjects.
Functions
get\_mobject\_class()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/utils.html#get_mobject_class)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#manim.mobject.utils.get_mobject_class "Link to this definition")
Gets the base mobject class, depending on the currently active renderer.
Note
This method is intended to be used in the code base of Manim itself or in plugins where code should work independent of the selected renderer.
Examples
The function has to be explicitly imported. We test that the name of the returned class is one of the known mobject base classes:
\>>> from manim.mobject.utils import get\_mobject\_class
\>>> get\_mobject\_class().\_\_name\_\_ in \['Mobject', 'OpenGLMobject'\]
True
Return type:
type
get\_point\_mobject\_class()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/utils.html#get_point_mobject_class)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#manim.mobject.utils.get_point_mobject_class "Link to this definition")
Gets the point cloud mobject class, depending on the currently active renderer.
Note
This method is intended to be used in the code base of Manim itself or in plugins where code should work independent of the selected renderer.
Examples
The function has to be explicitly imported. We test that the name of the returned class is one of the known mobject base classes:
\>>> from manim.mobject.utils import get\_point\_mobject\_class
\>>> get\_point\_mobject\_class().\_\_name\_\_ in \['PMobject', 'OpenGLPMobject'\]
True
Return type:
type
get\_vectorized\_mobject\_class()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/utils.html#get_vectorized_mobject_class)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.utils.html#manim.mobject.utils.get_vectorized_mobject_class "Link to this definition")
Gets the vectorized mobject class, depending on the currently active renderer.
Note
This method is intended to be used in the code base of Manim itself or in plugins where code should work independent of the selected renderer.
Examples
The function has to be explicitly imported. We test that the name of the returned class is one of the known mobject base classes:
\>>> from manim.mobject.utils import get\_vectorized\_mobject\_class
\>>> get\_vectorized\_mobject\_class().\_\_name\_\_ in \['VMobject', 'OpenGLVMobject'\]
True
Return type:
type
---
# value_tracker - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.value_tracker.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.value_tracker.rst "Edit this page")
value\_tracker[¶](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.html#module-manim.mobject.value_tracker "Link to this heading")
===============================================================================================================================================================
Simple mobjects that can be used for storing (and updating) a value.
Classes
| | |
| --- | --- |
| [`ComplexValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ComplexValueTracker.html#manim.mobject.value_tracker.ComplexValueTracker "manim.mobject.value_tracker.ComplexValueTracker") | Tracks a complex-valued parameter. |
| [`ValueTracker`](https://docs.manim.community/en/stable/reference/manim.mobject.value_tracker.ValueTracker.html#manim.mobject.value_tracker.ValueTracker "manim.mobject.value_tracker.ValueTracker") | A mobject that can be used for tracking (real-valued) parameters. |
---
# DashedVMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.rst "Edit this page")
DashedVMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#dashedvmobject "Link to this heading")
=====================================================================================================================================================================
Qualified name: `manim.mobject.types.vectorized\_mobject.DashedVMobject`
class DashedVMobject(_vmobject_, _num\_dashes\=15_, _dashed\_ratio\=0.5_, _dash\_offset\=0_, _color\=ManimColor('#FFFFFF')_, _equal\_lengths\=True_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#DashedVMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
composed of dashes instead of lines.
Parameters:
* **vmobject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
) – The object that will get dashed
* **num\_dashes** (_int_) – Number of dashes to add.
* **dashed\_ratio** (_float_) – Ratio of dash to empty space.
* **dash\_offset** (_float_) – Shifts the starting point of dashes along the path. Value 1 shifts by one full dash length.
* **equal\_lengths** (_bool_) – If `True`, dashes will be (approximately) equally long. If `False`, dashes will be split evenly in the curve’s input t variable (legacy behavior).
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
Examples
Example: DashedVMobjectExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#dashedvmobjectexample)

from manim import \*
class DashedVMobjectExample(Scene):
def construct(self):
r \= 0.5
top\_row \= VGroup() \# Increasing num\_dashes
for dashes in range(1, 12):
circ \= DashedVMobject(Circle(radius\=r, color\=WHITE), num\_dashes\=dashes)
top\_row.add(circ)
middle\_row \= VGroup() \# Increasing dashed\_ratio
for ratio in np.arange(1 / 11, 1, 1 / 11):
circ \= DashedVMobject(
Circle(radius\=r, color\=WHITE), dashed\_ratio\=ratio
)
middle\_row.add(circ)
func1 \= FunctionGraph(lambda t: t\*\*5,\[\-1,1\],color\=WHITE)
func\_even \= DashedVMobject(func1,num\_dashes\=6,equal\_lengths\=True)
func\_stretched \= DashedVMobject(func1, num\_dashes\=6, equal\_lengths\=False)
bottom\_row \= VGroup(func\_even,func\_stretched)
top\_row.arrange(buff\=0.3)
middle\_row.arrange()
bottom\_row.arrange(buff\=1)
everything \= VGroup(top\_row, middle\_row, bottom\_row).arrange(DOWN, buff\=1)
self.add(everything)
class DashedVMobjectExample(Scene):
def construct(self):
r = 0.5
top\_row = VGroup() # Increasing num\_dashes
for dashes in range(1, 12):
circ = DashedVMobject(Circle(radius=r, color=WHITE), num\_dashes=dashes)
top\_row.add(circ)
middle\_row = VGroup() # Increasing dashed\_ratio
for ratio in np.arange(1 / 11, 1, 1 / 11):
circ = DashedVMobject(
Circle(radius=r, color=WHITE), dashed\_ratio=ratio
)
middle\_row.add(circ)
func1 = FunctionGraph(lambda t: t\*\*5,\[-1,1\],color=WHITE)
func\_even = DashedVMobject(func1,num\_dashes=6,equal\_lengths=True)
func\_stretched = DashedVMobject(func1, num\_dashes=6, equal\_lengths=False)
bottom\_row = VGroup(func\_even,func\_stretched)
top\_row.arrange(buff=0.3)
middle\_row.arrange()
bottom\_row.arrange(buff=1)
everything = VGroup(top\_row, middle\_row, bottom\_row).arrange(DOWN, buff=1)
self.add(everything)
Methods
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
\_original\_\_init\_\_(_vmobject_, _num\_dashes\=15_, _dashed\_ratio\=0.5_, _dash\_offset\=0_, _color\=ManimColor('#FFFFFF')_, _equal\_lengths\=True_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.DashedVMobject.html#manim.mobject.types.vectorized_mobject.DashedVMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vmobject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
* **num\_dashes** (_int_)
* **dashed\_ratio** (_float_)
* **dash\_offset** (_float_)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **equal\_lengths** (_bool_)
Return type:
None
---
# CurvesAsSubmobjects - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.rst "Edit this page")
CurvesAsSubmobjects[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#curvesassubmobjects "Link to this heading")
====================================================================================================================================================================================
Qualified name: `manim.mobject.types.vectorized\_mobject.CurvesAsSubmobjects`
class CurvesAsSubmobjects(_vmobject_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#CurvesAsSubmobjects)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "Link to this definition")
Bases: [`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Convert a curve’s elements to submobjects.
Examples
Example: LineGradientExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#linegradientexample)

from manim import \*
class LineGradientExample(Scene):
def construct(self):
curve \= ParametricFunction(lambda t: \[t, np.sin(t), 0\], t\_range\=\[\-PI, PI, 0.01\], stroke\_width\=10)
new\_curve \= CurvesAsSubmobjects(curve)
new\_curve.set\_color\_by\_gradient(BLUE, RED)
self.add(new\_curve.shift(UP), curve)
class LineGradientExample(Scene):
def construct(self):
curve = ParametricFunction(lambda t: \[t, np.sin(t), 0\], t\_range=\[-PI, PI, 0.01\], stroke\_width=10)
new\_curve = CurvesAsSubmobjects(curve)
new\_curve.set\_color\_by\_gradient(BLUE, RED)
self.add(new\_curve.shift(UP), curve)
Methods
| | |
| --- | --- |
| [`point_from_proportion`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.point_from_proportion "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.point_from_proportion") | Gets the point at a proportion along the path of the [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
. |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
**vmobject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
\_original\_\_init\_\_(_vmobject_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
**vmobject** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
)
Return type:
None
point\_from\_proportion(_alpha_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#CurvesAsSubmobjects.point_from_proportion)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.point_from_proportion "Link to this definition")
Gets the point at a proportion along the path of the [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
.
Parameters:
**alpha** (_float_) – The proportion along the the path of the [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
.
Returns:
The point on the [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
.
Return type:
`numpy.ndarray`
Raises:
* **ValueError** – If `alpha` is not between 0 and 1.
* **Exception** – If the [`CurvesAsSubmobjects`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.html#manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects "manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects")
has no submobjects, or no submobject has points.
---
# VectorizedPoint - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.rst "Edit this page")
VectorizedPoint[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#vectorizedpoint "Link to this heading")
========================================================================================================================================================================
Qualified name: `manim.mobject.types.vectorized\_mobject.VectorizedPoint`
class VectorizedPoint(_location\=array(\[0., 0., 0.\])_, _color\=ManimColor('#000000')_, _fill\_opacity\=0_, _stroke\_width\=0_, _artificial\_width\=0.01_, _artificial\_height\=0.01_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#VectorizedPoint)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
Methods
| | |
| --- | --- |
| `get_location` | |
| `set_location` | |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint.height "manim.mobject.types.vectorized_mobject.VectorizedPoint.height") | The height of the mobject. |
| `n_points_per_curve` | |
| `sheen_factor` | |
| `stroke_color` | |
| [`width`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint.width "manim.mobject.types.vectorized_mobject.VectorizedPoint.width") | The width of the mobject. |
Parameters:
* **location** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **artificial\_width** (_float_)
* **artificial\_height** (_float_)
\_original\_\_init\_\_(_location\=array(\[0., 0., 0.\])_, _color\=ManimColor('#000000')_, _fill\_opacity\=0_, _stroke\_width\=0_, _artificial\_width\=0.01_, _artificial\_height\=0.01_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **location** ([_Point3DLike_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike "manim.typing.Point3DLike")
)
* **color** ([_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
)
* **fill\_opacity** (_float_)
* **stroke\_width** (_float_)
* **artificial\_width** (_float_)
* **artificial\_height** (_float_)
Return type:
None
basecls[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint.basecls "Link to this definition")
alias of [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
property height: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint.height "Link to this definition")
The height of the mobject.
Return type:
`float`
Examples
Example: HeightExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#heightexample)
from manim import \*
class HeightExample(Scene):
def construct(self):
decimal \= DecimalNumber().to\_edge(UP)
rect \= Rectangle(color\=BLUE)
rect\_copy \= rect.copy().set\_stroke(GRAY, opacity\=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.height))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(height\=5))
self.wait()
class HeightExample(Scene):
def construct(self):
decimal = DecimalNumber().to\_edge(UP)
rect = Rectangle(color=BLUE)
rect\_copy = rect.copy().set\_stroke(GRAY, opacity=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.height))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(height=5))
self.wait()
See also
`length_over_dim()`
property width: float[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#manim.mobject.types.vectorized_mobject.VectorizedPoint.width "Link to this definition")
The width of the mobject.
Return type:
`float`
Examples
Example: WidthExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VectorizedPoint.html#widthexample)
from manim import \*
class WidthExample(Scene):
def construct(self):
decimal \= DecimalNumber().to\_edge(UP)
rect \= Rectangle(color\=BLUE)
rect\_copy \= rect.copy().set\_stroke(GRAY, opacity\=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.width))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(width\=7))
self.wait()
class WidthExample(Scene):
def construct(self):
decimal = DecimalNumber().to\_edge(UP)
rect = Rectangle(color=BLUE)
rect\_copy = rect.copy().set\_stroke(GRAY, opacity=0.5)
decimal.add\_updater(lambda d: d.set\_value(rect.width))
self.add(rect\_copy, rect, decimal)
self.play(rect.animate.set(width=7))
self.wait()
See also
`length_over_dim()`
---
# PMobject - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PMobject.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.point_cloud_mobject.PMobject.rst "Edit this page")
PMobject[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#pmobject "Link to this heading")
====================================================================================================================================================
Qualified name: `manim.mobject.types.point\_cloud\_mobject.PMobject`
class PMobject(_stroke\_width\=4_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "Link to this definition")
Bases: [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
A disc made of a cloud of Dots
Examples
Example: PMobjectExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#pmobjectexample)

from manim import \*
class PMobjectExample(Scene):
def construct(self):
pG \= PGroup() \# This is just a collection of PMobject's
\# As the scale factor increases, the number of points
\# removed increases.
for sf in range(1, 9 + 1):
p \= PointCloudDot(density\=20, radius\=1).thin\_out(sf)
\# PointCloudDot is a type of PMobject
\# and can therefore be added to a PGroup
pG.add(p)
\# This organizes all the shapes in a grid.
pG.arrange\_in\_grid()
self.add(pG)
class PMobjectExample(Scene):
def construct(self):
pG = PGroup() # This is just a collection of PMobject's
# As the scale factor increases, the number of points
# removed increases.
for sf in range(1, 9 + 1):
p = PointCloudDot(density=20, radius=1).thin\_out(sf)
# PointCloudDot is a type of PMobject
# and can therefore be added to a PGroup
pG.add(p)
# This organizes all the shapes in a grid.
pG.arrange\_in\_grid()
self.add(pG)
Methods
| | |
| --- | --- |
| [`add_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.add_points "manim.mobject.types.point_cloud_mobject.PMobject.add_points") | Add points. |
| `align_points_with_larger` | |
| `fade_to` | |
| `filter_out` | |
| `get_all_rgbas` | |
| `get_array_attrs` | |
| [`get_color`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_color "manim.mobject.types.point_cloud_mobject.PMobject.get_color") | Returns the color of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject") |
| [`get_mobject_type_class`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_mobject_type_class "manim.mobject.types.point_cloud_mobject.PMobject.get_mobject_type_class") | Return the base class of this mobject type. |
| [`get_point_mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_point_mobject "manim.mobject.types.point_cloud_mobject.PMobject.get_point_mobject") | The simplest [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to be transformed to or from self. |
| `get_stroke_width` | |
| `ingest_submobjects` | |
| `interpolate_color` | |
| `match_colors` | |
| `point_from_proportion` | |
| `pointwise_become_partial` | |
| [`reset_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.reset_points "manim.mobject.types.point_cloud_mobject.PMobject.reset_points") | Sets `points` to be an empty array. |
| [`set_color`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.set_color "manim.mobject.types.point_cloud_mobject.PMobject.set_color") | Condition is function which takes in one arguments, (x, y, z). |
| [`set_color_by_gradient`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.set_color_by_gradient "manim.mobject.types.point_cloud_mobject.PMobject.set_color_by_gradient") | |
| `set_colors_by_radial_gradient` | |
| `set_stroke_width` | |
| [`sort_points`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.sort_points "manim.mobject.types.point_cloud_mobject.PMobject.sort_points") | Function is any map from R^3 to R |
| [`thin_out`](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.thin_out "manim.mobject.types.point_cloud_mobject.PMobject.thin_out") | Removes all but every nth point for n = factor |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `animate` | Used to animate the application of any method of `self`. |
| `animation_overrides` | |
| `depth` | The depth of the mobject. |
| `height` | The height of the mobject. |
| `width` | The width of the mobject. |
Parameters:
* **stroke\_width** (_int_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_stroke\_width\=4_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **stroke\_width** (_int_)
* **kwargs** (_Any_)
Return type:
None
add\_points(_points_, _rgbas\=None_, _color\=None_, _alpha\=1.0_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.add_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.add_points "Link to this definition")
Add points.
Points must be a Nx3 numpy array. Rgbas must be a Nx4 numpy array if it is not None.
Parameters:
* **points** ([_Point3DLike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.Point3DLike_Array "manim.typing.Point3DLike_Array")
)
* **rgbas** ([_FloatRGBALike\_Array_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.FloatRGBALike_Array "manim.typing.FloatRGBALike_Array")
_|_ _None_)
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
_|_ _None_)
* **alpha** (_float_)
Return type:
Self
get\_color()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.get_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_color "Link to this definition")
Returns the color of the [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
Examples
\>>> from manim import Square, RED
\>>> Square(color\=RED).get\_color() \== RED
True
Return type:
[_ManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.ManimColor.html#manim.utils.color.core.ManimColor "manim.utils.color.core.ManimColor")
static get\_mobject\_type\_class()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.get_mobject_type_class)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_mobject_type_class "Link to this definition")
Return the base class of this mobject type.
Return type:
type\[[_PMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject "manim.mobject.types.point_cloud_mobject.PMobject")\
\]
get\_point\_mobject(_center\=None_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.get_point_mobject)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.get_point_mobject "Link to this definition")
The simplest [`Mobject`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject "manim.mobject.mobject.Mobject")
to be transformed to or from self. Should by a point of the appropriate type
Parameters:
**center** (_TypeAliasForwardRef__(__'~manim.typing.Point3DLike'__)_ _|_ _None_)
Return type:
[_Point_](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.Point.html#manim.mobject.types.point_cloud_mobject.Point "manim.mobject.types.point_cloud_mobject.Point")
reset\_points()[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.reset_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.reset_points "Link to this definition")
Sets `points` to be an empty array.
Return type:
Self
set\_color(_color\=ManimColor('#FFFF00')_, _family\=True_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.set_color)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.set_color "Link to this definition")
Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings of color
Parameters:
* **color** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
)
* **family** (_bool_)
Return type:
Self
set\_color\_by\_gradient(_\*colors_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.set_color_by_gradient)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.set_color_by_gradient "Link to this definition")
Parameters:
* **colors** ([_ParsableManimColor_](https://docs.manim.community/en/stable/reference/manim.utils.color.core.html#manim.utils.color.core.ParsableManimColor "manim.utils.color.core.ParsableManimColor")
) – The colors to use for the gradient. Use like set\_color\_by\_gradient(RED, BLUE, GREEN).
* **ManimColor.parse****(****color****)** (_self.color =_)
* **self** (_return_)
Return type:
Self
sort\_points(_function\=>_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.sort_points)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.sort_points "Link to this definition")
Function is any map from R^3 to R
Parameters:
**function** (_Callable__\[__\[__npt.NDArray__\[_[_ManimFloat_](https://docs.manim.community/en/stable/reference/manim.typing.html#manim.typing.ManimFloat "manim.typing.ManimFloat")\
_\]__\]__,_ _float__\]_)
Return type:
Self
thin\_out(_factor\=5_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/point_cloud_mobject.html#PMobject.thin_out)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.point_cloud_mobject.PMobject.html#manim.mobject.types.point_cloud_mobject.PMobject.thin_out "Link to this definition")
Removes all but every nth point for n = factor
Parameters:
**factor** (_int_)
Return type:
Self
---
# VGroup - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.types.vectorized_mobject.VGroup.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.types.vectorized_mobject.VGroup.rst "Edit this page")
VGroup[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#vgroup "Link to this heading")
=============================================================================================================================================
Qualified name: `manim.mobject.types.vectorized\_mobject.VGroup`
class VGroup(_\*vmobjects_, _\*\*kwargs_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#VGroup)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "Link to this definition")
Bases: [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
A group of vectorized mobjects.
This can be used to group multiple [`VMobject`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
instances together in order to scale, move, … them together.
Notes
When adding the same mobject more than once, repetitions are ignored. Use [`Mobject.copy()`](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html#manim.mobject.mobject.Mobject.copy "manim.mobject.mobject.Mobject.copy")
to create a separate copy which can then be added to the group.
Examples
To add `VGroup`, you can either use the [`add()`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup.add "manim.mobject.types.vectorized_mobject.VGroup.add")
method, or use the + and += operators. Similarly, you can subtract elements of a VGroup via `remove()` method, or \- and \-= operators:
\>>> from manim import Triangle, Square, VGroup
\>>> vg \= VGroup()
\>>> triangle, square \= Triangle(), Square()
\>>> vg.add(triangle)
VGroup(Triangle)
\>>> vg + square \# a new VGroup is constructed
VGroup(Triangle, Square)
\>>> vg \# not modified
VGroup(Triangle)
\>>> vg += square
\>>> vg \# modifies vg
VGroup(Triangle, Square)
\>>> vg.remove(triangle)
VGroup(Square)
\>>> vg \- square \# a new VGroup is constructed
VGroup()
\>>> vg \# not modified
VGroup(Square)
\>>> vg \-= square
\>>> vg \# modifies vg
VGroup()
Example: ArcShapeIris [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#arcshapeiris)

from manim import \*
class ArcShapeIris(Scene):
def construct(self):
colors \= \[DARK\_BROWN, BLUE\_E, BLUE\_D, BLUE\_A, TEAL\_B, GREEN\_B, YELLOW\_E\]
radius \= \[1 + rad \* 0.1 for rad in range(len(colors))\]
circles\_group \= VGroup()
\# zip(radius, color) makes the iterator \[(radius\[i\], color\[i\]) for i in range(radius)\]
circles\_group.add(\*\[Circle(radius\=rad, stroke\_width\=10, color\=col)\
for rad, col in zip(radius, colors)\])
self.add(circles\_group)
class ArcShapeIris(Scene):
def construct(self):
colors = \[DARK\_BROWN, BLUE\_E, BLUE\_D, BLUE\_A, TEAL\_B, GREEN\_B, YELLOW\_E\]
radius = \[1 + rad \* 0.1 for rad in range(len(colors))\]
circles\_group = VGroup()
# zip(radius, color) makes the iterator \[(radius\[i\], color\[i\]) for i in range(radius)\]
circles\_group.add(\*\[Circle(radius=rad, stroke\_width=10, color=col)\
for rad, col in zip(radius, colors)\])
self.add(circles\_group)
Methods
| | |
| --- | --- |
| [`add`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup.add "manim.mobject.types.vectorized_mobject.VGroup.add") | Checks if all passed elements are an instance, or iterables of VMobject and then adds them to submobjects |
Attributes
| | |
| --- | --- |
| `always` | Call a method on a mobject every frame. |
| `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. |
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
_|_ _Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_)
* **kwargs** (_Any_)
\_original\_\_init\_\_(_\*vmobjects_, _\*\*kwargs_)[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup._original__init__ "Link to this definition")
Initialize self. See help(type(self)) for accurate signature.
Parameters:
* **vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
_|_ _Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_)
* **kwargs** (_Any_)
Return type:
None
add(_\*vmobjects_)[\[source\]](https://docs.manim.community/en/stable/_modules/manim/mobject/types/vectorized_mobject.html#VGroup.add)
[¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup.add "Link to this definition")
Checks if all passed elements are an instance, or iterables of VMobject and then adds them to submobjects
Parameters:
**vmobjects** ([_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")
_|_ _Iterable__\[_[_VMobject_](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VMobject.html#manim.mobject.types.vectorized_mobject.VMobject "manim.mobject.types.vectorized_mobject.VMobject")\
_\]_) – List or iterable of VMobjects to add
Return type:
[`VGroup`](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#manim.mobject.types.vectorized_mobject.VGroup "manim.mobject.types.vectorized_mobject.VGroup")
Raises:
**TypeError** – If one element of the list, or iterable is not an instance of VMobject
Examples
The following example shows how to add individual or multiple VMobject instances through the VGroup constructor and its .add() method.
Example: AddToVGroup [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#addtovgroup)
from manim import \*
class AddToVGroup(Scene):
def construct(self):
circle\_red \= Circle(color\=RED)
circle\_green \= Circle(color\=GREEN)
circle\_blue \= Circle(color\=BLUE)
circle\_red.shift(LEFT)
circle\_blue.shift(RIGHT)
gr \= VGroup(circle\_red, circle\_green)
gr2 \= VGroup(circle\_blue) \# Constructor uses add directly
self.add(gr,gr2)
self.wait()
gr += gr2 \# Add group to another
self.play(
gr.animate.shift(DOWN),
)
gr \-= gr2 \# Remove group
self.play( \# Animate groups separately
gr.animate.shift(LEFT),
gr2.animate.shift(UP),
)
self.play( #Animate groups without modification
(gr+gr2).animate.shift(RIGHT)
)
self.play( \# Animate group without component
(gr\-circle\_red).animate.shift(RIGHT)
)
class AddToVGroup(Scene):
def construct(self):
circle\_red = Circle(color=RED)
circle\_green = Circle(color=GREEN)
circle\_blue = Circle(color=BLUE)
circle\_red.shift(LEFT)
circle\_blue.shift(RIGHT)
gr = VGroup(circle\_red, circle\_green)
gr2 = VGroup(circle\_blue) # Constructor uses add directly
self.add(gr,gr2)
self.wait()
gr += gr2 # Add group to another
self.play(
gr.animate.shift(DOWN),
)
gr -= gr2 # Remove group
self.play( # Animate groups separately
gr.animate.shift(LEFT),
gr2.animate.shift(UP),
)
self.play( #Animate groups without modification
(gr+gr2).animate.shift(RIGHT)
)
self.play( # Animate group without component
(gr-circle\_red).animate.shift(RIGHT)
)
A VGroup can be created using iterables as well. Keep in mind that all generated values from an iterable must be an instance of VMobject. This is demonstrated below:
Example: AddIterableToVGroupExample [¶](https://docs.manim.community/en/stable/reference/manim.mobject.types.vectorized_mobject.VGroup.html#additerabletovgroupexample)

from manim import \*
class AddIterableToVGroupExample(Scene):
def construct(self):
v \= VGroup(
Square(), \# Singular VMobject instance
\[Circle(), Triangle()\], \# List of VMobject instances
Dot(),
(Dot() for \_ in range(2)), \# Iterable that generates VMobjects
)
v.arrange()
self.add(v)
class AddIterableToVGroupExample(Scene):
def construct(self):
v = VGroup(
Square(), # Singular VMobject instance
\[Circle(), Triangle()\], # List of VMobject instances
Dot(),
(Dot() for \_ in range(2)), # Iterable that generates VMobjects
)
v.arrange()
self.add(v)
To facilitate this, the iterable is unpacked before its individual instances are added to the VGroup. As a result, when you index a VGroup, you will never get back an iterable. Instead, you will always receive VMobject instances, including those that were part of the iterable/s that you originally added to the VGroup.
---
# vector_field - Manim Community v0.20.1
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode [Skip to content](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.html#furo-main-content)
[Back to top](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.html#)
[View this page](https://github.com/ManimCommunity/manim/blob/main/docs/source/reference/manim.mobject.vector_field.rst?plain=true "View this page")
[Edit this page](https://github.com/ManimCommunity/manim/edit/main/docs/source/reference/manim.mobject.vector_field.rst "Edit this page")
vector\_field[¶](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.html#module-manim.mobject.vector_field "Link to this heading")
============================================================================================================================================================
Mobjects representing vector fields.
Classes
| | |
| --- | --- |
| [`ArrowVectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.ArrowVectorField.html#manim.mobject.vector_field.ArrowVectorField "manim.mobject.vector_field.ArrowVectorField") | A [`VectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.VectorField.html#manim.mobject.vector_field.VectorField "manim.mobject.vector_field.VectorField")
represented by a set of change vectors. |
| [`StreamLines`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.StreamLines.html#manim.mobject.vector_field.StreamLines "manim.mobject.vector_field.StreamLines") | StreamLines represent the flow of a [`VectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.VectorField.html#manim.mobject.vector_field.VectorField "manim.mobject.vector_field.VectorField")
using the trace of moving agents. |
| [`VectorField`](https://docs.manim.community/en/stable/reference/manim.mobject.vector_field.VectorField.html#manim.mobject.vector_field.VectorField "manim.mobject.vector_field.VectorField") | A vector field. |
---