Как найти и пометить пики в 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".