R中的ggplot2:如何更改日期轴的起点/终点?

问题描述

我正在尝试重新创建以下情节。

enter image description here

但无论我做什么,我的 X 轴标记都是从 1965 年而不是 1963 年开始的。这是我获得的图表。

enter image description here

这是我的代码

ggplot(dulles,aes(Index,Passengers)) + 
  geom_line() + 
  geom_point(color = "red") + 
  ylim(0,25000) + 
  scale_x_date(limits = as.Date(c("1963","2015"),format = "%Y"),date_breaks = "5 years",date_labels = "%Y")

如您所见,我已设置了限制参数,但它们并未显示

我还尝试将 date_breaks = "5 years",date_labels = "%Y") 替换为 breaks = as.Date(as.character(seq(1963,2015,5)),format = "%Y"),这无论如何都可能很愚蠢。

我希望 X 轴标签从 1963 年开始到 2013 年结束,但不删除 2014 年和 2015 年的数据点,就像在原始图中一样。

我该怎么做?

解决方法

定义中断向量是一种强制轴刻度线的简单方法。

library(ggplot2)

breaks.vec <- seq(min(df1$Index),max(df1$Index),by = "5 years")

ggplot(df1,aes(Index,Y)) + 
  geom_line() + 
  geom_point(color = "red") + 
  scale_x_date(breaks = breaks.vec,date_labels = "%Y")

enter image description here

测试数据创建代码

set.seed(2021)
Index <- seq(as.Date("1963-01-01"),as.Date("2015-12-31"),by = "1 years")
Y <- cumsum(rnorm(length(Index)))
df1 <- data.frame(Index,Y)