ggplot2和x轴上的日期

时间:2014-11-07 20:04:15

标签: r ggplot2 time-series

所有。我在使用ggplot2绘制时间序列时遇到问题。我对R比较陌生,不能为我的生活弄清楚为什么R不能执行我的代码。我收到以下错误:"输入无效:date_trans只使用类Date的对象"。这个错误试图告诉我究竟是什么?我之前用Google搜索过这个错误,似乎并没有解释这个错误的含义 - 只是消除错误的代码。

我在文本文件中有两列数据,我读入R.一列包含日期(例如,这种格式:8/1/10)。另一个包含我想要根据日期绘制的数值。日期是按月比例(例如,8/1 / 10,9 / 10 / 10,10 / 10/10)。

以下是我用来尝试绘制此数据的时间序列的代码(我的数据框已分配给df26):

ggplot(df26, aes(df26$Mo_Yr, df26$Vol_Tot)) + 
  geom_line() + 
  scale_x_date(labels=date_format("%b-%y")) + 
  xlab("Date") + 
  ylab("Total Volume")

任何帮助将不胜感激!

以下是我的数据框(df26)中的一些示例数据:

Mo_Yr   Vol_Tot
8/1/10  691254
9/1/10  610358
10/1/10 629178
11/1/10 569872
12/1/10 531769
1/1/11  459966
2/1/11  428976
3/1/11  555656
4/1/11  570110
5/1/11  614337
6/1/11  661598
7/1/11  717756
8/1/11  693103
9/1/11  610873
10/1/11 613217
11/1/11 564546

谢谢!

1 个答案:

答案 0 :(得分:1)

您的Mo_Yr列不属于Date类。但是,更重要的是,它的格式不是R需要格式化日期的方式。 (我从上下文猜测它是M / D / Y,但R不知道那个。)

lubridate包(您必须安装)是从格式解析日期的好方法。在你的情况下:

library(lubridate)
library(scales)
library(ggplot2)

# the important line:
df26$date <- as.Date(parse_date_time(df26$Mo_Yr, "%m/%d/%y"))

print(ggplot(df26, aes(date, Vol_Tot)) + 
    geom_line() + 
    scale_x_date(labels=date_format("%b-%y")) + 
    xlab("Date") + 
    ylab("Total Volume"))