Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Manim Themes v0.1.3
Light Logo Dark Logo
Manim Themes v0.1.3

Contents:

  • Example Gallery
  • Example Themes
  • Configuration Options
Back to top
View this page

Example Gallery¶

This gallery contains a collection of code snippets together with their corresponding output, illustrating different colors themes in Manim and example objects.

Example: NumberPlaneExample ¶

_images/NumberPlaneExample-1.png

Code: NumberPlaneExample

import manim as m

from manim_themes.manim_theme import apply_theme

class NumberPlaneExample(m.Scene):

    def setup(self):
        # Set the background color to a light beige
        theme = "Obsidian"
        apply_theme(manim_scene=self, theme_name=theme)



    def construct(self):
        dot = m.Dot(m.ORIGIN)
        arrow = m.Arrow(m.ORIGIN, [2, 2, 0], buff=0)


        numberplane = m.NumberPlane()
        origin_text = m.Text('(0, 0)').next_to(dot, m.DOWN)
        tip_text = m.Text('(2, 2)').next_to(arrow.get_end(), m.RIGHT)
        self.add(numberplane, dot, arrow, origin_text, tip_text)


if __name__ == '__main__':
    import os
    from pathlib import Path

    FLAGS = "-pqm"
    SCENE = "AxesExample"

    file_path = Path(__file__).resolve()
    os.system(f"manim {Path(__file__).resolve()} {SCENE} {FLAGS}")

Example: PolygonExample ¶

Code: PolygonExample

import manim as m
import numpy as np

from manim_themes.manim_theme import apply_theme

class PolygonExample(m.Scene):

    def setup(self):
        # Set the background color to a light beige
        #theme = "Retro"
        theme="CrayonPonyFish"
        apply_theme(manim_scene=self, theme_name=theme)



    def get_rectangle_corners(self, bottom_left, top_right):
        return [
            (top_right[0], top_right[1]),
            (bottom_left[0], top_right[1]),
            (bottom_left[0], bottom_left[1]),
            (top_right[0], bottom_left[1]),
        ]

    def construct(self):
        ax = m.Axes(
            x_range=[0, 10],
            y_range=[0, 10],
            x_length=6,
            y_length=6,
            axis_config={"include_tip": False},
        )

        t = m.ValueTracker(5)
        k = 25

        graph = ax.plot(
            lambda x: k / x,
            color=m.YELLOW_D,
            x_range=[k / 10, 10.0, 0.01],
            use_smoothing=False,
        )

        def get_rectangle():
            polygon = m.Polygon(
                *[
                    ax.c2p(*i)
                    for i in self.get_rectangle_corners(
                        (0, 0), (t.get_value(), k / t.get_value())
                    )
                ]
            )
            polygon.stroke_width = 1
            polygon.set_fill(m.BLUE, opacity=0.5)
            polygon.set_stroke(m.YELLOW_B)
            return polygon

        polygon = m.always_redraw(get_rectangle)

        dot = m.Dot()
        dot.add_updater(lambda x: x.move_to(ax.c2p(t.get_value(), k / t.get_value())))
        dot.set_z_index(10)

        self.add(ax, graph, dot)
        self.play(m.Create(polygon))
        self.play(t.animate.set_value(10))
        self.play(t.animate.set_value(k / 10))
        self.play(t.animate.set_value(5))


if __name__ == '__main__':
    import os
    from pathlib import Path

    FLAGS = "-pqm"
    SCENE = "PolygonExample"

    file_path = Path(__file__).resolve()
    os.system(f"manim {Path(__file__).resolve()} {SCENE} {FLAGS}")

Example: AxesExample ¶

_images/AxesExample-1.png

Code: AxesExample

import manim as m
import numpy as np

from manim_themes.manim_theme import apply_theme


class AxesExample(m.Scene):

    def setup(self):
        # Set the background color to a light beige
        theme = "Ubuntu"
        apply_theme(manim_scene=self, theme_name=theme)
        m.Text.set_default(font="Courier New", color=m.GREEN)
        m.Tex.set_default(color=m.RED)
        m.MathTex.set_default(color=m.RED)

    def construct(self):
        axes = m.Axes(
            x_range=[-10, 10.3, 1],
            y_range=[-1.5, 1.5, 1],
            x_length=10,
            axis_config={"color": m.GREEN},
            x_axis_config={
                "numbers_to_include": np.arange(-10, 10.01, 2),
                "numbers_with_elongated_ticks": np.arange(-10, 10.01, 2),
            },
            tips=False,
        )
        axes_labels = axes.get_axis_labels()
        sin_graph = axes.plot(lambda x: np.sin(x), color=m.BLUE)
        cos_graph = axes.plot(lambda x: np.cos(x), color=m.RED)

        sin_label = axes.get_graph_label(
            sin_graph, "\\sin(x)", x_val=-10, direction=m.UP / 2
        )
        cos_label = axes.get_graph_label(cos_graph, label="\\cos(x)")

        vert_line = axes.get_vertical_line(
            axes.i2gp(m.TAU, cos_graph), color=m.YELLOW, line_func=m.Line
        )
        line_label = axes.get_graph_label(
            cos_graph, r"x=2\pi", x_val=m.TAU, direction=m.UR, color=m.WHITE
        )

        plot = m.VGroup(axes, sin_graph, cos_graph, vert_line)
        labels = m.VGroup(axes_labels, sin_label, cos_label, line_label)
        self.add(plot, labels)


if __name__ == '__main__':
    import os
    from pathlib import Path

    FLAGS = "-pqm"
    SCENE = "AxesExample"

    file_path = Path(__file__).resolve()
    os.system(f"manim {Path(__file__).resolve()} {SCENE} {FLAGS}")

Example: TableExample ¶

_images/TableExample-1.png

Code: TableExample

import manim as m
import numpy as np

from manim_themes.manim_theme import apply_theme

class TableExample(m.Scene):

    def setup(self):
        # Set the background color to a light beige
        #theme = "Retro"
        theme="Obsidian"
        apply_theme(manim_scene=self, theme_name=theme)

        m.Text.set_default(
            font="Courier New",
            color=m.WHITE
        )
        m.Tex.set_default(color=m.WHITE)
        m.MathTex.set_default(color=m.WHITE)

        # Mobjects
        m.Mobject.set_default(color=m.WHITE)
        m.VMobject.set_default(color=m.WHITE)

        m.Rectangle.set_default(color=m.RED)
        m.AnnotationDot.set_default(stroke_color=m.WHITE, fill_color=m.BLUE)
        m.Arc.set_default(stroke_color=m.WHITE)
        m.AnnularSector.set_default(color=m.WHITE)


        m.NumberPlane().set_default(
            background_line_style={
                "stroke_color": m.RED,
            },
            x_axis_config={"stroke_color": m.GREEN},
            y_axis_config={"stroke_color": m.BLUE},
        )
        m.Arrow.set_default(color=m.GOLD)
        m.Dot.set_default(color=m.PURPLE)


    def construct(self):
        t0 = m.Table(
            [["First", "Second"],
             ["Third", "Fourth"]],
            row_labels=[m.Text("R1"), m.Text("R2")],
            col_labels=[m.Text("C1"), m.Text("C2")],
            top_left_entry=m.Text("TOP"))
        t0.add_highlighted_cell((2, 2), color=m.GREEN)
        x_vals = np.linspace(-2, 2, 5)
        y_vals = np.exp(x_vals)
        t1 = m.DecimalTable(
            [x_vals, y_vals],
            row_labels=[m.MathTex("x"), m.MathTex("f(x)")],
            include_outer_lines=True)
        t1.add(t1.get_cell((2, 2), color=m.RED))
        t2 = m.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(m.BLUE)
        t2.get_vertical_lines()[:3].set_color(m.BLUE)
        t2.get_horizontal_lines()[:3].set_z_index(1)
        cross = m.VGroup(
            m.Line(m.UP + m.LEFT, m.DOWN + m.RIGHT),
            m.Line(m.UP + m.RIGHT, m.DOWN + m.LEFT))
        a = m.Circle().set_color(m.RED).scale(0.5)
        b = cross.set_color(m.BLUE).scale(0.5)
        t3 = m.MobjectTable(
            [[a.copy(), b.copy(), a.copy()],
             [b.copy(), a.copy(), a.copy()],
             [a.copy(), b.copy(), b.copy()]])
        t3.add(m.Line(
            t3.get_corner(m.DL), t3.get_corner(m.UR)
        ).set_color(m.RED))
        vals = np.arange(1, 21).reshape(5, 4)
        t4 = m.IntegerTable(
            vals,
            include_outer_lines=True
        )
        g1 = m.Group(t0, t1).scale(0.5).arrange(buff=1).to_edge(m.UP, buff=1)
        g2 = m.Group(t2, t3, t4).scale(0.5).arrange(buff=1).to_edge(m.DOWN, buff=1)
        self.add(g1, g2)


if __name__ == '__main__':
    import os
    from pathlib import Path

    FLAGS = "-pqm -s"
    SCENE = "TableExample"

    file_path = Path(__file__).resolve()
    os.system(f"manim {Path(__file__).resolve()} {SCENE} {FLAGS}")

Example: ThemeCarouselObjects ¶

Code: ThemeCarouselObjects

import manim as m
import random

from manim_themes.manim_theme import apply_theme
from manim_themes.theme_preview import theme_preview


class ThemeCarouselObjects(m.Scene):


    def construct(self):
        themes = [
            "0x96f",
            "3024 Day",
            "3024 Night",
            "BlueDolphin",
            "CGA",
            "CutiePro",
            "DjangoRebornAgain",
            "DjangoSmooth",
            "Ghostty Default StyleDark",
            "NvimDark",
            "NvimLight",
            "PaleNightHC",
            "RetroLegends",
            "shades-of-purple",
            "SleepyHollow",
            "Aardvark Blue",
            "Abernathy",
            "Adventure",
            "AdventureTime",
            "Adwaita",
            "Adwaita Dark",
            "Afterglow",
            "Alabaster",
            "AlienBlood",
            "Andromeda",
            "Apple System Colors",
            "Apple System Colors Light",
            "arcoiris",
            "Ardoise",
            "Argonaut",
            "Arthur",
            "AtelierSulphurpool",
            "Atom",
            "AtomOneDark",
            "FrontEndDelight",
            "Aura",
            "Aurora",
            "ayu",
            "ayu_light",
            "Ayu Mirage",
            "Banana Blueberry",
            "Batman",
            "Belafonte Day",
            "Belafonte Night",
            "BirdsOfParadise",
            "Blazer",
            "Blue Matrix",
            "BlueBerryPie",
            "BlulocoDark",
            "BlulocoLight",
            "Borland",
            "Breeze",
            "Bright Lights",
            "Broadcast",
            "Brogrammer",
            "C64",
            "Calamity",
            "catppuccin-frappe",
            "catppuccin-latte",
            "catppuccin-macchiato",
            "catppuccin-mocha",
            "ENCOM",
            "Chalk",
            "Chalkboard",
            "ChallengerDeep",
            "Chester",
            "Ciapre",
            "citruszest",
            "CLRS",
            "Cobalt2",
            "Cobalt Neon",
            "CobaltNext",
            "CobaltNext-Dark",
            "CobaltNext-Minimal",
            "CrayonPonyFish",
            "Cyberdyne",
            "cyberpunk",
            "CyberpunkScarletProtocol",
            "Dark Modern",
            "Dark Pastel",
            "Dark+",
            "darkermatrix",
            "darkmatrix",
            "Darkside",
            "dayfox",
            "deep",
            "Desert",
            "detuned",
            "Dimidium",
            "DimmedMonokai",
            "Django",
            "DoomOne",
            "Doom Peacock",
            "DotGov",
            "Dracula",
            "Dracula+",
            "duckbones",
            "Duotone Dark",
            "Earthsong",
            "electron-highlighter",
            "Elegant",
            "Elemental",
            "Elementary",
            "Embark",
            "embers-dark",
            "terafox",
            "Espresso",
            "Espresso Libre",
            "Everblush",
            "Everforest Dark - Hard",
            "Fahrenheit",
            "Fairyfloss",
            "farmhouse-dark",
            "farmhouse-light",
            "Fideloper",
            "Firefly Traditional",
            "Firewatch",
            "FishTank",
            "Flat",
            "Flatland",
            "flexoki-dark",
            "flexoki-light",
            "Floraverse",
            "FirefoxDev",
            "Framer",
            "FunForrest",
            "Galaxy",
            "Galizur",
            "GitLab-Dark",
            "GitLab-Dark-Grey",
            "GitLab-Light",
            "Github",
            "GitHub-Dark-Colorblind",
            "GitHub-Dark-Default",
            "GitHub-Dark-Dimmed",
            "GitHub-Dark-High-Contrast",
            "GitHub-Light-Colorblind",
            "GitHub-Light-Default",
            "GitHub-Light-High-Contrast",
            "GitHub Dark",
            "Glacier",
            "Grape",
            "Grass",
            "Grey-green",
            "gruber-darker",
            "GruvboxDark",
            "GruvboxDarkHard",
            "GruvboxLight",
            "GruvboxLightHard",
            "gruvbox-material",
            "Guezwhoz",
            "Hacktober",
            "Hardcore",
            "Harper",
            "Havn Daggry",
            "Havn Skumring",
            "ForestBlue",
            "HaX0R_GR33N",
            "HaX0R_R3D",
            "heeler",
            "Highway",
            "Hipster Green",
            "Hivacruz",
            "Homebrew",
            "Hopscotch",
            "Hopscotch.256",
            "Horizon",
            "Horizon-Bright",
            "Hurtado",
            "Hybrid",
            "IC_Green_PPL",
            "IC_Orange_PPL",
            "iceberg-dark",
            "iceberg-light",
            "idea",
            "idleToes",
            "IR_Black",
            "IRIX Console",
            "IRIX Terminal",
            "iTerm2 Dark Background",
            "iTerm2 Default",
            "iTerm2 Light Background",
            "iTerm2 Pastel Dark Background",
            "iTerm2 Smoooooth",
            "iTerm2 Solarized Dark",
            "iTerm2 Solarized Light",
            "iTerm2 Tango Dark",
            "iTerm2 Tango Light",
            "Jackie Brown",
            "Japanesque",
            "Jellybeans",
            "JetBrains Darcula",
            "jubi",
            "Kanagawa Dragon",
            "Kanagawa Wave",
            "kanagawabones",
            "Kibble",
            "Kolorit",
            "Konsolas",
            "kurokula",
            "Lab Fox",
            "Laser",
            "Later This Evening",
            "Lavandula",
            "LiquidCarbon",
            "LiquidCarbonTransparent",
            "LiquidCarbonTransparentInverse",
            "lovelace",
            "Man Page",
            "Mariana",
            "Material",
            "MaterialDark",
            "MaterialDarker",
            "MaterialDesignColors",
            "MaterialOcean",
            "Mathias",
            "matrix",
            "Medallion",
            "Melange_dark",
            "Melange_light",
            "Mellifluous",
            "mellow",
            "miasma",
            "midnight-in-mojave",
            "Mirage",
            "Misterioso",
            "Molokai",
            "MonaLisa",
            "Apple Classic",
            "sonokai",
            "nord-light",
            "Monokai Classic",
            "Monokai Pro",
            "Monokai Pro Light",
            "Monokai Pro Light Sun",
            "Monokai Pro Machine",
            "Monokai Pro Octagon",
            "Monokai Pro Ristretto",
            "Monokai Pro Spectrum",
            "Monokai Remastered",
            "Monokai Soda",
            "Monokai Vivid",
            "N0tch2k",
            "neobones_dark",
            "neobones_light",
            "Neon",
            "Neopolitan",
            "Neutron",
            "Night Owlish Light",
            "nightfox",
            "NightLion v1",
            "NightLion v2",
            "niji",
            "Nocturnal Winter",
            "nord",
            "nord-wave",
            "xcodelighthc",
            "Novel",
            "Obsidian",
            "Ocean",
            "OceanicMaterial",
            "Oceanic-Next",
            "Ollie",
            "OneHalfDark",
            "OneHalfLight",
            "Operator Mono Dark",
            "Overnight Slumber",
            "Oxocarbon",
            "Pandora",
            "Paraiso Dark",
            "PaulMillr",
            "PencilDark",
            "PencilLight",
            "Peppermint",
            "Piatto Light",
            "Pnevma",
            "Popping and Locking",
            "primary",
            "Pro",
            "Pro Light",
            "Purple Rain",
            "purplepeter",
            "Rapture",
            "Raycast_Dark",
            "Raycast_Light",
            "rebecca",
            "Red Alert",
            "Red Planet",
            "Red Sands",
            "Relaxed",
            "Retro",
            "Rippedcasts",
            "rose-pine",
            "rose-pine-dawn",
            "rose-pine-moon",
            "Rouge 2",
            "Royal",
            "Ryuuko",
            "Sakura",
            "Scarlet Protocol",
            "SeaShells",
            "Seafoam Pastel",
            "seoulbones_dark",
            "seoulbones_light",
            "Seti",
            "Shaman",
            "Slate",
            "Smyck",
            "Snazzy",
            "Snazzy Soft",
            "SoftServer",
            "solarized-osaka-night",
            "Solarized Darcula",
            "Solarized Dark Higher Contrast",
            "Solarized Dark - Patched",
            "SpaceGray",
            "Spacedust",
            "SpaceGray Bright",
            "SpaceGray Eighties",
            "SpaceGray Eighties Dull",
            "Spiderman",
            "Spring",
            "Square",
            "Squirrelsong Dark",
            "srcery",
            "starlight",
            "Sublette",
            "Subliminal",
            "Sugarplum",
            "Sundried",
            "Symfonic",
            "synthwave",
            "synthwave-everything",
            "SynthwaveAlpha",
            "Tango Adapted",
            "Tango Half Adapted",
            "Teerb",
            "Terminal Basic",
            "Terminal Basic Dark",
            "Thayer Bright",
            "The Hulk",
            "Tinacious Design (Dark)",
            "Tinacious Design (Light)",
            "tokyonight",
            "tokyonight-day",
            "tokyonight_moon",
            "tokyonight_night",
            "tokyonight-storm",
            "Tomorrow",
            "Tomorrow Night",
            "Tomorrow Night Blue",
            "Tomorrow Night Bright",
            "Tomorrow Night Burns",
            "Tomorrow Night Eighties",
            "ToyChest",
            "Treehouse",
            "Twilight",
            "Ubuntu",
            "UltraViolent",
            "UltraDark",
            "UnderTheSea",
            "Unikitty",
            "Urple",
            "Vaughn",
            "Vesper",
            "VibrantInk",
            "vimbones",
            "Violet Dark",
            "Violet Light",
            "WarmNeon",
            "Wez",
            "Whimsy",
            "WildCherry",
            "wilmersdorf",
            "Wombat",
            "Wryan",
            "xcodedark",
            "xcodedarkhc",
            "xcodelight",
            "AtomOneLight",
            "xcodewwdc",
            "zenbones",
            "zenbones_dark",
            "zenbones_light",
            "Zenburn",
            "zenburned",
            "zenwritten_dark",
            "zenwritten_light",
        ]
        random.shuffle(themes)
        # get a random sample of 20 themes from the list
        # every time the docs are built, a different set of themes is shown :)
        for theme in themes[:20]:
            apply_theme(manim_scene=self, theme_name=theme, light_theme=True)

            ax = m.Axes(
                x_range=[0, 5],
                y_range=[0, 6],
                x_axis_config={"numbers_to_include": [2, 3]},
                tips=False,
            )

            labels = ax.get_axis_labels()

            curve_1 = ax.plot(lambda x: 4 * x - x ** 2, x_range=[0, 4], color=m.BLUE_C)
            curve_2 = ax.plot(
                lambda x: 0.8 * x ** 2 - 3 * x + 4,
                x_range=[0, 4],
                color=m.GREEN_B,
            )

            line_1 = ax.get_vertical_line(ax.input_to_graph_point(2, curve_1), color=m.YELLOW)
            line_2 = ax.get_vertical_line(ax.i2gp(3, curve_1), color=m.YELLOW)

            riemann_area = ax.get_riemann_rectangles(curve_1, x_range=[0.3, 0.6], dx=0.03, color=m.BLUE, fill_opacity=0.5)
            area = ax.get_area(curve_2, [2, 3], bounded_graph=curve_1, color=m.GREY, opacity=0.5)

            graph_group = m.VGroup(ax, labels, curve_1, curve_2, line_1, line_2, riemann_area, area)
            graph_group.scale(0.5)
            graph_group.to_edge(m.LEFT)

            theme_label = m.Text(
                text=theme,
                font="Courier New",
            )
            theme_label.to_edge(m.UP, buff=0.5)

            m0 = m.Dot()
            m1 = m.AnnotationDot()
            m2 = m.LabeledDot("ii")
            m3 = m.LabeledDot(m.MathTex(r"\alpha").set_color(m.ORANGE))
            m4 = m.CurvedArrow(2 * m.LEFT, 2 * m.RIGHT, radius=-5)
            m5 = m.CurvedArrow(2 * m.LEFT, 2 * m.RIGHT, radius=8)
            m6 = m.CurvedDoubleArrow(m.ORIGIN, 2 * m.RIGHT)

            m_group = m.VGroup(m0, m1, m2, m3, m4, m5, m6).arrange(m.DOWN, buff=0.2)

            m_group.next_to(graph_group, m.RIGHT)

            circle = m.Circle()
            square = m.Square()

            geo_group = m.VGroup(circle, square).arrange(m.DOWN, buff=0.2)
            geo_group.next_to(m_group, m.RIGHT)

            self.add(graph_group, theme_label, m_group, geo_group)

            self.wait(0.5)

            self.remove(graph_group, theme_label, m_group, geo_group)

if __name__ == '__main__':
    import os
    from pathlib import Path

    FLAGS = "-pqm"
    SCENE = "ThemeCarouselObjects"

    file_path = Path(__file__).resolve()
    os.system(f"manim {Path(__file__).resolve()} {SCENE} {FLAGS}")
Next
Example Themes
Previous
Home
Copyright © 2025, Alexander Nasuta
Made with Sphinx and @pradyunsg's Furo