Gantt Charts

Example: MyGanttExampleScene

../_images/MyGanttExampleScene-1.png

Code: MyGanttExampleScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.gantt_utils import GanttUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MyGanttExampleScene(GanttUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta


    def construct(self):

        gantt_data = [
            {'Task': 'Job 0', 'Start': 5, 'Finish': 16, 'Resource': 'Machine 0'},
            {'Task': 'Job 0', 'Start': 28, 'Finish': 31, 'Resource': 'Machine 1'},
            {'Task': 'Job 0', 'Start': 31, 'Finish': 34, 'Resource': 'Machine 2'},
            {'Task': 'Job 0', 'Start': 34, 'Finish': 46, 'Resource': 'Machine 3'},
            {'Task': 'Job 1', 'Start': 0, 'Finish': 5, 'Resource': 'Machine 0'},
            {'Task': 'Job 1', 'Start': 5, 'Finish': 21, 'Resource': 'Machine 2'},
            {'Task': 'Job 1', 'Start': 21, 'Finish': 28, 'Resource': 'Machine 1'},
            {'Task': 'Job 1', 'Start': 28, 'Finish': 32, 'Resource': 'Machine 3'}
        ]

        gantt_chart = self.gantt_chart_without_ticks(
            width=4, height=2, data=gantt_data, n_machines=4, resource_naming="Machine"
        )

        self.play(
            self.set_title_row(
                title="GanttUtils",
                seperator=": ",
                subtitle="gantt_chart_without_ticks",
            ),
            m.FadeIn(gantt_chart)
        )


if __name__ == '__main__':
    MyGanttExampleScene.render_video_medium()

Example: MySecondGanttExampleScene

Code: MySecondGanttExampleScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.gantt_utils import GanttUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MySecondGanttExampleScene(GanttUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        gantt_data = [
            {'Task': 'Job 0', 'Start': 5, 'Finish': 16, 'Resource': 'Machine 0'},
            {'Task': 'Job 0', 'Start': 28, 'Finish': 31, 'Resource': 'Machine 1'},
            {'Task': 'Job 0', 'Start': 31, 'Finish': 34, 'Resource': 'Machine 2'},
            {'Task': 'Job 0', 'Start': 34, 'Finish': 46, 'Resource': 'Machine 3'},
            {'Task': 'Job 1', 'Start': 0, 'Finish': 5, 'Resource': 'Machine 0'},
            {'Task': 'Job 1', 'Start': 5, 'Finish': 21, 'Resource': 'Machine 2'},
            {'Task': 'Job 1', 'Start': 21, 'Finish': 28, 'Resource': 'Machine 1'},
            {'Task': 'Job 1', 'Start': 28, 'Finish': 32, 'Resource': 'Machine 3'}
        ]

        gantt_chart = self.gantt_chart_without_ticks(
            width=4, height=2, data=gantt_data, n_machines=4, resource_naming="Machine"
        )

        self.play(
            self.set_title_row(
                title="GanttUtils",
                seperator=": ",
                subtitle="gantt_chart_without_ticks",
            ),
            m.FadeIn(gantt_chart)
        )
        self.wait(1)


        gantt_data2 = [
            {'Task': 'Order 0', 'Start': 0, 'Finish': 27, 'Resource': 'Line 1'},
            {'Task': 'Order 1', 'Start': 16, 'Finish': 36, 'Resource': 'Line 0'},
            {'Task': 'Order 2', 'Start': 26, 'Finish': 41, 'Resource': 'Line 2'},
            {'Task': 'Order 3', 'Start': 36, 'Finish': 56, 'Resource': 'Line 0'},
            {'Task': 'Order 4', 'Start': 0, 'Finish': 10, 'Resource': 'Line 0'},
            {'Task': 'Order 5', 'Start': 37, 'Finish': 47, 'Resource': 'Line 1'},
            {'Task': 'Order 6', 'Start': 10, 'Finish': 16, 'Resource': 'Line 0'},
            {'Task': 'Order 7', 'Start': 8, 'Finish': 13, 'Resource': 'Line 2'},
            {'Task': 'Order 8', 'Start': 0, 'Finish': 8, 'Resource': 'Line 2'},
            {'Task': 'Order 9', 'Start': 13, 'Finish': 26, 'Resource': 'Line 2'},
            {'Task': 'Order 10', 'Start': 27, 'Finish': 37, 'Resource': 'Line 1'},
            {'Task': 'Order 11', 'Start': 64, 'Finish': 71, 'Resource': 'Line 0'},
            {'Task': 'Order 12', 'Start': 73, 'Finish': 78, 'Resource': 'Line 1'},
            {'Task': 'Order 13', 'Start': 73, 'Finish': 79, 'Resource': 'Line 0'},
            {'Task': 'Order 14', 'Start': 76, 'Finish': 80, 'Resource': 'Line 2'},
            {'Task': 'Order 15', 'Start': 68, 'Finish': 72, 'Resource': 'Line 2'},
            {'Task': 'Order 16', 'Start': 67, 'Finish': 73, 'Resource': 'Line 1'},
            {'Task': 'Order 17', 'Start': 52, 'Finish': 68, 'Resource': 'Line 2'},
            {'Task': 'Order 18', 'Start': 55, 'Finish': 59, 'Resource': 'Line 1'},
            {'Task': 'Order 19', 'Start': 60, 'Finish': 64, 'Resource': 'Line 0'},
            {'Task': 'Order 20', 'Start': 56, 'Finish': 60, 'Resource': 'Line 0'},
            {'Task': 'Order 21', 'Start': 45, 'Finish': 52, 'Resource': 'Line 2'},
            {'Task': 'Order 22', 'Start': 59, 'Finish': 67, 'Resource': 'Line 1'},
            {'Task': 'Order 23', 'Start': 47, 'Finish': 55, 'Resource': 'Line 1'},
            {'Task': 'Order 24', 'Start': 41, 'Finish': 45, 'Resource': 'Line 2'},
            {'Task': 'Order 25', 'Start': 72, 'Finish': 76, 'Resource': 'Line 2'}
        ]

        self.play(
            m.Transform(
                gantt_chart,
                self.gantt_chart_without_ticks(
                    width=4,
                    height=2,
                    data=gantt_data2,
                    n_machines=3,
                    resource_naming="Line"
                )
            ),
        )
        self.wait(1)

        self.fade_out_scene()


if __name__ == '__main__':
    MySecondGanttExampleScene.render_video_medium()