r - 如何使scale_x_date周从星期日开始

标签 r ggplot2

我正在创建每周时间序列图表,每周应从星期日开始。当我指定scale_x_date(breaks = date_breaks('1 week'))网格线和标签从星期一开始时,所以结果看起来略有偏差。如何强制 ggplot scale_x_date 周从周日开始

这是我的代码示例

library(ggplot2)
library(scales)

data.set <- structure(list(week.start = structure(c(15732, 15739,
                           15746, 15753, 15760, 15767, 15774, 15781,
                           15788, 15795, 15802, 15809 ), class =
                           "Date"), overtime.avg = c(2.8,
                           2.85666666666667, 2.18333333333333,
                           2.44666666666667, 2.04833333333333,
                           2.45833333333333, 2.12833333333333,
                           1.81666666666667, 1.82166666666667,
                           1.54333333333333, 2.09166666666667,
                           0.970833333333333)), .Names =
                           c("week.start", "overtime.avg"), row.names
                           = 29733:29744, class = "data.frame")

ggplot(data = data.set,
       aes(x = week.start,
           y = overtime.avg)) +
    geom_line() +
    geom_point() +
    scale_x_date(breaks = date_breaks("1 week"),
                 labels = date_format(format = "%Y-%m-%d"))

最佳答案

一种方法是使用函数 seq() 并从第一个星期日开始提供您自己的断点(使用 week.start 的最小值)并设置 by="week"

ggplot(data = data.set,aes(x = week.start,y = overtime.avg)) +
  geom_line() +
  geom_point() +
  scale_x_date(breaks = seq(min(data.set$week.start),max(data.set$week.start),by="week"),
               labels = date_format(format = "%Y-%m-%d"))

关于r - 如何使scale_x_date周从星期日开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217876/

相关文章:

python - Python 程序员在 R 中的陷阱

r - 如何使用 mouse 或 R 中的另一个包从多个变量中提取多个估算值到单个数据集中?

r - 如何在 r markdown 中将 kable 和 ggplot 对齐在一行(并排)?

r - 使用 fct_infreq() 更改图上因子的顺序

r - 跨类别和列自动化卡方

r - 如何在 Shiny 的仪表板中制作信息按钮

r - 遍历列表 R

r - 如何在插值数据图的边缘绘制原始数据的直方图

r - 当填充也用于美学时,ggplot2 更改颜色图例的填充

删除空的分面类别