gpt4 book ai didi

r - 如何修改我的 R 代码来绘制这种甘特图?

转载 作者:行者123 更新时间:2023-12-04 11:06:54 25 4
gpt4 key购买 nike

大家

在 R 中使用以下代码,我显示了一个简单的甘特图:

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

现在我如何修改这段代码才能从 csv 文件中获取这些数据:

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

绘制这样的甘特图

enter image description here

非常感谢任何回复!

最佳答案

扩展@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

产生:

ggplot2 Gantt Chart

编辑以生成居中标签

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

这反过来产生:

ggplot2 with centred labels

关于r - 如何修改我的 R 代码来绘制这种甘特图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com