具有日期x比例的多个geom_vline导致不正确的绘图

时间:2015-02-27 21:11:05

标签: r date ggplot2

我有一系列数据,我想在日期x轴上绘图

ed <- data.frame(election.date = as.Date(mdy(c("November 6, 2012",
                                               "November 4, 2008",
                                               "November 2, 2004",
                                               "November 7, 2000",
                                               "November 5, 1996",
                                               "November 3, 1992",
                                               "November 8, 1988",
                                               "November 6, 1984"))),
                  num = rnorm(8))

如果我只绘制了点,那么一切正常

ggplot(ed) + geom_point(aes(x = election.date, y = num))

enter image description here

但如果我为每个点添加垂直线,我会得到

ggplot(ed) + 
     geom_point(aes(x = election.date, y = num))  +
     geom_vline(aes(x = election.date))  

enter image description here

我们不是在适当的日期绘制8行,而是在Unix时间开始时得到一行。

针对类似问题的解决方案provided elsewhere on SO在此处改编为

ggplot(ed) + 
     geom_point(aes(x = election.date, y = num))  +
     geom_vline(aes(x = as.numeric(election.date)))

但这会引发错误:

  

错误:输入无效:date_trans仅适用于类Date的对象

如何绘制多条垂直线,其中日期位于数据框中?

1 个答案:

答案 0 :(得分:1)

不确定为什么你会得到你的错误,但是希望这能解决它(请注意geom_vline中的xintercept而不是x):

ggplot(ed) + 
     geom_point(aes(x = election.date, y = num))  +
     geom_vline(aes(xintercept = as.numeric(election.date)))