knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
Abstract. The plan
package provides functions for planning and
describing projects and monitoring the progress towards completions of
individual tasks within projects.
This package provides (mainly graphical) tools for the planning of projects. This is an early version of the package, providing support for burn-down charts and Gantt diagrams.
Burndown charts^[http://alistair.cockburn.us/crystal/articles/evabc/earnedvalueandburncharts.htm] are used to display a time series of the progress towards the goals of a project. The format is simple. The x axis represents time, ranging from the onset of the project to the deadline for completion. The y axis represents the remaining effort that is require to accomplish the work. As the work is carried out, the chart provides a running summary of progress towards the deadline. If work is proceeding smoothly according to schedule, the chart takes the form of a triangle, with the remaining effort falling from its initial value to zero at the deadline. For guidance, a gray line is drawn to indicate this ideal situation. If work is being accomplished faster than expected, the data will lie below this gray line. However, if the project is falling behind schedule, the data line will lie above the ideal line. Thus, a glance at the chart indicates whether the deadline can be met. In most cases, the work is divided into sub-tasks, and the remaining effort in each task is shown with a different colour in the chart. This is helpful in identifying tasks that may need more attention.
The following plots the burndown chart
library("plan") data(burndown) plot(burndown)
To work with your own files, use read.burndown()
.
Gantt diagrams^[http://en.wikipedia.org/wiki/Gantt_Chart] indicate a timetable
for completion of the components of a project. The sample dataset gantt
is a
hypothetical research plan for an MSc project; you can see how it is graphed
with demo(gantt)
or example(plot.gantt)
.
The following plots the built-in Gantt diagram. If this seems promising, the
reader should continue reading, to learn how to make objects of gantt-class
.
If not, the best is to try some other software, because only minimal
customization is permitted by the plot,gantt-method
.
library("plan") data(gantt) plot(gantt)
There are three ways to create objects of gantt-class
: (a) write information
in a text file and use read.gantt()
, (b) use as.gantt()
to assemble the
object in one (somewhat complicated) step, or (c) use new()
to create an
object and then ganttAddTask()
to add tasks one by one. The third approach
may be the easiest for beginners, so it is illustrated below, with a sketch of
a typical oceanography MSc program. Note that a legend is added, along with an
indication of the time at which the graph was prepared.
library("plan") g <- new("gantt") g <- ganttAddTask(g, "Courses") # no times, so a heading g <- ganttAddTask(g, "Physical Oceanography", "2016-09-03", "2016-12-05", done=100) g <- ganttAddTask(g, "Chemistry Oceanography", "2016-09-03", "2016-12-05", done=100) g <- ganttAddTask(g, "Fluid Dynamics", "2016-09-03", "2016-12-05", done=100) g <- ganttAddTask(g, "Biological Oceanography", "2017-01-03", "2017-04-05") g <- ganttAddTask(g, "Geological Oceanography", "2017-01-03", "2017-04-05") g <- ganttAddTask(g, "Time-series Analysis", "2017-01-03", "2017-04-05") g <- ganttAddTask(g, "Research") # no times, so a heading g <- ganttAddTask(g, "Literature review", "2016-09-03", "2017-02-01", done=20) g <- ganttAddTask(g, "Develop analysis skills", "2016-09-03", "2017-08-01", done=30) g <- ganttAddTask(g, "Thesis work", "2016-10-01", "2018-04-01") g <- ganttAddTask(g, "Defend thesis proposal", "2017-05-01", "2017-06-01") g <- ganttAddTask(g, "Write papers & thesis", "2017-03-01", "2018-04-01") g <- ganttAddTask(g, "Defend thesis", "2018-05-01", "2018-05-15") font <- ifelse(is.na(g[["start"]]), 2, 1) plot(g, ylabel=list(font=font), event.time="2017-01-01", event.label="Report Date") par(lend="square") # default is round legend("topright", pch=22, pt.cex=2, pt.bg=gray(c(0.3, 0.9)), border="black", xpd=NA, legend=c("Completed", "Not Yet Done"), title="MSc plan", bg="white")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.