如何将x轴刻度设置为每月的最后一天?

4

我正在尝试在ggplot2中将x轴刻度设置为月末。目前生成的图表刻度对应于每个月的第一天。我使用的代码生成比例尺如下:

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。我想将刻度设置与季度末相一致。


请按照链接中所示添加一个可重现的实例。这将包括一个最小数据集和你的绘图代码,以显示你遇到的问题。 - aosmith
1个回答

2

如果你想要得到你所需的确切坐标轴断点,一种方式是在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))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接