How to change my R code to build such a gantt diagram?

all

with the following code in R, I show a simple gantt diagram:

dat <- read.csv2(text="start;duration 1;4 7;3 15;2 ") plot(NA, xlim=c(0,20), ylim=c(0,9), ylab="",xlab="X", xaxt="n", yaxt="n") with(dat, segments(x0=start, x1=start+duration, y0=2,y1=2)) with(dat, text( start+duration/2, 2.5, labels=duration)) axis(1, at=seq(0,20,by=2), labels=seq(0,20,by=2)) 

enter image description here

Now How can I change this code to be able to use this data in a csv file:

 A; 2; 7; B; 5; 10; C; 5; 12; D; 16; 22; E; 18; 20; 

to build such a gantt diagram

enter image description here

Thanks so much for any answer!

+2
source share
2 answers

Extension of the answer suggested by @Tyler Rinker:

 library(ggplot2) df <- read.table(text="Task, Start, End A,2,7 B,5,10 C,5,12 D,16,22 E,18,20", header=TRUE, sep = ',') p <- ggplot(df, aes(colour=Task)) p <- p + theme_bw() p <- p + geom_segment(aes(x=Start, xend=End, y=Task, yend=Task), size=2) p <- p + geom_point(aes(x=Start, y=Task), size=5) p <- p + geom_point(aes(x=End, y=Task), size=5) p <- p + geom_text(aes(x=Start-0.5, y=Task, label=Task), fontface="bold") p <- p + opts(legend.position="None", panel.grid.major = theme_blank(), axis.text.y = theme_blank()) p <- p + xlab("Duration") p 

It produces:

ggplot2 gantt chart

EDIT to create centered marks

 library(ggplot2) df <- read.table(text="Task, Start, End A,2,7 B,5,10 C,5,12 D,16,22 E,18,20", header=TRUE, sep = ',') df$TaskLabel <- df$Task df$Task <- as.numeric(df$Task) p <- ggplot(df, aes(colour=TaskLabel)) p <- p + theme_bw() p <- p + geom_segment(aes(x=Start, xend=End, y=Task, yend=Task), size=2) p <- p + geom_point(aes(x=Start, y=Task), size=5) p <- p + geom_point(aes(x=End, y=Task), size=5) p <- p + geom_text(aes(x=(Start+End)/2, y=Task+0.25, label=TaskLabel), fontface="bold") p <- p + opts(legend.position="None", panel.grid.major = theme_blank(), axis.text.y = theme_blank()) p <- p + xlab("Duration") p 

Which in turn produces:

ggplot2 with centred labels

+8
source

using vistime package:

 install.packages('vistime') library(vistime) df <- read.table(text="Task, Start, End A,2,7 B,5,10 C,5,12 D,16,22 E,18,20", header=TRUE, sep = ',') df$Start <- as.Date("2017-01-01") + df$Start df$End <- as.Date("2017-01-01") + df$End vistime(df, start="Start", end="End", events="Task") 

enter image description here

https://github.com/shosaco/vistime

0
source

Source: https://habr.com/ru/post/915412/


All Articles