在ggplot2中对x轴日期值进行排序

And*_*ado 3 r date ggplot2

我有以下数据集。正如你所看到的,我有两周的一些定量数据,我想对他们的日子进行比较(即:星期一 09 和星期一 10 ):

      week       date       day     n
     (chr)     (date)     (chr) (int)
1  Week 09 2016-02-29    Monday  5535
2  Week 09 2016-03-01   Tuesday  7497
3  Week 09 2016-03-02 Wednesday  8658
4  Week 09 2016-03-03  Thursday  6113
5  Week 09 2016-03-04    Friday  4553
6  Week 09 2016-03-05  Saturday     2
7  Week 10 2016-03-07    Monday  5339
8  Week 10 2016-03-08   Tuesday  6196
9  Week 10 2016-03-09 Wednesday  5395
10 Week 10 2016-03-10  Thursday  5633
Run Code Online (Sandbox Code Playgroud)

我得到了下面的代码,但是日期是无序的。无论如何我可以按时间顺序排序这些天:

ggplot(data = my_data, aes(x = as.factor(x = day), 
                           y = n, 
                           col = week, 
                           group = week)) + 
  geom_line() + 
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ali*_*ire 6

您需要重新排序 的级别day,这决定了绘图顺序。您可以输入一周中的几天,也可以使用您最喜欢的方法生成周日到周六的日期序列并对其进行调用weekdays(或formatstrftimewith )。format = %A您可以在绘制之前在 data.frame 上执行此操作(这是一个好主意,因为无论如何这是存储数据的最佳方式),也可以在aes绘制时在内部执行此操作:

ggplot(data = my_data, aes(x = factor(day, weekdays(min(my_data$date) + 0:6)), 
                           y = n, 
                           col = week, 
                           group = week)) + 
    geom_line() + geom_point() + xlab('Weekday')
Run Code Online (Sandbox Code Playgroud)

工作日秩序井然的情节