Средняя точка для оси дат в ggplot

#r #ggplot2

#r #ggplot2

Вопрос:

Я хочу добавить несколько меток к графику, на котором ось x является датой. Я хочу, чтобы метка была центрирована вокруг середины. Как мне найти среднюю точку на оси x?

Пример:

 example <- data.frame(time = c("02/26/11", "05/26/10", "05/27/10", "05/28/10",   
                               "05/29/10", "06/27/10", "06/30/10", "10/27/10", 
                               "10/27/10", "12/26/12"),
                      value = c(5, 1, 7, 8, 11, 20, 14, 1, 20, 12))

example$time <- as.Date(example$time, format = "%m/%d/%Y")

ggplot(example, aes(x = time, y = value))   geom_point()   
    scale_x_date(labels = date_format("%b%Y"),
                 breaks = "3 month",
                 minor_breaks = "1 month")
 

Теперь я хочу использовать geom_text для добавления текстовой метки, в которой координата x расположена в середине оси x, а y — в середине оси y.

Ответ №1:

Похоже, вы просто хотите что-то вроде

 xx<-data.frame(
    time=mean(range(example$time)),
    value=mean(range(example$value))
)

ggplot(example, aes(x = time, y = value))   geom_point()   
    geom_text(data=xx, label="midtext")  
    scale_x_date(labels = date_format("%b%Y"),
                 breaks = "3 month",
                 minor_breaks = "1 month")
 

Мы находим центр графика, находя центр диапазонов каждой из осей. Затем мы используем эти значения в вызове geom_text .

Это приведет к созданию этой картины.

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

PS. Я также изменил вашу строку форматирования даты на

 example$time <- as.Date(example$time, format = "%m/%d/%y")
 

поскольку у вас есть только двузначные годы, а не 4-значные годы.