仅使用yyyy,而不使用dd-mm-yyy在R中创建甘特图/时间线

问题描述 投票:-1回答:1

我正在总结不同试验在其参考部分中引用的证据。我想在图表上显示最早和最新引用的论文以及实际试验的发布年份。我已经尝试过使用ggplot,基本绘图功能和googleVis解决方案,但是没有运气。

[我想要的有点像甘特图,试验名称在y轴上,年份(yyyy)在x轴上。我遇到了麻烦,因为那里的大多数甘特图代码都适用于日期,并且也无法处理图表上我需要的三个元素-

最早参考

最新参考

出版日期

poorly drawn postit of what I'm trying to achieve

更新:这接近我想要的,并且此代码非常有效,谢谢。我很高兴您也在ggplot中做到了,我已经习惯了该软件包。

我还需要在图表上添加第三类(发布日期),所以df是

df <- structure(list(task = structure(1:3, .Label = c("Trial1", "Trial2", "Trial3"), 
                                  class = "factor"), start_year = c(1980, 2003, 2000),
                 end_year = c(2006, 2013, 2010), pub_date = c(2011, 2015, 2013)), 
            class = "data.frame",
            row.names = c(NA, 3L))

我希望pub_date与图表的start_year end_year行分开。

r ggplot2 timeline gantt-chart
1个回答
1
投票

这是您想要的示例的可复制示例。首先,您应该在议程中指定每个任务的开始和结束日期,然后将不同的任务作为因素存储在数据框中,如下所示。

  df <- structure(list(task = structure(1:3, .Label = c("Trial1", "Trial2", 
    "Trial3"), class = "factor"), start_year = c(1980, 2003, 2000
    ), end_year = c(2006, 2013, 2010), pub_date = c(2011, 2015, 2013
    )), class = "data.frame", row.names = c(NA, 3L))

例如,重要的是要整理您的日期,例如使用tidyr包中的collect函数。这样,我将开始和结束年份放在同一列中,这样可以更轻松地按任务进行绘制。

   library(tidyverse)
   df %>% 
      gather(key = "start_end_date)", value = "year", -task, -pub_date) %>%
      ggplot(aes(x = year, y = task, color = task)) +
      geom_line(size = 2) + 
      geom_point(size = 3) + 
      geom_point(aes( x = pub_date), shape = 3, size = 3) +
      scale_x_continuous(breaks = seq(1980, 2016, 6))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.