在ggplot中接受"Date"类的水平和垂直线有问题吗?

doo*_*ote 3 r ggplot2

我正在尝试根据用户Didzis Elferts提供的慷慨代码在ggplot中制作甘特图.我正在尝试添加一条显示今天日期的垂直线,但是包中的geom_vline图层ggplot2只是返回Error: Discrete value supplied to continuous scale.这是我的代码:

    today <- as.Date(Sys.Date(), "%m/%d/%Y")
    library(scales)
    ggplot(mdfr, aes(time,name, colour = is.critical)) + 
      geom_line(size = 6) +
      xlab("") + ylab("")+
      labs(title="Sample Project Progress")+
      theme_bw()+
      scale_x_datetime(breaks=date_breaks("1 year"))+
      geom_vline(aes(xintercept=today))
Run Code Online (Sandbox Code Playgroud)

没有geom_vline命令的情节看起来像这样情节:

任何理由geom_vline不适用于"日期"字符?

编辑:用于生成绘图的可重现代码:

    ### GANTT CHART 1 ###############3
    tasks <- c("Meetings", "Client Calls", "Design", "Bidding", "Construction")
    dfr <- data.frame(
      name        = factor(tasks, levels = tasks),
      start.date  = c("07/08/2013", "07/08/2013", "07/23/2013", "08/30/2013", "9/30/2013"),
      end.date    = c("07/12/2013", "07/13/2013", "08/15/2013", "09/12/2013", "12/01/2013"),
      is.critical = c(TRUE, FALSE, TRUE, TRUE, TRUE))

    mdfr <- melt(dfr, measure.vars = c("start.date", "end.date"))
    mdfr$time <- as.POSIXct(strptime(mdfr$value,"%m/%d/%Y"))
Run Code Online (Sandbox Code Playgroud)

Did*_*rts 9

有两个人认为您需要更改代码.

首先,至于使用相同的time列应该使用- 两个变量应该具有相同的格式.mdfras.POSIXct()today

today <- as.POSIXct(Sys.Date(), "%m/%d/%Y")
Run Code Online (Sandbox Code Playgroud)

第二,as.numeric()geom_vline()周围使用today.

  + geom_vline(aes(xintercept=as.numeric(today)))
Run Code Online (Sandbox Code Playgroud)