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

时间:2018-01-10 10:42:05

标签: r ggplot2 graph line limits

我的data.frame看起来像:

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

用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))

给出:

enter image description here

我希望通过在ggplot命令中设置限制(limits = c(min(df$date), max(df$date))),2017年11月和2018年的额外日期将会消失,但它们不会消失。

我是否可以将剧情限制为&#34; 2017-12-01&#34; &#34; 2018-02-01&#34;使用scale_x_date?或者我是否必须松开日期功能以限制我的data.frame中日期的两端的情节?

1 个答案:

答案 0 :(得分:2)

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

因此,此代码为您提供了您所追求的情节:

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))

从帮助页面:

  

expand:长度为2的数字向量,给出乘法和   加性膨胀常数。这些常量确保数据   离轴有一段距离。默认值为c(0.05,0)   对于连续变量,对于离散变量,c(0,0.6)。

这给出了

enter image description here