scale_x_date (ggplot) 中的限制参数仍然产生 data.frame 范围之外的日期

Nil*_*ils 4 limits r graph line ggplot2

我的 data.frame 看起来像:

df <- data.frame(date=as.Date(c("2017-12-01", "2018-01-01", "2018-02-01")), value=c(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

当用 ggplot 绘制一条线时

library(ggplot2)
ggplot(data=df, aes(x=date, y=value)) +
geom_line() + 
scale_x_date(date_breaks = "day", limits = c(min(df$date), max(df$date))) +
theme(axis.text.x=element_text(angle=90, vjust = 0.5))
Run Code Online (Sandbox Code Playgroud)

给出:

在此处输入图片说明

我希望通过设置限制(limits = c(min(df$date), max(df$date))在 ggplot 命令中 ),2017 年 11 月和 2018 年 2 月的额外日期会消失,但事实并非如此。

我实际上可以使用 将情节限制为“2017-12-01”和“2018-02-01”scale_x_date吗?或者我是否必须取消日期功能以将两端的绘图限制为我的 data.frame 中的日期?

Jor*_*eys 6

这是正常的,因为你要找的论点不是limitsexpand,因为这是在限制的左侧和右侧添加一点额外空间的参数。您根本不必指定限制,因为默认情况下使用最小值和最大值。

所以这段代码为您提供了您所追求的情节:

ggplot(data=df, aes(x=date, y=value)) +
  geom_line() + 
  scale_x_date(date_breaks = "day", expand = c(0,0)) +
  theme(axis.text.x=element_text(angle=90, vjust = 0.5))
Run Code Online (Sandbox Code Playgroud)

从帮助页面:

expand :长度为 2 的数字向量,给出乘法和加法扩展常数。这些常量确保数据放置在距轴一定距离的位置。连续变量的默认值为 c(0.05, 0),离散变量的默认值为 c(0, 0.6)。

这给

在此处输入图片说明