【问题标题】:Order x axis day values in ggplot2在ggplot2中订购x轴日值
【发布时间】:2016-03-13 21:44:43
【问题描述】:

我有以下数据集。如您所见,我有两周的定量数据,我想对他们的日子进行比较(即:星期一 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

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

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

【问题讨论】:

  • 这已经在 SO 上回答了好几次。试试 my_data$day
  • 或者,如果你真的讨厌打字,factor(my_data$day, weekdays(as.Date('1970-01-03') + 1:7))

标签: r date ggplot2


【解决方案1】:

您需要重新排序day 的级别,这决定了绘图顺序。您可以输入一周中的日期,或者使用您最喜欢的方法生成一系列周日到周六的日期,然后调用weekdays(或formatstrftimeformat = %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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-12-21
    • 2012-09-28
    • 2012-07-29
    相关资源
    最近更新 更多