Как мне указать координату даты x в текстовой функции geom_ на R

#r #ggplot2

#r #ggplot2

Вопрос:

Я хочу поместить текст в определенную точку на графике гистограммы

 ggplot(ECOBICI2)   
aes(x = Fecha_Arribo)   
geom_histogram(binwidth = 1)  
geom_text(aes(x = 2020-03-24), y = 12000, label = "Inicio de cierre de actividades")    
labs(x = "Dia", y = "Viajes Por Día")  
theme_classic()
  

Это выдает мне эту ошибку
Ошибка: неверный ввод: date_trans работает только с объектами класса Date

Fecha_Arribo — это даты

Я попытался указать as.Date()

 ggplot(ECOBICI2)   
aes(x = Fecha_Arribo)   
geom_histogram(binwidth = 1)  
geom_text(aes(x = as.Date(2020-03-24, "%Y/%m/%d"), y = 12000, label = "Inicio de cierre de actividades")    
labs(x = "Dia", y = "Viajes Por Día")  
theme_classic()
  

Затем это выдает мне эту ошибку
Ошибка в charToDate(x):
символьная строка не имеет стандартного однозначного формата

Ответ №1:

Как упоминалось @heds1, вы должны указать правильный формат для данных, используя кавычки и структуру года, месяца и дня, чтобы as.Date() функция могла распознать его как дату. Другой момент заключается в том, что вы должны указать x , y и label значения внутри aes() опции для geom_text() . Я воспроизвел пример для вас, используя некоторые фиктивные данные. Наверняка в ваших реальных данных вы можете изменить значения в geom_text() , чтобы получить желаемый график. Вот код:

 library(ggplot2)
#Data
df <- data.frame(Fecha_Arribo=sample(seq(as.Date('2020-01-01'),
                                         as.Date('2020-10-01'),
                                         by='1 day'),500,replace = T))
  

Далее в коде для plot я также добавил вертикальную линию, если вы хотите рассмотреть этот вариант на своем графике:

 #Plot
ggplot(df,aes(x=Fecha_Arribo)) 
  geom_histogram(binwidth = 1)  
  geom_text(aes(x = as.Date('2020-03-24'),y=8,label = "Inicio de cierre de actividades")) 
  geom_vline(xintercept = as.Date('2020-03-24'),lty='dashed') 
  labs(x = "Dia", y = "Viajes Por Día")  
  theme_classic()
  

Вывод:

введите описание изображения здесь

Ответ №2:

Здесь есть две ошибки. Во-первых, ваш format аргумент для as.Date не соответствует указанному вами формату; вы указываете ему проанализировать дату, разделенную косой чертой «/», но объект даты, который вы предоставляете, разделен дефисами «-«. Во-вторых, вы передаете дату как переменную (с невозможным именем, т. Е. 2020-03-24), а не как строку.

Итак, передайте дату в виде строки и укажите правильный format аргумент as.Date , например:

 as.Date('2020-03-24', '%Y-%m-%d')