【发布时间】:2017-06-23 13:52:16
【问题描述】:
我有一个随时间变化的网络访问量图表,它绘制了从 2014 年到现在的每日流量,看起来像这样:
ggplot(subset(APRA, Post_Day > "2013-12-31"), aes(x = Post_Day, y = Page_Views))+
geom_line()+
scale_y_continuous(labels = comma)+
ylim(0,50000)
正如您所见,这不是一个很好的图表,更有意义的是按月而不是按天细分它。但是,当我尝试此代码时:
ggplot(subset(APRA, Post_Day > "2013-12-31"), aes(x = Post_Day, y = Page_Views))+
geom_line()+
scale_y_continuous(labels = comma)+
ylim(0,50000)+
scale_x_date(date_breaks = "1 month", minor_breaks = "1 week", labels = date_format("%B"))
我收到此错误:
错误:输入无效:date_trans 仅适用于 Date 类的对象
日期字段Post_Day 是POSIXct。 Page_Views 是数字。数据如下:
Post_Title Post_Day Page_Views
Title 1 2016-05-15 139
Title 2 2016-05-15 61
Title 3 2016-05-15 79
Title 4 2016-05-16 125
Title 5 2016-05-17 374
Title 6 2016-05-17 39
Title 7 2016-05-17 464
Title 8 2016-05-17 319
Title 9 2016-05-18 84
Title 10 2016-05-18 64
Title 11 2016-05-19 433
Title 12 2016-05-19 418
Title 13 2016-05-19 124
Title 14 2016-05-19 422
我希望将 X 轴从每日粒度更改为每月。
【问题讨论】:
-
这真的不是一个关于如何将日期聚合为月份的问题,而不是如何更改 x 轴吗?
-
@C8H10N4O2 是的,我想是的。我以为这就是我对
scale_x_date()所做的事情,但它似乎不起作用。 -
使用
Post_Day > "2013-12-31"表示Post_Day是一个字符变量。您应该使用as.Date将此变量转换为日期类,然后使用Post_Day > as.Date("2013-12-31")。 -
您可以为
year(post_day)和month(post_day)创建列,或者您可以使用these approaches 之一来获取日期的“月底” -
@lmo R 足够聪明,可以在
Post_Day是Date时处理Post_Day > "2013-12-31"的比较