Как построить только глобальное максимальное значение, используя geom_text?

df%>%
  group_by(approved_date)%>%
  summarise(rev=sum(gmv))%>%
  ggplot(aes(x = approved_date, y = rev)) + 
    geom_line() + 
    geom_smooth(method = 'auto', se = FALSE) + 
    labs(x = 'Date', y = 'Revenue', title = 'Revenue by Date') +
    scale_y_continuous(labels = function(x) format(x, scientific = FALSE)) +
    stat_peaks(colour = "red", span = NULL) + 
    stat_valleys(colour = "blue", span = NULL) + 
    geom_text(aes(label = round(rev, 0)),
              vjust = "inward", 
              hjust = "inward",
              show.legend = FALSE,
              check_overlap = TRUE)

У меня есть этот код, который при запуске помечает все значения локальных максимумов и минимумов. Мне нужно только значение глобального максимума и глобального минимума. Как это сделать?


person Harsh Mehta    schedule 03.12.2019    source источник
comment
Пожалуйста, покажите небольшой воспроизводимый пример   -  person akrun    schedule 03.12.2019


Ответы (1)


Поскольку код в вопросе не может быть запущен из-за отсутствия данных, я показываю пример, слегка измененный из руководства пользователя пакета. В этом случае этого другого примера должно быть достаточно, чтобы выработать решение.

library(ggpmisc)
ggplot(lynx, as.numeric = FALSE) + geom_line() + 
  stat_peaks(colour = "red") +
  stat_peaks(geom = "text", colour = "red", vjust = -0.5, 
             check_overlap = TRUE, span = NULL) +
  ylim(-100, 7300)

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

Другими словами, geom "text" следует передавать в качестве аргумента stat_peaks(), а также span = NULL, чтобы получить одну метку. Если вы добавляете geom_text() напрямую, пики не выбираются, а вместо этого на график добавляются все значения, хранящиеся в переменной, сопоставленной с эстетикой label.

person Pedro Aphalo    schedule 03.12.2019
comment
Я использовал выше другой пример, чтобы убедиться, что код в моем ответе действительно работает. Как правило, лучше всего включать в вопросы самый простой пример, который демонстрирует проблему, но который можно запустить, что обычно означает создание собственного небольшого набора данных или использование данных, включенных в R или пакет в вашем коде. - person Pedro Aphalo; 03.12.2019