2015-02-20 2 views
2

Я пытаюсь рисовать участок с серией значений%, по одному на каждый день в течение заданного периода. Я хотел бы добавить сегмент в начало графика, чтобы более четко показать области, где% уменьшается.аннотация ggplot2 с датами по оси x

Я пытался использовать этот код (пример имеет только несколько точек данных для простоты):

library(ggplot2) 
library(scales) 
limit = c(0.85,0.87,0.88,0.90,0.72,0.74) 
day <- as.Date(strptime((seq(20150201,20150206,1)),format = "%Y%m%d")) 
dati = data.frame("Day" = day, "Limit" = limit) 
g <- ggplot(data = dati, aes(Day, Limit)) 
g <- g + geom_area(fill = "dark red") 
g <- g + coord_cartesian(ylim = c(0,1)) 
g <- g + scale_y_continuous(labels=percent) 
g <- g + annotate("segment", y= 1, yend = 1, x = dati[3, "Day"], xend = dati[4, "Day"]) 
print(g) 

Но я получаю эту ошибку: Ошибки:/не определена для «Даты» объекты

Любые идеи о том, как это решить?

Я уже проверил How to use ggplot2's annotate with dates in x-axis?, но кажется, что ошибка вернулась. Плюс я бы хотел сделать это, не используя пакет lubridate.

+1

Не могу прокомментировать, является ли это ошибка перевоплощение, но следующие работы: '+ geom_segment (у = 1, yend = 1, х = as.numeric (дати [3, «День»]), xend = as.numeric (dati [4, «День»])) ' – tonytonov

+0

Спасибо, все отлично. – roccobarbi

+0

Добро пожаловать. В github есть проблема, поместите туда записку, если хотите. Ссылка на него находится в q & a, которую вы связали выше. – tonytonov

ответ

3

Оберните мой более ранний комментарий в ответ: вместо этого используйте geom_segment.

+ geom_segment(y = 1, yend = 1, 
       x = as.numeric(dati[3, "Day"]), xend = as.numeric(dati[4, "Day"])) 

enter image description here

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