2015-04-03 6 views
2

Я рисую ряд графиков временных рядов и для сравнения графиков должен иметь согласованный диапазон значений x (дата). Я пытался использовать expand_limits, но это не сработало. Каков наилучший способ исправить это? Должен ли я использовать continuous_scale?Расширение диапазона осей для дат в ggplot2

Это производит различные диапазоны:

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

Попробуйте с добавлением 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