扩展ggplot2中日期的轴范围

时间:2015-04-03 02:46:39

标签: r ggplot2

我正在绘制一些时间序列图,需要有一致的x值范围(日期)来比较图表。我尝试使用expand_limits,但它没有用。解决它的最佳方法是什么?我应该使用continuous_scale吗?

这会产生不同的范围:

library(ggplot2)

#Example Data
ID <- c(rep(1, 3), rep(2, 3))
date1 <- as.Date(c("2015-02-01", "2015-03-01", "2015-04-01", 
    "2015-03-01", "2015-03-15", "2015-03-31"), "%Y-%m-%d")
v1 <- rep(1:3, 2)
df <- data.frame(ID, date1, v1)
df

p1 <- ggplot(df[df$ID == 1,], aes(x = date1, y = v1)) +
    geom_point(size = 3, colour = "#0000FF")

p2 <- ggplot(df[df$ID == 2,], aes(x = date1, y = v1)) +
    geom_point(size = 3, colour = "#0000FF") 

plot(p1)
plot(p2)

这就是我试图解决的问题:

p2 <- ggplot(df[df$ID == 2,], aes(x = date1, y = v1)) +
        geom_point(size = 3, colour = "#0000FF") +
        expand_limits(x = c("2015-02-01", "2015-04-01"))

plot(p2)

这是错误:Error: Invalid input: date_trans works with objects of class Date only

谢谢!

2 个答案:

答案 0 :(得分:4)

尝试在as.Date中添加expand_limits

p2 <- ggplot(df[df$ID == 2,], aes(x = date1, y = v1)) +
      geom_point(size = 3, colour = "#0000FF") +
      expand_limits(x = as.Date(c("2015-02-01", "2015-04-01")))
print(p2)

enter image description here

答案 1 :(得分:0)

只是为解决该问题的目的的其他答案提供替代方案,我宁愿使用dmy("01-02-2015")包中的dplyr,我强烈建议简化打包日期对象的工作。