Gantt charts

From Wiki
Jump to navigation Jump to search

Gantt is a (third party) ConTeXt module for drawing Gantt charts via MetaPost or PGF/TikZ.

Description

To switch between the two drawing engines (MetaPost and TikZ) use the style option.

\usemodule[gantt][alternative=mp]
\usemodule[gantt][alternative=tikz]

The default engine is MetaPost.


Here is a short description of the environments and commands:

Gantt

The gantt environment draws the canvas of a gantt figure.

\startgantt[...]{no of Tasks to plot}{no of time slots}

The optional argument [...] can be filled in a key=value syntax, using one or more of the following keys:

  • factor - MetaPost scale factor (default: 1)
  • xunitlength - length of one time slot (default: 1cm)
  • style - fontsize of labels (default: \tf)
  • titlestyle - fontsize of title section (default: \tfx)
  • drawledgerline - switch to enable/disable the drawing of horizontal ledger lines (default value: false)

Ganttitle

This is the environment for drawing the title section.

\startganttitle (...) \stopganttitle

Titleelement

This draws one element of the title.

\titleelement{label}{length}

Numtitle

This draws a numbered sequence of title elements.

\numtitle{start number}{increment}{end number}{length of each title element}

Ganttbar

This draws a single, unconnected bar for representing a task.

\ganttbar[pattern=value,color=value]{label}{start}{length}

The optional comma separated arguments are:

  • <pattern> - TikZ pattern (e.g. north east lines (default), north west lines, crosshatch, crosshatch dots, grid, …) or see Regressions section for MetaPost
  • <color> - a color of the pattern (e.g. black (default), red, green blue gray, dark gray)

Ganttcon

This draws an arrow between the bars specified by coordinates.

\ganttcon{startx}{starty}{endx}{endy}

Ganttbarcon

This draws a single bar and connects the bar with the previous bar for consecutive tasks.

\ganttbarcon[pattern=value,color=value]{label}{start}{length}

The optional pattern argument are the same as for \ganttbar.

Ganttgroup

This draws a bar to group tasks.

\ganttgroup{label}{start}{length}

Ganttmilestone

This draws a milestone using a diamond.

\ganttmilestone[color=value]{label}{start}

The optional color argument argument is:

  • <color> - a color of the pattern (e.g. black (default), red, green blue gray, dark gray)

Ganttmilestonecon

This draws a milestone using a diamond and connects the milestone with the previous bar or milestone.

\ganttmilestonecon[color=value]{label}{start}

The optional color argument argument is:

  • <color> - a color of the pattern (e.g. black (default), red, green blue gray, dark gray)

Examples

Minimal example

\usemodule[gantt]
\setuppagenumbering[location=]

\starttext
  \startgantt{7}{12}
    \startganttitle
      \numtitle{1}{1}{12}{1}
    \stopganttitle
    \ganttbar{a task}{0}{2}
    \ganttbarcon{a consecutive task}{2}{4}
    \ganttbarcon{another consecutive task}{8}{2}
    \ganttbar{another task}{2}{2}
    \ganttbar{another task}{4}{2}
    \ganttbar{another task}{4}{2}
    \ganttcon{4}{4}{4}{6}
  \stopgantt
\stoptext

gantt-minimal.jpg

Similar example using names of calendar months

\usemodule[gantt]
\setuppagenumbering[location=]

\starttext
  \startgantt{3}{12}
    \startganttitle
      \titleelement{Jan}{1}
      \titleelement{Feb}{1}
      \titleelement{Mar}{1}
      \titleelement{Apr}{1}
      \titleelement{May}{1}
      \titleelement{Jun}{1}
      \titleelement{Jul}{1}
      \titleelement{Aug}{1}
      \titleelement{Sep}{1}
      \titleelement{Oct}{1}
      \titleelement{Nov}{1}
      \titleelement{Dec}{1}
    \stopganttitle
    \ganttbar{Task 1}{0}{2}
    \ganttbarcon{a consecutive task}{2}{4}
  \stopgantt
\stoptext

gantt-calendar.jpg

Multiple titles with different length

\usemodule[gantt]
\setuppagenumbering[location=]

\starttext
  \startgantt{4}{12}
    \startganttitle
      \numtitle{2010}{1}{2012}{4}
    \stopganttitle
    \startganttitle
      \numtitle{1}{1}{4}{1}
      \numtitle{1}{1}{4}{1}
      \numtitle{1}{1}{4}{1}
    \stopganttitle
    \ganttbar{Task 1}{0}{2}
    \ganttbarcon{a consecutive task}{2}{4}
  \stopgantt
\stoptext

gantt-titles.jpg

Milestone example

\usemodule[gantt]
\setuppagenumbering[location=]

\starttext
  \startgantt{10}{12}
    \startganttitle
      \numtitle{1}{1}{12}{1}
    \stopganttitle
    \ganttbar{a task}{0}{2}
    \ganttbarcon{a consecutive task}{2}{4}
    \ganttbarcon{another consecutive task}{8}{2}
    \ganttmilestone[color=cyan]{Milestone with color!}{4}
    \ganttbar{another task}{2}{2}
    \ganttbar[color=cyan]{another coloured task}{4}{4}
    \ganttbar{another task}{4}{2}
    \ganttcon{4}{5}{4}{7}
    \ganttmilestonecon{A connected Milestone}{7}
    \ganttbarcon{another consecutive task}{8}{2}
  \stopgantt
\stoptext

gantt-milestone.jpg

More complex example (using groups and optional arguments)

\usemodule[gantt]
\setuppapersize[A4,landscape][A4,landscape]
\setuplayout[scale=0.8]
\setuppagenumbering[location=]

\starttext
  \startgantt[xunitlength=0.5cm,style=\tfx,titlestyle=\tfx,drawledgerline=true]{10}{48}
    \startganttitle
      \titleelement{2009}{7}
      \numtitle{2010}{1}{2012}{12} 
      \titleelement{2013}{5}
    \stopganttitle
    \startganttitle
      \numtitle{6}{1}{12}{1} 
      \numtitle{1}{1}{12}{1} 
      \numtitle{1}{1}{12}{1} 
      \numtitle{1}{1}{12}{1} 
      \numtitle{1}{1}{5}{1} 
    \stopganttitle
    \ganttbar{task 1}{2}{17} 
    \ganttgroup{a group of tasks}{6}{18}
    \ganttbar{task 2}{5}{10} 
    \ganttbar[color=blue]{task 3}{15}{3}  
    \ganttbar{task 4}{20}{3}  
    \ganttcon{15}{4}{20}{6}
    \ganttbar{task 5}{15}{5} 
    \ganttbarcon[color=red]{task 6}{20}{5}
    \ganttbarcon{task 7}{30}{5}
  \stopgantt
\stoptext

gantt-complex.jpg

Regressions

There are no default color patterns in MetaPost. This needs to be implemented separately in order to have a pattern option in this module.

As a temporary solution the hatching MetaPost package is used.

See also