2016-06-29 3 views
0

Я хочу сделать так, как объяснил here, принятый ответ по какой-то причине не работает для меня.Несколько строк в графике дают ошибку, ggplot2

library("ggplot2") 

tmp <- data.frame(x=rep(seq(as.Date(0, origin="1970-01-01"), 
          length=36, by="1 month"), 2), 
        y=rnorm(72), 
        category=gl(2,36)) 

p <- ggplot(tmp, aes(x, y, colour=category)) + 
    geom_line() + 
    geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), 
       linetype=4, colour="black") 
print(p) 

Я обменялся слои (геом = "линии") с geom_line(), чтобы получить только сюжет работает. Однако, при добавлении vlines я получаю эту ошибку:

Error: Aesthetics must be either length 1 or the same as the data (72): xintercept 
10: stop("Aesthetics must be either length 1 or the same as the data (", 
    n, "): ", paste(names(!good), collapse = ", "), call. = FALSE) 
9: check_aesthetics(evaled, n) 
8: f(..., self = self) 
7: l$compute_aesthetics(d, plot) 
6: f(l = layers[[i]], d = data[[i]]) 
5: by_layer(function(l, d) l$compute_aesthetics(d, plot)) 
4: ggplot_build(x) 
3: print.ggplot(p) 
2: print(p) 
1: print(p) 

ответ

1

следующие работал для меня:

ggplot(tmp,aes(x, y, colour=category)) + 
geom_line() + 
geom_vline(data=tmp[c(13,26),],aes(xintercept=as.numeric(x))) 
+0

Perfect. Благодарю. – johnblund

Смежные вопросы