Difference between revisions of "Gantt charts"

From ConTeXt wiki
(modules for gantt charts)
 
(adjusted to the gantt module in garden)
Line 1: Line 1:
There are two modules for creating Gantt diagrams for ConTeXt:
+
< [[Modules]] | [[Graphics]] | [[Gantt charts]] | [[MetaPost]] | [[TikZ]] >
  
* [[Gantt]] (implemented using [[MetaPost]], '''recommended''')
+
[http://modules.contextgarden.net/gantt Gantt] is a (third party) [[Modules | ConTeXt module]] for drawing Gantt charts via MetaPost or PGF/TikZ.
* [[Gantt-tikz]] (implemented using [[TikZ]])
 
  
Both share the same syntax and features.
+
== Description ==
 +
 
 +
To switch between the two drawing engines (MetaPost and TikZ) use the style option.
 +
<texcode>\usemodule[gantt][style=mp]</texcode>
 +
<texcode>\usemodule[gantt][style=tikz]</texcode>
 +
 
 +
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.
 +
<texcode>\startgantt[...]{no of Tasks to plot}{no of time slots}</texcode>
 +
The optional argument [...] can be filled in a key=value syntax, using one or more of the following keys:
 +
 
 +
* ''sf'' - MetaPost scale factor (default: 1)
 +
* ''xunitlength'' - length of one time slot (default: 1cm)
 +
* ''fontsize'' - fontsize of labels (default: \tf)
 +
* ''titlefontsize'' - 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.
 +
<texcode>\startganttitle (...) \stopganttitle</texcode>
 +
 
 +
=== Titleelement ===
 +
This draws one element of the title.
 +
<texcode>\titleelement{label}{length}</texcode>
 +
 
 +
=== Numtitle ===
 +
This draws a numbered sequence of title elements.
 +
<texcode>\numtitle{start number}{increment}{end number}{length of each title element}</texcode>
 +
 
 +
=== Ganttbar ===
 +
This draws a single, unconnected bar for representing a task.
 +
<texcode>\ganttbar[pattern=value,color=value]{label}{start}{length}</texcode>
 +
The optional comma separated arguments are:
 +
 
 +
* ''<pattern>'' - TikZ pattern (e.g. north east lines (default), north west lines, crosshatch, crosshatch dots, grid, …) or see [[Gantt#Regressions | 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.
 +
<texcode>\ganttcon{startx}{starty}{endx}{endy}</texcode>
 +
 
 +
=== Ganttbarcon ===
 +
This draws a single bar and connects the bar with the previous bar for consecutive tasks.
 +
<texcode>\ganttbarcon[pattern=value,color=value]{label}{start}{length}</texcode>
 +
The optional pattern argument are the same as for \ganttbar.
 +
 
 +
=== Ganttgroup ===
 +
This draws a bar to group tasks.
 +
<texcode>\ganttgroup{label}{start}{length}</texcode>
 +
 
 +
=== Ganttmilestone ===
 +
This draws a milestone using a diamond.
 +
<texcode>\ganttmilestone[color=value]{label}{start}</texcode>
 +
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.
 +
<texcode>\ganttmilestonecon[color=value]{label}{start}</texcode>
 +
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 ===
 +
<texcode>
 +
\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
 +
</texcode>
 +
 
 +
 
 +
=== Similar example using names of calendar months ===
 +
<texcode>
 +
\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
 +
</texcode>
 +
 
 +
 
 +
=== Multiple titles with different length ===
 +
<texcode>
 +
\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
 +
</texcode>
 +
 
 +
 
 +
=== Milestone example ===
 +
<texcode>
 +
\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
 +
</texcode>
 +
 
 +
 
 +
=== More complex example (using groups and optional arguments) ===
 +
<texcode>
 +
\usemodule[gantt]
 +
\setuppapersize[landscape][landscape]
 +
\setuplayout[scale=0.8]
 +
\setuppagenumbering[location=]
 +
 
 +
\starttext
 +
  \startgantt[xunitlength=0.5cm,fontsize=\tfx,titlefontsize=\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
 +
</texcode>
 +
 
 +
 
 +
== 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 [http://www.ctan.org/tex-archive/graphics/metapost/contrib/macros/hatching/ hatching] MetaPost package is used.
 +
 
 +
== See also ==
 +
 
 +
* [http://www.ctan.org/pkg/pgfgantt Draw Gantt charts with TikZ]
 +
* [http://www.martin-kumm.de/tex_gantt_package.php A LaTeX package for drawing gantt plots using pgf/tikz]
 +
* [http://www.kese.hu/p/tikz.html Gantt Chart with TikZ]
 +
 
 +
[[Category:Modules]]
 +
[[Category:Graphics]]
 +
[[Category:Metapost]]

Revision as of 17:51, 11 September 2011

< Modules | Graphics | Gantt charts | MetaPost | TikZ >

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][style=mp]
\usemodule[gantt][style=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:

  • sf - MetaPost scale factor (default: 1)
  • xunitlength - length of one time slot (default: 1cm)
  • fontsize - fontsize of labels (default: \tf)
  • titlefontsize - 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


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


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


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


More complex example (using groups and optional arguments)

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

\starttext
  \startgantt[xunitlength=0.5cm,fontsize=\tfx,titlefontsize=\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


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