【问题标题】:How to set x-axis ticks to month ends?如何将 x 轴刻度设置为月末?
【发布时间】:2016-11-18 19:14:29
【问题描述】:

我正在尝试将 x 轴刻度设置为 ggplot2 中的月末。目前,生成的绘图具有对应于本月第一天的刻度。我用来生成比例的代码是

p + scale_x_date(limits = c(as.Date("2006-12-31"), as.Date("2014-09-30")), date_breaks = "6 months", date_labels = "%Y-%m-%d")

我会认为,由于我的限制是月末,所以滴答声也将是月末。此外,我的数据从 2007-01-02 开始,所以第一个刻度是 2007-02-01。我想将刻度设置为与季度结束一致。

【问题讨论】:

  • 请添加reproducible example,如链接所示。这将包括一个最小的数据集和显示您遇到的问题的绘图代码。

标签: r plot ggplot2 axis-labels


【解决方案1】:

获得所需的确切轴中断的一种方法是通过向scale_x_date 中的breaks 参数提供日期向量来明确指定它们。您没有提供可重现的示例,所以我绘制了一些假数据。在下面的代码中,我指定了每个季度末的休息时间。我需要从 30 天的每个月中减去一天,这样休息时间就在季度的最后一天,而不是下一季度的第一天。

# Fake data
dat = data.frame(date=seq(as.Date("2006-12-31"), as.Date("2014-09-30"), by="1 day"))
set.seed(495)
dat$value = cumsum(rnorm(nrow(dat)))

ggplot(dat, aes(date, value)) + 
  geom_line() + 
  scale_x_date(limits = c(as.Date("2006-12-31"), as.Date("2014-09-30")), 
               breaks = seq(as.Date("2006-03-31"), as.Date("2014-12-31"), "quarter") - c(0,1,1,0),
               date_labels = "%Y-%m-%d", expand=c(0,30)) +
  theme(axis.text.x=element_text(angle=-90, vjust=0.5))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2013-07-08
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多