Animations

class manim_extensions.mindmap.LayoutAnimation(scene, root, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Bases: AbstractLayoutAnimation

General layout animation: apply a layout to the whole tree and play all change animations.

Example: LayoutAnimationDocExample

from manim import *
from manim_extensions.mindmap import Node, LayoutAnimation

class LayoutAnimationDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        root.add_child(a1)
        root.add_child(a2)
        self.play(LayoutAnimation(self, root))
        self.wait()
from manim import *
from manim_extensions.mindmap import Node, LayoutAnimation

class LayoutAnimationDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        root.add_child(a1)
        root.add_child(a2)
        self.play(LayoutAnimation(self, root))
        self.wait()

__init__(scene, root, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

After operating on the tree nodes, run the full Layout algorithm and generate the animation.

Parameters:
  • scene (Scene) – The current scene

  • root (Node) – The root node

  • layout_type (LayoutType) – Layout type. Defaults to LayoutType.MindMap.

  • layout_config (LayoutConfig) – Layout parameters. Defaults to LayoutConfig().

  • node_style (NodeStyle) – Layout and node styles. Defaults to NodeStyle().

collect_animations()[source]

Collect animations: must be implemented by subclasses.

class manim_extensions.mindmap.InsertNode(scene, father_children=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Bases: LayoutAnimation

Insert one or more child nodes into the mind map.

Example: InsertNodeDocExample

from manim import *
from manim_extensions.mindmap import Node, InsertNode

class InsertNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        self.play(InsertNode(self, {root: [a1, a2]}))
        self.wait()
from manim import *
from manim_extensions.mindmap import Node, InsertNode

class InsertNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        self.play(InsertNode(self, {root: [a1, a2]}))
        self.wait()

__init__(scene, father_children=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Insert a child node (or list of child nodes) under the specified parent nodes.

Parameters:

father_children (Dict[Node, List[Node]]) – dictionary mapping parent nodes to lists of child nodes

get_root(nodes)[source]
collect_animations()[source]

Collect animations: must be implemented by subclasses.

Return type:

List[Animation]

class manim_extensions.mindmap.RemoveNode(scene, nodes, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Bases: LayoutAnimation

Remove the tree or subtree rooted at nodes; nodes may be a single node or a list of nodes.

Example: RemoveNodeDocExample

from manim import *
from manim_extensions.mindmap import Node, InsertNode, RemoveNode

class RemoveNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        self.play(InsertNode(self, {root: [a1, a2]}))
        self.play(RemoveNode(self, [a1, a2]))
        self.wait()
from manim import *
from manim_extensions.mindmap import Node, InsertNode, RemoveNode

class RemoveNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        a2 = Node(MathTex("A2", font_size=36))
        self.play(InsertNode(self, {root: [a1, a2]}))
        self.play(RemoveNode(self, [a1, a2]))
        self.wait()

__init__(scene, nodes, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

After operating on the tree nodes, run the full Layout algorithm and generate the animation.

Parameters:
  • scene (Scene) – The current scene

  • root (Node) – The root node

  • layout_type (LayoutType) – Layout type. Defaults to LayoutType.MindMap.

  • layout_config (LayoutConfig) – Layout parameters. Defaults to LayoutConfig().

  • node_style (NodeStyle) – Layout and node styles. Defaults to NodeStyle().

collect_animations()[source]

Collect animations: must be implemented by subclasses.

class manim_extensions.mindmap.AlterNode(scene, node_vmobject=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Bases: LayoutAnimation

Replace the content of one or more nodes in the mind map.

Example: AlterNodeDocExample

from manim import *
from manim_extensions.mindmap import Node, InsertNode, AlterNode

class AlterNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        self.play(InsertNode(self, {root: [a1]}))
        self.play(AlterNode(self, {a1: MathTex("Updated", font_size=36)}))
        self.wait()
from manim import *
from manim_extensions.mindmap import Node, InsertNode, AlterNode

class AlterNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        self.play(InsertNode(self, {root: [a1]}))
        self.play(AlterNode(self, {a1: MathTex("Updated", font_size=36)}))
        self.wait()

__init__(scene, node_vmobject=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Replace a node’s vmobject.

Parameters:

node_vmobject (Dict[Node, VMobject]) – dictionary mapping Node instances to the replacement VMobjects

class manim_extensions.mindmap.ScaleNode(scene, node_scale=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Bases: LayoutAnimation

Scale one or more nodes in the mind map.

Example: ScaleNodeDocExample

from manim import *
from manim_extensions.mindmap import Node, InsertNode, ScaleNode

class ScaleNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        self.play(InsertNode(self, {root: [a1]}))
        self.play(ScaleNode(self, {a1: 1.5}))
        self.wait()
from manim import *
from manim_extensions.mindmap import Node, InsertNode, ScaleNode

class ScaleNodeDocExample(Scene):
    def construct(self):
        root = Node(MathTex("Root", font_size=36).to_edge(LEFT))
        a1 = Node(MathTex("A1", font_size=36))
        self.play(InsertNode(self, {root: [a1]}))
        self.play(ScaleNode(self, {a1: 1.5}))
        self.wait()

__init__(scene, node_scale=None, layout_type=LayoutType.MindMap, layout_config=<manim_extensions.mindmap.algorithms.layout_config.LayoutConfig object>, node_style=<manim_extensions.mindmap.nodes.node.NodeStyle object>, **kwargs)[source]

Scale nodes up or down.

Parameters:

node_scale (Dict[Node, float]) – dictionary mapping Node instances to scale factors (float)