Как найти и пометить пики в ggplot, когда x отображается на переменную даты или времени?

Можно ли добавить текстовую метку с часом, когда каждый пик произошел в

ggplot(lynx.df, aes(time, V.lynx)) + 
  geom_line() + 
  stat_peaks(colour = "red") + 
  stat_peaks(geom = "text", colour = "red", vjust = -0.5) + 
  ylim(-100, 7300)

Я копирую здесь заголовок файла данных:

date,o3
1/8/2015 0:00,27.4
1/8/2015 1:00,31.6
1/8/2015 2:00,36
1/8/2015 3:00,25.2
1/8/2015 4:00,22.6
1/8/2015 5:00,28.9
1/8/2015 6:00,30.6
1/8/2015 7:00,39.5
1/8/2015 8:00,40.9
1/8/2015 9:00,40.6
1/8/2015 10:00,39.1
...

Спасибо за вашу помощь

1 ответ

Да, добавление часа возможно, если оно есть в данных. Вам необходимо указать подходящий формат строки. Используя данные примера, которые вы отправили мне лично, можно использовать следующий код.

library(readr)
library(dplyr)
library(lubridate)
library(ggplot2)
library(ggpmisc)

ozone.df <- read_csv("ggpmisc.csv", col_types = "cd")
ozone.df <- mutate(ozone.df, datetime = dmy_hm(date))
ggplot(ozone.df, aes(datetime, o3)) + geom_line() +
  stat_peaks(colour = "red", span = 21, ignore_threshold = 0.5) +
  stat_peaks(geom = "text", colour = "red", span = 21, ignore_threshold = 0.5,
             hjust = -0.1, x.label.fmt = "%H:%M", angle = 90) +
  ylim(0, 85)

Я добавил некоторые другие приемы, предполагая, что вы заинтересованы в ежедневных пиках (span=21 использует скользящее окно из 21 наблюдения, чтобы найти пики). Я также предположил, что вас интересуют локальные пики, только если они находятся в верхней половине диапазона y наблюдений. Вы просили часами, я добавил также минут, чтобы сделать его более читабельным. Если вы предпочитаете иметь только часы, измените "%H:%M" на "% H".

Вот результирующий сюжет:

Другие вопросы по тегам