跟着高分SCI学画图: R语言绘制甘特图

文摘   2024-09-14 19:57   德国  

     跟着高分SCI学画图:R语言绘制甘特图

甘特图(Gantt Chart)是一种项目管理工具,用于直观显示项目计划、任务的进度和时间安排。它通常以条形图的形式表示各任务的开始时间、结束时间以及任务的持续时间。

图一.甘特图

一、你好!甘特图

甘特图的组成部分和各部分的作用

  1. 时间轴:甘特图的水平轴通常代表时间,可以是天、周、月,甚至是小时,具体取决于项目的时间跨度。
  2. 任务列表:垂直轴列出项目中的任务、活动或里程碑。每个任务都对应一个条形。
  3. 条形长度:条形的长度表示任务的持续时间。条形的起点和终点分别表示任务的开始时间和结束时间。
  4. 依赖关系:甘特图可以显示任务之间的依赖关系。例如,一个任务可能在另一个任务完成之前无法开始,这种依赖关系通常通过箭头或连接线表示。
  5. 任务状态:通过不同颜色、填充或图案,可以显示任务的状态(如未开始、进行中、已完成等)。

甘特图的用途

  1. 项目计划:甘特图帮助项目经理和团队成员了解任务的时间安排、任务持续时间及各任务的优先级。
  2. 进度跟踪:通过甘特图,可以轻松查看项目的实际进展情况,确保项目按计划进行。
  3. 资源分配:它帮助团队识别资源冲突和工作负荷不平衡,并做出相应调整。
  4. 沟通工具:甘特图是与团队成员、客户和其他利益相关者分享项目进度的有力工具。

二、开始画图啦!

首先我们先介绍几个本次绘图用到的有特色的函数!

  • geom_sf:绘制空间对象(sf对象)的几何形状。世界各国的海岸线形状,就是用它绘制的哦!
  • coord_sf:设置坐标系统,指定地图使用Eckert IV投影。

数据展示

图2.癌症类型和转移

加载R包

library(ggplot2)
library(dplyr)

读取数据

data <- read.csv("test_data.csv")

data$means <- apply(data[,c(2,3)], 1, mean)

head(data)


table(data$metastasis)

data$color <- gsub("Bone Met.""#947559", data$metastasis)
data$color <- gsub("Lung Met.""#8678b0", data$color)
data$color <- gsub("Brain Met.""#9f436b", data$color)
data$color <- gsub("Liver Met.""#9abc6d", data$color)
data$color[which(data$color == "Primary")] <- c("#c97d80","#bba7cb",
                                                "#c1d9ec""#f1bac8")

绘图

对组内数据,根据means从大到小重排:

data2 <- data %>% 
  arrange(CancerType, means) %>% 
  ungroup %>%
  mutate(id=rep(c(1:5),4))
data2 <- data %>% 
  arrange(CancerType, means) %>% 
  ungroup %>%
  mutate(id=rep(c(1:5),4))

设置颜色变量

cols <- data$color
names(cols) <- cols

最终绘图代码

ggplot(data2)+
  # 这行代码构建空坐标系用:
  geom_point(aes(x=means, y=CancerType), color = "white")+
  # 背景阴影1:
  geom_rect(aes(xmin=0, xmax=Inf, ymin=1.5, ymax=2.5), fill = "#e6e6e6")+
  # 背景阴影2:
  geom_rect(aes(xmin=0, xmax=Inf, ymin=3.5, ymax=4.5), fill = "#e6e6e6")+
  
  # 虚线:
  geom_linerange(aes(xmin = 0, xmax = high, 
                     y = CancerType, group = id),
                 position = position_dodge(width = 0.5), 
                 linetype = "dashed")+
  # 方块:
  geom_tile(aes(x = means, y = CancerType, 
                height = 0.4, width = high-low,
                group = id, fill = color),
            color = "black",
            position = position_dodge(width = 0.5), 
            size = 0.3)+
  # 均值点:
  geom_point(aes(x=means, y=CancerType, group = id, fill=color), 
             shape=21, color = "black",
             position = position_dodge(width = 0.5), 
             size=3)+
  # 标签:
  geom_text(aes(label = paste0(metastasis, "(",number,")"), 
                x=high+0.08, y=CancerType, group = id), 
            position = position_dodge(width = 0.5), size=3)+
  # 主题:
  theme_classic() +
  # 去掉图形与坐标轴间隙并设置x轴刻度:
  scale_x_continuous(expand = c(0,0),
                     breaks = seq(0, 1.25, 0.25))+
  scale_fill_manual(values = cols)+
  # 修改x轴和y轴标签:
  xlab("Area Under Kaplan-Meier Plot of Overall Survival\n(40 months follow-up)")+
  ylab("")+
  # 自定义主题:
  theme(legend.position = "none",
        axis.ticks.y = element_blank(),
        axis.text.y = element_text(angle=90, hjust = 0.5, vjust = 2,
                                   size = 10, color = "black"))

ggsave("gantt_chart.png", height = 7, width = 6)


图3.甘特图

总结

甘特图是项目管理中不可或缺的工具,尤其适用于计划和监控项目进度。它直观且易于理解,但在面对大型项目或频繁变化时需要额外的注意和维护。


本文作者:杨硕龄


现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着高分SCI学画图:R语言绘制甘特图》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。



科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章