今天,在群里看见有人问R能不能绘制甘特图,觉得很有意思 ,就动手试了一下,虽说很丑,但也说明R几乎无所不能。
代码如下:
- GanttChart <- function(program,startdate,enddate,title = NA)
- {
- startdate <- as.Date(startdate)
- enddate <- as.Date(enddate)
- if(sum(startdate > enddate) > 0)
- {
- stop('error:start date is later than end date.')
- }
- progrm <- length(program):1
- plot(NA,NA,
- xlim = c(min(startdate),max(enddate)),
- ylim = range(progrm),
- xlab = '日期',
- ylab = '项目',
- xaxt = 'n',
- yaxt = 'n',
- main = title)
- startUnionEnd <- as.Date(origin = '1970-01-01',union(startdate,enddate))
- axis(1,startUnionEnd,startUnionEnd)
- axis(2,progrm,program)
- segments(startdate,progrm,enddate,progrm,lwd = 5)
- abline(v = startUnionEnd)
- }
- program <- c('P1','P2','P3','P4')
- startdate <- seq(from = as.Date('1994-09-02'),by = 5,length.out = 4)
- enddate <- seq(from = as.Date('1994-10-21'),by = 5,length.out = 4)
- GanttChart(program,startdate,enddate,'GANTT CHART')