21 авг. 2010 г.

Построение диаграмм Ганта в R

Диаграмма Ганта (Gantt chart) — это инструмент для управления проектами.

Каждый проект имеет цель, временную шкалу. Проекты используют ресурсы. Все проекты состоят из взаимозависимых, индивидуальных шагов, называемых задачами. По своему характеру проекты являются динамическими процессами.

Диаграмма Ганта является удобным и простым инструментом представления структуры задач, наглядно отражающий ход работы над проектом. Первый формат диаграммы был разработан Генри Л. Гантом в 1910 г. Основу диаграммы составляет таблица, в которой перечислены задания и временная диаграмма ресурсов.

В этой публикации описано, как с помощью статистического пакета R описать и нарисовать диаграмму Ганта (этот рисунок впоследствии может быть экспортирован как TikZ и включён в код LaTeX'a).

Вначале следует загрузить нужную библиотеку, частью которой является команда gantt.chart():

> library(plotrix)

Создадим теперь список задач, из которых состоит наш проект:


> Ymd.format<-"%Y/%m/%d" # указываем на вид вводимых дат: год/месяц/день
> gantt.info<-list(labels=c("First task","Second task","Third task","Fourth task","Fifth task"),
starts=as.POSIXct(strptime(c("2004/01/01","2004/02/02","2004/03/03","2004/05/05","2004/09/09"),
format=Ymd.format)),ends=as.POSIXct(strptime(c("2004/03/03","2004/05/05","2004/05/05","2004/08/08","2004/12/12"),format=Ymd.format)),priorities=c(1,2,3,4,5))


Очевидно, что сначала идут имена задач (labels), потом, соответственно, — время их начала (starts) и окончания (ends) в заданном ранее формате, и наконец их приоритетность.

Укажем теперь программе, как именно ставить метки на временной оси:


> vgridpos<-as.POSIXct(strptime(c("2004/01/01","2004/02/01","2004/03/01","2004/04/01","2004/05/01","2004/06/01","2004/07/01","2004/08/01","2004/09/01","2004/10/01","2004/11/01","2004/12/01"),format=Ymd.format))


И как они будут называться на готовой диаграмме:


> vgridlab<-c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")


Финал, строим собственно саму диаграмму:


> gantt.chart(gantt.info,main="Calendar date Gantt chart (2004)",priority.legend=TRUE,vgridpos=vgridpos,vgridlab=vgridlab,hgrid=TRUE)



Комментариев нет: